diff --git a/src/services/services.ts b/src/services/services.ts index 29b3a4988bde8..f304dbb100eaa 100644 --- a/src/services/services.ts +++ b/src/services/services.ts @@ -1510,7 +1510,8 @@ namespace ts { } // Sometimes tools can sometimes see the following line as a source mapping url comment, so we mangle it a bit (the [M]) - const sourceMapCommentRegExp = /^\/\/[@#] source[M]appingURL=(.+)$/gm; + const sourceMapCommentRegExp = /^\/\/[@#] source[M]appingURL=(.+)$/; + const whitespaceOrMapCommentRegExp = /^\s*(\/\/[@#] .*)?$/; const base64UrlRegExp = /^data:(?:application\/json(?:;charset=[uU][tT][fF]-8);base64,([A-Za-z0-9+\/=]+)$)?/; function scanForSourcemapURL(fileName: string) { const mappedFile = sourcemappedFileCache.get(toPath(fileName, currentDirectory, getCanonicalFileName)); @@ -1519,11 +1520,15 @@ namespace ts { } const starts = getLineStarts(mappedFile); for (let index = starts.length - 1; index >= 0; index--) { - sourceMapCommentRegExp.lastIndex = starts[index]; - const comment = sourceMapCommentRegExp.exec(mappedFile.text); + const lineText = mappedFile.text.substring(starts[index], starts[index + 1]); + const comment = sourceMapCommentRegExp.exec(lineText); if (comment) { return comment[1]; } + // If we see a nonwhitespace/map comment-like line, break, to avoid scanning up the entire file + else if (!lineText.match(whitespaceOrMapCommentRegExp)) { + break; + } } } diff --git a/tests/cases/fourslash/reallyLargeFile.ts b/tests/cases/fourslash/reallyLargeFile.ts new file mode 100644 index 0000000000000..6070c1406f629 --- /dev/null +++ b/tests/cases/fourslash/reallyLargeFile.ts @@ -0,0 +1,583712 @@ +/// + +// @Filename: file.d.ts +////namespace /*1*/Foo { +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//////// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//////// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//////// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//////// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//////// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +//// +////} + +goTo.marker("1"); +verify.goToDefinitionIs("1"); diff --git a/tests/cases/user/TypeScript-Node-Starter/TypeScript-Node-Starter b/tests/cases/user/TypeScript-Node-Starter/TypeScript-Node-Starter index 6b9706810b55a..40bdb4eadabc9 160000 --- a/tests/cases/user/TypeScript-Node-Starter/TypeScript-Node-Starter +++ b/tests/cases/user/TypeScript-Node-Starter/TypeScript-Node-Starter @@ -1 +1 @@ -Subproject commit 6b9706810b55af326a93b9aa59cb17815a30bb32 +Subproject commit 40bdb4eadabc9fbed7d83e3f26817a931c0763b6