From 94ff9c7d977b19c0be718a482f549d8be4be7a45 Mon Sep 17 00:00:00 2001 From: Geoff Brown Date: Wed, 26 Oct 2016 16:33:10 -0600 Subject: [PATCH 01/24] Bug 1313187 - Increase default timeout on ASAN browser mochitests to 90 seconds; r=jmaher --- testing/mochitest/runtests.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/testing/mochitest/runtests.py b/testing/mochitest/runtests.py index 51c931b1391e..16904a21d1ff 100644 --- a/testing/mochitest/runtests.py +++ b/testing/mochitest/runtests.py @@ -1621,6 +1621,12 @@ toolbar#nav-bar { options.extraPrefs.append( "testing.browserTestHarness.timeout=%d" % options.timeout) + # browser-chrome tests use a fairly short default timeout of 45 seconds; + # this is sometimes too short on asan, where we expect reduced performance. + if mozinfo.info["asan"] and options.flavor == 'browser' and options.timeout is None: + self.log.info("Increasing default timeout to 90 seconds on ASAN") + options.extraPrefs.append("testing.browserTestHarness.timeout=90") + options.extraPrefs.append( "browser.tabs.remote.autostart=%s" % ('true' if options.e10s else 'false')) From 13fea0b617e67d502398380e1a30dd4487212fc5 Mon Sep 17 00:00:00 2001 From: Jed Davis Date: Wed, 26 Oct 2016 16:57:10 -0600 Subject: [PATCH 02/24] Bug 1268733 - Move sandbox telemetry / crash annotation code from mozsandbox to libxul. r=haik --- dom/ipc/ContentChild.cpp | 6 ++- security/sandbox/linux/common/SandboxInfo.cpp | 39 ------------------- security/sandbox/linux/common/SandboxInfo.h | 9 ++--- toolkit/xre/nsAppRunner.cpp | 20 +++++++++- 4 files changed, 27 insertions(+), 47 deletions(-) diff --git a/dom/ipc/ContentChild.cpp b/dom/ipc/ContentChild.cpp index 806efa234c27..767667d08a3a 100644 --- a/dom/ipc/ContentChild.cpp +++ b/dom/ipc/ContentChild.cpp @@ -1423,7 +1423,11 @@ ContentChild::RecvSetProcessSandbox(const MaybeFileDesc& aBroker) NS_LITERAL_CSTRING("ContentSandboxEnabled"), sandboxEnabled? NS_LITERAL_CSTRING("1") : NS_LITERAL_CSTRING("0")); #if defined(XP_LINUX) && !defined(OS_ANDROID) - SandboxInfo::Get().AnnotateCrashReport(); + nsAutoCString flagsString; + flagsString.AppendInt(SandboxInfo::Get().AsInteger()); + + CrashReporter::AnnotateCrashReport( + NS_LITERAL_CSTRING("ContentSandboxCapabilities"), flagsString); #endif /* XP_LINUX && !OS_ANDROID */ #endif /* MOZ_CRASHREPORTER */ #endif /* MOZ_CONTENT_SANDBOX */ diff --git a/security/sandbox/linux/common/SandboxInfo.cpp b/security/sandbox/linux/common/SandboxInfo.cpp index 6f645c2b17bd..f813fb02675c 100644 --- a/security/sandbox/linux/common/SandboxInfo.cpp +++ b/security/sandbox/linux/common/SandboxInfo.cpp @@ -19,18 +19,9 @@ #include "base/posix/eintr_wrapper.h" #include "mozilla/Assertions.h" #include "mozilla/ArrayUtils.h" -#include "mozilla/Telemetry.h" #include "sandbox/linux/system_headers/linux_seccomp.h" #include "sandbox/linux/system_headers/linux_syscalls.h" -#ifdef MOZ_CRASHREPORTER -#include "nsExceptionHandler.h" -#include "nsICrashReporter.h" -#define NS_CRASHREPORTER_CONTRACTID "@mozilla.org/toolkit/crash-reporter;1" -#include "nsIPrefService.h" -#include "nsIMemoryInfoDumper.h" -#endif - #ifdef MOZ_VALGRIND #include #endif @@ -278,34 +269,4 @@ SandboxInfo::ThreadingCheck() sSingleton.mFlags = static_cast(flags); } -/* static */ void -SandboxInfo::SubmitTelemetry() -{ - SandboxInfo sandboxInfo = Get(); - Telemetry::Accumulate(Telemetry::SANDBOX_HAS_SECCOMP_BPF, - sandboxInfo.Test(SandboxInfo::kHasSeccompBPF)); - Telemetry::Accumulate(Telemetry::SANDBOX_HAS_SECCOMP_TSYNC, - sandboxInfo.Test(SandboxInfo::kHasSeccompTSync)); - Telemetry::Accumulate(Telemetry::SANDBOX_HAS_USER_NAMESPACES_PRIVILEGED, - sandboxInfo.Test(SandboxInfo::kHasPrivilegedUserNamespaces)); - Telemetry::Accumulate(Telemetry::SANDBOX_HAS_USER_NAMESPACES, - sandboxInfo.Test(SandboxInfo::kHasUserNamespaces)); - Telemetry::Accumulate(Telemetry::SANDBOX_CONTENT_ENABLED, - sandboxInfo.Test(SandboxInfo::kEnabledForContent)); - Telemetry::Accumulate(Telemetry::SANDBOX_MEDIA_ENABLED, - sandboxInfo.Test(SandboxInfo::kEnabledForMedia)); -} - -#ifdef MOZ_CRASHREPORTER -void -SandboxInfo::AnnotateCrashReport() const -{ - nsAutoCString flagsString; - flagsString.AppendInt(mFlags); - - CrashReporter::AnnotateCrashReport( - NS_LITERAL_CSTRING("ContentSandboxCapabilities"), flagsString); -} -#endif - } // namespace mozilla diff --git a/security/sandbox/linux/common/SandboxInfo.h b/security/sandbox/linux/common/SandboxInfo.h index 46319e8193ff..6bcdf3d784c0 100644 --- a/security/sandbox/linux/common/SandboxInfo.h +++ b/security/sandbox/linux/common/SandboxInfo.h @@ -57,11 +57,10 @@ public: return !Test(kEnabledForMedia) || Test(kHasSeccompBPF); } -#ifdef MOZ_CRASHREPORTER - MOZ_EXPORT void AnnotateCrashReport() const; -#endif - - static void SubmitTelemetry(); + // For telemetry / crash annotation uses. + uint32_t AsInteger() const { + return mFlags; + } // For bug 1222500 or anything else like it: On desktop, this is // called in the parent process at a point when it should still be diff --git a/toolkit/xre/nsAppRunner.cpp b/toolkit/xre/nsAppRunner.cpp index 777fe0f311b2..8f808b040c12 100644 --- a/toolkit/xre/nsAppRunner.cpp +++ b/toolkit/xre/nsAppRunner.cpp @@ -4434,9 +4434,25 @@ XREMain::XRE_mainRun() #if defined(MOZ_SANDBOX) && defined(XP_LINUX) && !defined(MOZ_WIDGET_GONK) // If we're on Linux, we now have information about the OS capabilities // available to us. - SandboxInfo::SubmitTelemetry(); + SandboxInfo sandboxInfo = SandboxInfo::Get(); + Telemetry::Accumulate(Telemetry::SANDBOX_HAS_SECCOMP_BPF, + sandboxInfo.Test(SandboxInfo::kHasSeccompBPF)); + Telemetry::Accumulate(Telemetry::SANDBOX_HAS_SECCOMP_TSYNC, + sandboxInfo.Test(SandboxInfo::kHasSeccompTSync)); + Telemetry::Accumulate(Telemetry::SANDBOX_HAS_USER_NAMESPACES_PRIVILEGED, + sandboxInfo.Test(SandboxInfo::kHasPrivilegedUserNamespaces)); + Telemetry::Accumulate(Telemetry::SANDBOX_HAS_USER_NAMESPACES, + sandboxInfo.Test(SandboxInfo::kHasUserNamespaces)); + Telemetry::Accumulate(Telemetry::SANDBOX_CONTENT_ENABLED, + sandboxInfo.Test(SandboxInfo::kEnabledForContent)); + Telemetry::Accumulate(Telemetry::SANDBOX_MEDIA_ENABLED, + sandboxInfo.Test(SandboxInfo::kEnabledForMedia)); #if defined(MOZ_CRASHREPORTER) - SandboxInfo::Get().AnnotateCrashReport(); + nsAutoCString flagsString; + flagsString.AppendInt(sandboxInfo.AsInteger()); + + CrashReporter::AnnotateCrashReport( + NS_LITERAL_CSTRING("ContentSandboxCapabilities"), flagsString); #endif /* MOZ_CRASHREPORTER */ #endif /* MOZ_SANDBOX && XP_LINUX && !MOZ_WIDGET_GONK */ From dce9969411b2dd5646bb9f272b179512c09d22c4 Mon Sep 17 00:00:00 2001 From: Jed Davis Date: Wed, 26 Oct 2016 16:57:18 -0600 Subject: [PATCH 03/24] Bug 1268733 - Move sandbox interposition shims to their own static library. r=gcp r=glandium This way they'll continue to be at the beginning of the symbol search path after mozsandbox returns to being a shared library instead of statically linked into plugin-container. --HG-- rename : security/sandbox/linux/SandboxHooks.cpp => security/sandbox/linux/interpose/SandboxHooks.cpp --- ipc/app/moz.build | 1 + security/sandbox/linux/Sandbox.cpp | 2 +- .../sandbox/linux/{ => interpose}/SandboxHooks.cpp | 2 +- security/sandbox/linux/interpose/moz.build | 11 +++++++++++ security/sandbox/linux/moz.build | 12 +----------- 5 files changed, 15 insertions(+), 13 deletions(-) rename security/sandbox/linux/{ => interpose}/SandboxHooks.cpp (97%) create mode 100644 security/sandbox/linux/interpose/moz.build diff --git a/ipc/app/moz.build b/ipc/app/moz.build index 55c338cb89c9..d0aec24e672f 100644 --- a/ipc/app/moz.build +++ b/ipc/app/moz.build @@ -66,6 +66,7 @@ if CONFIG['OS_ARCH'] == 'WINNT': if CONFIG['MOZ_SANDBOX'] and CONFIG['OS_TARGET'] in ('Linux', 'Android'): USE_LIBS += [ 'mozsandbox', + 'mozsandbox_interpose', ] # gcc lto likes to put the top level asm in syscall.cc in a different partition diff --git a/security/sandbox/linux/Sandbox.cpp b/security/sandbox/linux/Sandbox.cpp index fbd468a9ed90..0accb83096dd 100644 --- a/security/sandbox/linux/Sandbox.cpp +++ b/security/sandbox/linux/Sandbox.cpp @@ -69,7 +69,7 @@ __sanitizer_sandbox_on_notify(__sanitizer_sandbox_arguments *args); #endif // MOZ_ASAN // Signal number used to enable seccomp on each thread. -int gSeccompTsyncBroadcastSignum = 0; +MOZ_EXPORT int gSeccompTsyncBroadcastSignum = 0; namespace mozilla { diff --git a/security/sandbox/linux/SandboxHooks.cpp b/security/sandbox/linux/interpose/SandboxHooks.cpp similarity index 97% rename from security/sandbox/linux/SandboxHooks.cpp rename to security/sandbox/linux/interpose/SandboxHooks.cpp index eaaf56982dbc..6c3083430cd3 100644 --- a/security/sandbox/linux/SandboxHooks.cpp +++ b/security/sandbox/linux/interpose/SandboxHooks.cpp @@ -13,7 +13,7 @@ #include // Signal number used to enable seccomp on each thread. -extern int gSeccompTsyncBroadcastSignum; +extern MOZ_EXPORT int gSeccompTsyncBroadcastSignum; // This file defines a hook for sigprocmask() and pthread_sigmask(). // Bug 1176099: some threads block SIGSYS signal which breaks our seccomp-bpf diff --git a/security/sandbox/linux/interpose/moz.build b/security/sandbox/linux/interpose/moz.build new file mode 100644 index 000000000000..7fc226caa09c --- /dev/null +++ b/security/sandbox/linux/interpose/moz.build @@ -0,0 +1,11 @@ +# -*- Mode: python; indent-tabs-mode: nil; tab-width: 40 -*- +# vim: set filetype=python: +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +Library("mozsandbox_interpose") + +SOURCES += [ + 'SandboxHooks.cpp', +] diff --git a/security/sandbox/linux/moz.build b/security/sandbox/linux/moz.build index f7426da3d246..f7bee4974793 100644 --- a/security/sandbox/linux/moz.build +++ b/security/sandbox/linux/moz.build @@ -4,12 +4,6 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. -# WARNING: On desktop Linux, SandboxHooks.cpp must be statically compiled -# into the main executable in order to function properly. -# This is currently the case, but if mozsandbox is moved to its own -# shared library, something needs to change regarding SandboxHooks.cpp. -# See Bug 1176099 for further details. - if CONFIG['OS_TARGET'] == 'Android': SharedLibrary('mozsandbox') USE_LIBS += [ @@ -72,11 +66,6 @@ SOURCES += [ 'SandboxUtil.cpp', ] -if CONFIG['MOZ_WIDGET_TOOLKIT'] != 'gonk': - SOURCES += [ - 'SandboxHooks.cpp', - ] - # This copy of SafeSPrintf doesn't need to avoid the Chromium logging # dependency like the one in libxul does, but this way the behavior is # consistent. See also the comment in SandboxLogging.h. @@ -121,6 +110,7 @@ DIRS += [ 'broker', 'common', 'glue', + 'interpose', ] TEST_DIRS += [ From 67a039045c67f29f56a527911e32e6faf0a19f60 Mon Sep 17 00:00:00 2001 From: Jed Davis Date: Wed, 26 Oct 2016 16:57:24 -0600 Subject: [PATCH 04/24] Bug 1268733 - Move Linux sandboxing code back out to libmozsandbox.so. r=gcp r=glandium --- browser/installer/package-manifest.in | 6 ++++++ dom/ipc/moz.build | 5 +++++ security/sandbox/linux/Sandbox.cpp | 3 +-- security/sandbox/linux/Sandbox.h | 14 +++----------- security/sandbox/linux/SandboxInternal.h | 4 +--- security/sandbox/linux/common/SandboxInfo.h | 2 +- security/sandbox/linux/common/moz.build | 5 +---- security/sandbox/linux/glue/SandboxCrash.cpp | 4 ---- security/sandbox/linux/glue/moz.build | 7 +++---- security/sandbox/linux/moz.build | 11 ++++------- 10 files changed, 25 insertions(+), 36 deletions(-) diff --git a/browser/installer/package-manifest.in b/browser/installer/package-manifest.in index 2f2c65ad48db..68616781bf90 100644 --- a/browser/installer/package-manifest.in +++ b/browser/installer/package-manifest.in @@ -751,6 +751,12 @@ #endif #endif +#if defined(MOZ_SANDBOX) +#if defined(XP_LINUX) +@BINPATH@/@DLL_PREFIX@mozsandbox@DLL_SUFFIX@ +#endif +#endif + ; for Solaris SPARC #ifdef SOLARIS bin/libfreebl_32fpu_3.so diff --git a/dom/ipc/moz.build b/dom/ipc/moz.build index 42028b9916a6..ca24a1485f2c 100644 --- a/dom/ipc/moz.build +++ b/dom/ipc/moz.build @@ -120,6 +120,11 @@ if CONFIG['MOZ_SANDBOX'] and CONFIG['OS_TARGET'] == 'Darwin': 'mozsandbox', ] +if CONFIG['MOZ_CONTENT_SANDBOX'] and CONFIG['OS_ARCH'] == 'Linux': + USE_LIBS += [ + 'mozsandbox', + ] + LOCAL_INCLUDES += [ '/caps', '/chrome', diff --git a/security/sandbox/linux/Sandbox.cpp b/security/sandbox/linux/Sandbox.cpp index 0accb83096dd..3e7ed8420c20 100644 --- a/security/sandbox/linux/Sandbox.cpp +++ b/security/sandbox/linux/Sandbox.cpp @@ -73,9 +73,8 @@ MOZ_EXPORT int gSeccompTsyncBroadcastSignum = 0; namespace mozilla { -#ifdef ANDROID +// This is initialized by SandboxSetCrashFunc(). SandboxCrashFunc gSandboxCrashFunc; -#endif #ifdef MOZ_GMP_SANDBOX // For media plugins, we can start the sandbox before we dlopen the diff --git a/security/sandbox/linux/Sandbox.h b/security/sandbox/linux/Sandbox.h index 19defd76bf51..50e21c7aaae1 100644 --- a/security/sandbox/linux/Sandbox.h +++ b/security/sandbox/linux/Sandbox.h @@ -14,32 +14,24 @@ // sandboxing itself. See also common/SandboxInfo.h for what parts of // sandboxing are enabled/supported. -#ifdef ANDROID -// Defined in libmozsandbox and referenced by linking against it. -#define MOZ_SANDBOX_EXPORT MOZ_EXPORT -#else -// Defined in plugin-container and referenced by libraries it loads. -#define MOZ_SANDBOX_EXPORT MOZ_EXPORT __attribute__((weak)) -#endif - namespace mozilla { // This must be called early, while the process is still single-threaded. -MOZ_SANDBOX_EXPORT void SandboxEarlyInit(GeckoProcessType aType); +MOZ_EXPORT void SandboxEarlyInit(GeckoProcessType aType); #ifdef MOZ_CONTENT_SANDBOX // Call only if SandboxInfo::CanSandboxContent() returns true. // (No-op if MOZ_DISABLE_CONTENT_SANDBOX is set.) // aBrokerFd is the filesystem broker client file descriptor, // or -1 to allow direct filesystem access. -MOZ_SANDBOX_EXPORT bool SetContentProcessSandbox(int aBrokerFd); +MOZ_EXPORT bool SetContentProcessSandbox(int aBrokerFd); #endif #ifdef MOZ_GMP_SANDBOX // Call only if SandboxInfo::CanSandboxMedia() returns true. // (No-op if MOZ_DISABLE_GMP_SANDBOX is set.) // aFilePath is the path to the plugin file. -MOZ_SANDBOX_EXPORT void SetMediaPluginSandbox(const char *aFilePath); +MOZ_EXPORT void SetMediaPluginSandbox(const char *aFilePath); #endif } // namespace mozilla diff --git a/security/sandbox/linux/SandboxInternal.h b/security/sandbox/linux/SandboxInternal.h index e705bb240116..3cfc4237f8a2 100644 --- a/security/sandbox/linux/SandboxInternal.h +++ b/security/sandbox/linux/SandboxInternal.h @@ -14,9 +14,7 @@ namespace mozilla { // SandboxCrash() has to be in libxul to use internal interfaces, but -// its caller in the sandbox code is elsewhere: -// * Desktop: defined in libxul; referenced in plugin-container. -// * Mobile: defined in libmozsandbox; referenced in libxul. +// its caller in libmozsandbox. // See also bug 1101170. typedef void (*SandboxCrashFunc)(int, siginfo_t*, void*); diff --git a/security/sandbox/linux/common/SandboxInfo.h b/security/sandbox/linux/common/SandboxInfo.h index 6bcdf3d784c0..1999ac3924d4 100644 --- a/security/sandbox/linux/common/SandboxInfo.h +++ b/security/sandbox/linux/common/SandboxInfo.h @@ -68,7 +68,7 @@ public: // child process is early enough to be single-threaded. If not, // kUnexpectedThreads is set and affected flags (user namespaces; // possibly others in the future) are cleared. - static void ThreadingCheck(); + static MOZ_EXPORT void ThreadingCheck(); private: enum Flags mFlags; // This should be const, but has to allow for ThreadingCheck. diff --git a/security/sandbox/linux/common/moz.build b/security/sandbox/linux/common/moz.build index 4ec5490b87d4..bc2fad5520a6 100644 --- a/security/sandbox/linux/common/moz.build +++ b/security/sandbox/linux/common/moz.build @@ -17,7 +17,4 @@ LOCAL_INCLUDES += [ '/security/sandbox/linux', # SandboxLogging.h ] -if CONFIG['OS_TARGET'] == 'Android': - FINAL_LIBRARY = 'mozsandbox' -else: - FINAL_LIBRARY = 'xul' +FINAL_LIBRARY = 'mozsandbox' diff --git a/security/sandbox/linux/glue/SandboxCrash.cpp b/security/sandbox/linux/glue/SandboxCrash.cpp index 70e69bf6f0a3..87a75e8452f1 100644 --- a/security/sandbox/linux/glue/SandboxCrash.cpp +++ b/security/sandbox/linux/glue/SandboxCrash.cpp @@ -134,8 +134,4 @@ SandboxSetCrashFunc() gSandboxCrashFunc = SandboxCrash; } -#ifndef ANDROID -SandboxCrashFunc gSandboxCrashFunc; -#endif - } // namespace mozilla diff --git a/security/sandbox/linux/glue/moz.build b/security/sandbox/linux/glue/moz.build index d92c9a8c1b93..0d40dcd63d73 100644 --- a/security/sandbox/linux/glue/moz.build +++ b/security/sandbox/linux/glue/moz.build @@ -19,10 +19,9 @@ LOCAL_INCLUDES += [ '/security/sandbox/linux', ] -if CONFIG['OS_TARGET'] == 'Android': - USE_LIBS += [ - 'mozsandbox', - ] +USE_LIBS += [ + 'mozsandbox', +] FINAL_LIBRARY = 'xul' diff --git a/security/sandbox/linux/moz.build b/security/sandbox/linux/moz.build index f7bee4974793..957f50d90d90 100644 --- a/security/sandbox/linux/moz.build +++ b/security/sandbox/linux/moz.build @@ -4,13 +4,14 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. +SharedLibrary('mozsandbox') + +# Depend on mozglue if and only if it's a shared library; +# this needs to match mozglue/build/moz.build: if CONFIG['OS_TARGET'] == 'Android': - SharedLibrary('mozsandbox') USE_LIBS += [ 'mozglue', ] -else: - Library('mozsandbox') EXPORTS.mozilla += [ 'Sandbox.h', @@ -102,10 +103,6 @@ if CONFIG['OS_TARGET'] != 'Android': 'rt', ] -USE_LIBS += [ - 'mfbt', -] - DIRS += [ 'broker', 'common', From 4d0b10822d26cb3168e6a44a577395e3eb4be05e Mon Sep 17 00:00:00 2001 From: Matt Woodrow Date: Thu, 27 Oct 2016 13:17:10 +1300 Subject: [PATCH 05/24] Bug 1308363 - Remove GONK specific code from gfx/. r=jrmuizel,sotaro --- dom/ipc/ContentChild.cpp | 8 - dom/ipc/ContentChild.h | 4 - dom/ipc/ContentParent.cpp | 12 - dom/ipc/ContentParent.h | 5 - dom/ipc/PContent.ipdl | 2 - gfx/2d/DrawTargetRecording.cpp | 9 - gfx/2d/Logging.h | 6 +- gfx/2d/moz.build | 4 +- gfx/gl/GLBlitHelper.cpp | 51 +- gfx/gl/GLBlitHelper.h | 3 - gfx/gl/GLContextProviderEGL.cpp | 56 -- gfx/gl/GLLibraryEGL.cpp | 5 - gfx/gl/GLScreenBuffer.cpp | 7 - gfx/gl/SharedSurfaceGralloc.cpp | 294 ----------- gfx/gl/SharedSurfaceGralloc.h | 104 ---- gfx/gl/moz.build | 8 - gfx/layers/Compositor.cpp | 39 -- gfx/layers/Compositor.h | 4 - gfx/layers/GrallocImages.cpp | 478 ----------------- gfx/layers/GrallocImages.h | 136 ----- gfx/layers/ImageContainer.cpp | 15 - gfx/layers/ImageContainer.h | 60 --- gfx/layers/LayerScope.cpp | 153 ------ gfx/layers/LayersLogging.cpp | 2 - gfx/layers/LayersTypes.cpp | 29 -- gfx/layers/LayersTypes.h | 48 -- gfx/layers/RotatedBuffer.cpp | 16 +- gfx/layers/TiledLayerBuffer.h | 4 - gfx/layers/basic/GrallocTextureHostBasic.cpp | 306 ----------- gfx/layers/basic/GrallocTextureHostBasic.h | 88 ---- gfx/layers/basic/TextureHostBasic.cpp | 10 - gfx/layers/client/CanvasClient.cpp | 1 - gfx/layers/client/ClientLayerManager.cpp | 2 +- gfx/layers/client/ClientTiledPaintedLayer.cpp | 2 +- gfx/layers/client/ImageClient.cpp | 26 - gfx/layers/client/TextureClient.cpp | 19 - gfx/layers/client/TextureClient.h | 15 - .../client/TextureClientSharedSurface.cpp | 66 --- .../client/TextureClientSharedSurface.h | 8 - gfx/layers/client/TiledContentClient.cpp | 4 +- gfx/layers/composite/ImageHost.cpp | 9 - .../composite/LayerManagerComposite.cpp | 53 +- gfx/layers/composite/LayerManagerComposite.h | 2 +- gfx/layers/composite/TextureHost.cpp | 15 +- gfx/layers/composite/TextureHost.h | 3 - gfx/layers/composite/TiledContentHost.h | 4 - gfx/layers/ipc/CompositableForwarder.h | 6 - .../ipc/CompositableTransactionParent.cpp | 13 +- gfx/layers/ipc/CompositorBench.cpp | 94 ---- gfx/layers/ipc/CompositorBridgeParent.cpp | 85 ---- gfx/layers/ipc/CompositorBridgeParent.h | 26 - gfx/layers/ipc/FenceUtils.cpp | 33 -- gfx/layers/ipc/GonkNativeHandle.h | 73 --- gfx/layers/ipc/GonkNativeHandleUtils.h | 10 - gfx/layers/ipc/ISurfaceAllocator.h | 12 - gfx/layers/ipc/ImageBridgeChild.cpp | 96 ---- gfx/layers/ipc/ImageBridgeChild.h | 10 - gfx/layers/ipc/ImageBridgeParent.cpp | 3 - gfx/layers/ipc/LayerTransactionParent.cpp | 2 - gfx/layers/ipc/LayersSurfaces.ipdlh | 14 - gfx/layers/ipc/PSharedBufferManager.ipdl | 29 -- gfx/layers/ipc/ShadowLayerUtils.h | 31 -- gfx/layers/ipc/ShadowLayerUtilsGralloc.cpp | 253 --------- gfx/layers/ipc/ShadowLayerUtilsGralloc.h | 95 ---- gfx/layers/ipc/ShadowLayers.cpp | 33 -- gfx/layers/ipc/ShadowLayers.h | 5 - gfx/layers/ipc/SharedBufferManagerChild.cpp | 352 ------------- gfx/layers/ipc/SharedBufferManagerChild.h | 168 ------ gfx/layers/ipc/SharedBufferManagerParent.cpp | 364 ------------- gfx/layers/ipc/SharedBufferManagerParent.h | 110 ---- gfx/layers/moz.build | 52 -- gfx/layers/opengl/CompositorOGL.cpp | 15 - gfx/layers/opengl/CompositorOGL.h | 23 - gfx/layers/opengl/GrallocTextureClient.cpp | 460 ----------------- gfx/layers/opengl/GrallocTextureClient.h | 129 ----- gfx/layers/opengl/GrallocTextureHost.cpp | 480 ------------------ gfx/layers/opengl/GrallocTextureHost.h | 98 ---- gfx/layers/opengl/TextureHostOGL.cpp | 15 - gfx/skia/moz.build | 7 +- gfx/thebes/gfxAndroidPlatform.cpp | 119 ----- gfx/thebes/gfxAndroidPlatform.h | 8 - gfx/thebes/gfxFT2FontList.cpp | 11 +- gfx/thebes/gfxPlatform.cpp | 36 -- gfx/thebes/moz.build | 24 +- xpcom/build/XPCOMInit.cpp | 1 - 85 files changed, 25 insertions(+), 5565 deletions(-) delete mode 100644 gfx/gl/SharedSurfaceGralloc.cpp delete mode 100644 gfx/gl/SharedSurfaceGralloc.h delete mode 100644 gfx/layers/GrallocImages.cpp delete mode 100644 gfx/layers/GrallocImages.h delete mode 100644 gfx/layers/basic/GrallocTextureHostBasic.cpp delete mode 100644 gfx/layers/basic/GrallocTextureHostBasic.h delete mode 100644 gfx/layers/ipc/PSharedBufferManager.ipdl delete mode 100644 gfx/layers/ipc/ShadowLayerUtilsGralloc.cpp delete mode 100644 gfx/layers/ipc/ShadowLayerUtilsGralloc.h delete mode 100644 gfx/layers/ipc/SharedBufferManagerChild.cpp delete mode 100644 gfx/layers/ipc/SharedBufferManagerChild.h delete mode 100644 gfx/layers/ipc/SharedBufferManagerParent.cpp delete mode 100644 gfx/layers/ipc/SharedBufferManagerParent.h delete mode 100644 gfx/layers/opengl/GrallocTextureClient.cpp delete mode 100644 gfx/layers/opengl/GrallocTextureClient.h delete mode 100644 gfx/layers/opengl/GrallocTextureHost.cpp delete mode 100644 gfx/layers/opengl/GrallocTextureHost.h diff --git a/dom/ipc/ContentChild.cpp b/dom/ipc/ContentChild.cpp index 767667d08a3a..32412a073c85 100644 --- a/dom/ipc/ContentChild.cpp +++ b/dom/ipc/ContentChild.cpp @@ -51,7 +51,6 @@ #include "mozilla/layers/CompositorBridgeChild.h" #include "mozilla/layers/ContentProcessController.h" #include "mozilla/layers/ImageBridgeChild.h" -#include "mozilla/layers/SharedBufferManagerChild.h" #include "mozilla/layout/RenderFrameChild.h" #include "mozilla/net/NeckoChild.h" #include "mozilla/plugins/PluginInstanceParent.h" @@ -1214,13 +1213,6 @@ ContentChild::RecvReinitRendering(Endpoint&& aCompositor return true; } -PSharedBufferManagerChild* -ContentChild::AllocPSharedBufferManagerChild(mozilla::ipc::Transport* aTransport, - base::ProcessId aOtherProcess) -{ - return SharedBufferManagerChild::StartUpInChildProcess(aTransport, aOtherProcess); -} - PBackgroundChild* ContentChild::AllocPBackgroundChild(Transport* aTransport, ProcessId aOtherProcess) diff --git a/dom/ipc/ContentChild.h b/dom/ipc/ContentChild.h index 5627391b6d4a..798b9dcb56a3 100644 --- a/dom/ipc/ContentChild.h +++ b/dom/ipc/ContentChild.h @@ -173,10 +173,6 @@ public: Endpoint&& aImageBridge, Endpoint&& aVRBridge) override; - PSharedBufferManagerChild* - AllocPSharedBufferManagerChild(mozilla::ipc::Transport* aTransport, - base::ProcessId aOtherProcess) override; - PProcessHangMonitorChild* AllocPProcessHangMonitorChild(Transport* aTransport, ProcessId aOtherProcess) override; diff --git a/dom/ipc/ContentParent.cpp b/dom/ipc/ContentParent.cpp index 7535ab49257d..7ce273a9177d 100644 --- a/dom/ipc/ContentParent.cpp +++ b/dom/ipc/ContentParent.cpp @@ -85,7 +85,6 @@ #include "mozilla/layers/CompositorThread.h" #include "mozilla/layers/ImageBridgeParent.h" #include "mozilla/layers/LayerTreeOwnerTracker.h" -#include "mozilla/layers/SharedBufferManagerParent.h" #include "mozilla/layout/RenderFrameParent.h" #include "mozilla/LookAndFeel.h" #include "mozilla/media/MediaParent.h" @@ -2214,10 +2213,6 @@ ContentParent::InitInternal(ProcessPriority aInitialPriority, gpm->AddListener(this); } -#ifdef MOZ_WIDGET_GONK - DebugOnly opened = PSharedBufferManager::Open(this); - MOZ_ASSERT(opened); -#endif } if (gAppData) { @@ -2847,13 +2842,6 @@ ContentParent::AllocPProcessHangMonitorParent(Transport* aTransport, return mHangMonitorActor; } -PSharedBufferManagerParent* -ContentParent::AllocPSharedBufferManagerParent(mozilla::ipc::Transport* aTransport, - base::ProcessId aOtherProcess) -{ - return SharedBufferManagerParent::Create(aTransport, aOtherProcess); -} - bool ContentParent::RecvGetProcessAttributes(ContentParentId* aCpId, bool* aIsForApp, bool* aIsForBrowser) diff --git a/dom/ipc/ContentParent.h b/dom/ipc/ContentParent.h index 03fe75601a12..545b5a74e8b2 100644 --- a/dom/ipc/ContentParent.h +++ b/dom/ipc/ContentParent.h @@ -67,7 +67,6 @@ class PJavaScriptParent; } // namespace jsipc namespace layers { -class PSharedBufferManagerParent; struct TextureFactoryIdentifier; } // namespace layers @@ -702,10 +701,6 @@ private: AllocPGMPServiceParent(mozilla::ipc::Transport* aTransport, base::ProcessId aOtherProcess) override; - PSharedBufferManagerParent* - AllocPSharedBufferManagerParent(mozilla::ipc::Transport* aTranport, - base::ProcessId aOtherProcess) override; - PBackgroundParent* AllocPBackgroundParent(Transport* aTransport, ProcessId aOtherProcess) override; diff --git a/dom/ipc/PContent.ipdl b/dom/ipc/PContent.ipdl index 4a24f804a7b6..464e20bec818 100644 --- a/dom/ipc/PContent.ipdl +++ b/dom/ipc/PContent.ipdl @@ -41,7 +41,6 @@ include protocol PSendStream; include protocol POfflineCacheUpdate; include protocol PRenderFrame; include protocol PScreenManager; -include protocol PSharedBufferManager; include protocol PSpeechSynthesis; include protocol PStorage; include protocol PTelephony; @@ -344,7 +343,6 @@ nested(upto inside_cpow) sync protocol PContent parent spawns PPluginModule; parent opens PProcessHangMonitor; - parent opens PSharedBufferManager; parent opens PGMPService; child opens PBackground; diff --git a/gfx/2d/DrawTargetRecording.cpp b/gfx/2d/DrawTargetRecording.cpp index d7ff808fe6e2..f81731890554 100644 --- a/gfx/2d/DrawTargetRecording.cpp +++ b/gfx/2d/DrawTargetRecording.cpp @@ -372,10 +372,7 @@ void RecordingFontUserDataDestroyFunc(void *aUserData) RecordingFontUserData *userData = static_cast(aUserData); - // TODO support font in b2g recordings -#ifndef MOZ_WIDGET_GONK userData->recorder->RecordEvent(RecordedScaledFontDestruction(userData->refPtr)); -#endif delete userData; } @@ -390,8 +387,6 @@ DrawTargetRecording::FillGlyphs(ScaledFont *aFont, EnsurePatternDependenciesStored(aPattern); if (!aFont->GetUserData(reinterpret_cast(mRecorder.get()))) { - // TODO support font in b2g recordings -#ifndef MOZ_WIDGET_GONK RecordedFontData fontData(aFont); RecordedFontDetails fontDetails; if (fontData.GetFontDetails(fontDetails)) { @@ -412,7 +407,6 @@ DrawTargetRecording::FillGlyphs(ScaledFont *aFont, gfxWarning() << "DrawTargetRecording::FillGlyphs failed to serialise ScaledFont"; } } -#endif RecordingFontUserData *userData = new RecordingFontUserData; userData->refPtr = aFont; userData->recorder = mRecorder; @@ -420,10 +414,7 @@ DrawTargetRecording::FillGlyphs(ScaledFont *aFont, &RecordingFontUserDataDestroyFunc); } - // TODO support font in b2g recordings -#ifndef MOZ_WIDGET_GONK mRecorder->RecordEvent(RecordedFillGlyphs(this, aFont, aPattern, aOptions, aBuffer.mGlyphs, aBuffer.mNumGlyphs)); -#endif mFinalDT->FillGlyphs(aFont, aBuffer, aPattern, aOptions, aRenderingOptions); } diff --git a/gfx/2d/Logging.h b/gfx/2d/Logging.h index 8bd33430eb24..33f3d77d3ca0 100644 --- a/gfx/2d/Logging.h +++ b/gfx/2d/Logging.h @@ -16,7 +16,7 @@ #endif #include "mozilla/Tuple.h" -#if defined(MOZ_WIDGET_GONK) || defined(MOZ_WIDGET_ANDROID) +#if defined(MOZ_WIDGET_ANDROID) #include "nsDebug.h" #endif #include "Point.h" @@ -140,7 +140,7 @@ struct BasicLogger // in the appropriate places in that method. static bool ShouldOutputMessage(int aLevel) { if (LoggingPrefs::sGfxLogLevel >= aLevel) { -#if defined(MOZ_WIDGET_GONK) || defined(MOZ_WIDGET_ANDROID) +#if defined(MOZ_WIDGET_ANDROID) return true; #else #if defined(MOZ_LOGGING) @@ -173,7 +173,7 @@ struct BasicLogger // make the corresponding change in the ShouldOutputMessage method // above. if (LoggingPrefs::sGfxLogLevel >= aLevel) { -#if defined(MOZ_WIDGET_GONK) || defined(MOZ_WIDGET_ANDROID) +#if defined(MOZ_WIDGET_ANDROID) printf_stderr("%s%s", aString.c_str(), aNoNewline ? "" : "\n"); #else #if defined(MOZ_LOGGING) diff --git a/gfx/2d/moz.build b/gfx/2d/moz.build index 0628864cd01d..ad095503d97e 100644 --- a/gfx/2d/moz.build +++ b/gfx/2d/moz.build @@ -207,12 +207,12 @@ FINAL_LIBRARY = 'xul' for var in ('USE_CAIRO', 'MOZ2D_HAS_MOZ_CAIRO'): DEFINES[var] = True -if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('android', 'gtk2', 'gtk3', 'gonk'): +if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('android', 'gtk2', 'gtk3'): DEFINES['MOZ_ENABLE_FREETYPE'] = True CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS'] -if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('android', 'gtk2', 'gtk3', 'gonk'): +if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('android', 'gtk2', 'gtk3'): CXXFLAGS += CONFIG['CAIRO_FT_CFLAGS'] LOCAL_INCLUDES += CONFIG['SKIA_INCLUDES'] diff --git a/gfx/gl/GLBlitHelper.cpp b/gfx/gl/GLBlitHelper.cpp index 6e049ee016b8..c8d93eee3030 100644 --- a/gfx/gl/GLBlitHelper.cpp +++ b/gfx/gl/GLBlitHelper.cpp @@ -15,11 +15,6 @@ #include "mozilla/gfx/Matrix.h" #include "mozilla/UniquePtr.h" -#ifdef MOZ_WIDGET_GONK -#include "GrallocImages.h" -#include "GLLibraryEGL.h" -#endif - #ifdef MOZ_WIDGET_ANDROID #include "AndroidSurfaceTexture.h" #include "GLImages.h" @@ -152,7 +147,7 @@ GLBlitHelper::InitTexQuadProgram(BlitType target) vTexCoord * uTexCoordMult); \n\ } \n\ "; -#ifdef ANDROID /* MOZ_WIDGET_ANDROID || MOZ_WIDGET_GONK */ +#ifdef ANDROID /* MOZ_WIDGET_ANDROID */ const char kTexExternalBlit_FragShaderSource[] = "\ #version 100 \n\ #extension GL_OES_EGL_image_external : require \n\ @@ -684,38 +679,6 @@ GLBlitHelper::BindAndUploadEGLImage(EGLImage image, GLuint target) mGL->fEGLImageTargetTexture2D(target, image); } -#ifdef MOZ_WIDGET_GONK - -bool -GLBlitHelper::BlitGrallocImage(layers::GrallocImage* grallocImage) -{ - ScopedBindTextureUnit boundTU(mGL, LOCAL_GL_TEXTURE0); - mGL->fClear(LOCAL_GL_COLOR_BUFFER_BIT); - - EGLint attrs[] = { - LOCAL_EGL_IMAGE_PRESERVED, LOCAL_EGL_TRUE, - LOCAL_EGL_NONE, LOCAL_EGL_NONE - }; - EGLImage image = sEGLLibrary.fCreateImage(sEGLLibrary.Display(), - EGL_NO_CONTEXT, - LOCAL_EGL_NATIVE_BUFFER_ANDROID, - grallocImage->GetNativeBuffer(), attrs); - if (image == EGL_NO_IMAGE) - return false; - - int oldBinding = 0; - mGL->fGetIntegerv(LOCAL_GL_TEXTURE_BINDING_EXTERNAL_OES, &oldBinding); - - BindAndUploadEGLImage(image, LOCAL_GL_TEXTURE_EXTERNAL_OES); - - mGL->fDrawArrays(LOCAL_GL_TRIANGLE_STRIP, 0, 4); - - sEGLLibrary.fDestroyImage(sEGLLibrary.Display(), image); - mGL->fBindTexture(LOCAL_GL_TEXTURE_EXTERNAL_OES, oldBinding); - return true; -} -#endif - #ifdef MOZ_WIDGET_ANDROID #define ATTACH_WAIT_MS 50 @@ -873,13 +836,6 @@ GLBlitHelper::BlitImageToFramebuffer(layers::Image* srcImage, srcOrigin = OriginPos::TopLeft; break; -#ifdef MOZ_WIDGET_GONK - case ImageFormat::GRALLOC_PLANAR_YCBCR: - type = ConvertGralloc; - srcOrigin = OriginPos::TopLeft; - break; -#endif - #ifdef MOZ_WIDGET_ANDROID case ImageFormat::SURFACE_TEXTURE: type = ConvertSurfaceTexture; @@ -915,11 +871,6 @@ GLBlitHelper::BlitImageToFramebuffer(layers::Image* srcImage, mGL->fViewport(0, 0, destSize.width, destSize.height); switch (type) { -#ifdef MOZ_WIDGET_GONK - case ConvertGralloc: - return BlitGrallocImage(static_cast(srcImage)); -#endif - case ConvertPlanarYCbCr: { const auto saved = mGL->GetIntAs(LOCAL_GL_UNPACK_ALIGNMENT); mGL->fPixelStorei(LOCAL_GL_UNPACK_ALIGNMENT, 1); diff --git a/gfx/gl/GLBlitHelper.h b/gfx/gl/GLBlitHelper.h index 6ff0eaf33b5c..31d6a2f5b14d 100644 --- a/gfx/gl/GLBlitHelper.h +++ b/gfx/gl/GLBlitHelper.h @@ -107,9 +107,6 @@ class GLBlitHelper final void BindAndUploadYUVTexture(Channel which, uint32_t width, uint32_t height, void* data, bool allocation); void BindAndUploadEGLImage(EGLImage image, GLuint target); -#ifdef MOZ_WIDGET_GONK - bool BlitGrallocImage(layers::GrallocImage* grallocImage); -#endif bool BlitPlanarYCbCrImage(layers::PlanarYCbCrImage* yuvImage); #ifdef MOZ_WIDGET_ANDROID // Blit onto the current FB. diff --git a/gfx/gl/GLContextProviderEGL.cpp b/gfx/gl/GLContextProviderEGL.cpp index 8ef607e3d6f6..ca972e0f3c13 100644 --- a/gfx/gl/GLContextProviderEGL.cpp +++ b/gfx/gl/GLContextProviderEGL.cpp @@ -16,12 +16,6 @@ #endif #if defined(XP_UNIX) - #ifdef MOZ_WIDGET_GONK - #include "libdisplay/GonkDisplay.h" - #include "nsWindow.h" - #include "nsScreenManagerGonk.h" - #endif - #ifdef MOZ_WIDGET_ANDROID #include #include @@ -30,13 +24,6 @@ #ifdef ANDROID #include #define LOG(args...) __android_log_print(ANDROID_LOG_INFO, "Gonk" , ## args) - - #ifdef MOZ_WIDGET_GONK - #include "cutils/properties.h" - #include - - using namespace android; - #endif #endif #define GLES2_LIB "libGLESv2.so" @@ -237,17 +224,6 @@ GLContextEGL::~GLContextEGL() sEGLLibrary.fDestroyContext(EGL_DISPLAY(), mContext); sEGLLibrary.UnsetCachedCurrentContext(); -#if defined(MOZ_WIDGET_GONK) && ANDROID_VERSION < 17 - if (!mIsOffscreen) { - // In ICS, SurfaceFlinger's DisplayHardware::fini() does not destroy the EGLSurface associated with the - // native framebuffer. Destroying it causes crashes in the ICS emulator - // EGL implementation, specifically because the egl_window_surface_t dtor - // calls nativeWindow->cancelBuffer and FramebufferNativeWindow does not initialize - // the cancelBuffer function pointer, see bug 986836 - return; - } -#endif - mozilla::gl::DestroySurface(mSurface); } @@ -437,12 +413,6 @@ GLContextEGL::SwapBuffers() ? mSurfaceOverride : mSurface; if (surface) { -#if defined(MOZ_WIDGET_GONK) && ANDROID_VERSION < 17 - if (!mIsOffscreen) { - // eglSwapBuffers() is called by hwcomposer. - return true; - } -#endif return sEGLLibrary.fSwapBuffers(EGL_DISPLAY(), surface); } else { return false; @@ -633,9 +603,6 @@ static const EGLint kEGLConfigAttribsRGBA32[] = { LOCAL_EGL_GREEN_SIZE, 8, LOCAL_EGL_BLUE_SIZE, 8, LOCAL_EGL_ALPHA_SIZE, 8, -#if defined(MOZ_WIDGET_GONK) && ANDROID_VERSION >= 17 - LOCAL_EGL_FRAMEBUFFER_TARGET_ANDROID, LOCAL_EGL_TRUE, -#endif EGL_ATTRIBS_LIST_SAFE_TERMINATION_WORKING_AROUND_BUGS }; @@ -667,29 +634,6 @@ CreateConfig(EGLConfig* aConfig, int32_t depth, nsIWidget* aWidget) return false; } -#ifdef MOZ_WIDGET_GONK - // On gonk, it's important to select a configuration with the - // the correct order as well as bits per channel. - // EGL_NATIVE_VISUAL_ID gives us the Android pixel format which - // is an enum that tells us both order and bits per channel. - // For example - - // HAL_PIXEL_FORMAT_RGBX_8888 - // HAL_PIXEL_FORMAT_BGRA_8888 - // HAL_PIXEL_FORMAT_RGB_565 - nsWindow* window = static_cast(aWidget); - for (int j = 0; j < ncfg; ++j) { - EGLConfig config = configs[j]; - EGLint format; - if (sEGLLibrary.fGetConfigAttrib(EGL_DISPLAY(), config, - LOCAL_EGL_NATIVE_VISUAL_ID, &format) && - format == window->GetScreen()->GetSurfaceFormat()) - { - *aConfig = config; - return true; - } - } -#endif - for (int j = 0; j < ncfg; ++j) { EGLConfig config = configs[j]; EGLint r, g, b, a; diff --git a/gfx/gl/GLLibraryEGL.cpp b/gfx/gl/GLLibraryEGL.cpp index de473a6cf3b3..130bce119152 100644 --- a/gfx/gl/GLLibraryEGL.cpp +++ b/gfx/gl/GLLibraryEGL.cpp @@ -431,11 +431,6 @@ GLLibraryEGL::EnsureInitialized(bool forceAccel, nsACString* const out_failureId Unused << GLLibraryLoader::LoadSymbols(mEGLLibrary, &optionalSymbols[0], nullptr, nullptr, false); -#if defined(MOZ_WIDGET_GONK) && ANDROID_VERSION >= 18 - MOZ_RELEASE_ASSERT(mSymbols.fQueryStringImplementationANDROID, - "GFX: Couldn't find eglQueryStringImplementationANDROID"); -#endif - InitClientExtensions(); const auto lookupFunction = diff --git a/gfx/gl/GLScreenBuffer.cpp b/gfx/gl/GLScreenBuffer.cpp index a2959b765d58..23389a871afc 100755 --- a/gfx/gl/GLScreenBuffer.cpp +++ b/gfx/gl/GLScreenBuffer.cpp @@ -24,11 +24,6 @@ #include "mozilla/gfx/DeviceManagerDx.h" #endif -#ifdef MOZ_WIDGET_GONK -#include "SharedSurfaceGralloc.h" -#include "nsXULAppAPI.h" -#endif - #ifdef XP_MACOSX #include "SharedSurfaceIO.h" #endif @@ -89,8 +84,6 @@ GLScreenBuffer::CreateFactory(GLContext* gl, case mozilla::layers::LayersBackend::LAYERS_OPENGL: { #if defined(XP_MACOSX) factory = SurfaceFactory_IOSurface::Create(gl, caps, ipcChannel, flags); -#elif defined(MOZ_WIDGET_GONK) - factory = MakeUnique(gl, caps, ipcChannel, flags); #elif defined(GL_PROVIDER_GLX) if (sGLXLibrary.UseTextureFromPixmap()) factory = SurfaceFactory_GLXDrawable::Create(gl, caps, ipcChannel, flags); diff --git a/gfx/gl/SharedSurfaceGralloc.cpp b/gfx/gl/SharedSurfaceGralloc.cpp deleted file mode 100644 index 6a6f9c97b297..000000000000 --- a/gfx/gl/SharedSurfaceGralloc.cpp +++ /dev/null @@ -1,294 +0,0 @@ -/* -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40; -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "mozilla/Preferences.h" -#include "mozilla/UniquePtr.h" - -#include "SharedSurfaceGralloc.h" - -#include "GLContext.h" -#include "SharedSurface.h" -#include "GLLibraryEGL.h" -#include "mozilla/layers/GrallocTextureClient.h" -#include "mozilla/layers/ShadowLayers.h" - -#include "ui/GraphicBuffer.h" -#include "../layers/ipc/ShadowLayers.h" -#include "ScopedGLHelpers.h" - -#include "gfxPlatform.h" -#include "gfxPrefs.h" - -#define DEBUG_GRALLOC -#ifdef DEBUG_GRALLOC -#define DEBUG_PRINT(...) do { printf_stderr(__VA_ARGS__); } while (0) -#else -#define DEBUG_PRINT(...) do { } while (0) -#endif - -namespace mozilla { -namespace gl { - -using namespace mozilla::layers; -using namespace android; - -SurfaceFactory_Gralloc::SurfaceFactory_Gralloc(GLContext* prodGL, const SurfaceCaps& caps, - const RefPtr& allocator, - const layers::TextureFlags& flags) - : SurfaceFactory(SharedSurfaceType::Gralloc, prodGL, caps, allocator, flags) -{ - MOZ_ASSERT(mAllocator); -} - -/*static*/ UniquePtr -SharedSurface_Gralloc::Create(GLContext* prodGL, - const GLFormats& formats, - const gfx::IntSize& size, - bool hasAlpha, - layers::TextureFlags flags, - LayersIPCChannel* allocator) -{ - GLLibraryEGL* egl = &sEGLLibrary; - MOZ_ASSERT(egl); - - UniquePtr ret; - - DEBUG_PRINT("SharedSurface_Gralloc::Create -------\n"); - - if (!HasExtensions(egl, prodGL)) - return Move(ret); - - gfxContentType type = hasAlpha ? gfxContentType::COLOR_ALPHA - : gfxContentType::COLOR; - - GrallocTextureData* texData = GrallocTextureData::CreateForGLRendering( - size, gfxPlatform::GetPlatform()->Optimal2DFormatForContent(type), allocator - ); - - if (!texData) { - return Move(ret); - } - - RefPtr grallocTC = new TextureClient(texData, flags, allocator); - - sp buffer = texData->GetGraphicBuffer(); - - EGLDisplay display = egl->Display(); - EGLClientBuffer clientBuffer = buffer->getNativeBuffer(); - EGLint attrs[] = { - LOCAL_EGL_NONE, LOCAL_EGL_NONE - }; - EGLImage image = egl->fCreateImage(display, - EGL_NO_CONTEXT, - LOCAL_EGL_NATIVE_BUFFER_ANDROID, - clientBuffer, attrs); - if (!image) { - return Move(ret); - } - - prodGL->MakeCurrent(); - GLuint prodTex = 0; - prodGL->fGenTextures(1, &prodTex); - ScopedBindTexture autoTex(prodGL, prodTex); - - prodGL->fTexParameteri(LOCAL_GL_TEXTURE_2D, LOCAL_GL_TEXTURE_MIN_FILTER, LOCAL_GL_LINEAR); - prodGL->fTexParameteri(LOCAL_GL_TEXTURE_2D, LOCAL_GL_TEXTURE_MAG_FILTER, LOCAL_GL_LINEAR); - prodGL->fTexParameteri(LOCAL_GL_TEXTURE_2D, LOCAL_GL_TEXTURE_WRAP_S, LOCAL_GL_CLAMP_TO_EDGE); - prodGL->fTexParameteri(LOCAL_GL_TEXTURE_2D, LOCAL_GL_TEXTURE_WRAP_T, LOCAL_GL_CLAMP_TO_EDGE); - - prodGL->fEGLImageTargetTexture2D(LOCAL_GL_TEXTURE_2D, image); - - egl->fDestroyImage(display, image); - - ret.reset( new SharedSurface_Gralloc(prodGL, size, hasAlpha, egl, - allocator, grallocTC, - prodTex) ); - - DEBUG_PRINT("SharedSurface_Gralloc::Create: success -- surface %p," - " GraphicBuffer %p.\n", - ret.get(), buffer.get()); - - return Move(ret); -} - - -SharedSurface_Gralloc::SharedSurface_Gralloc(GLContext* prodGL, - const gfx::IntSize& size, - bool hasAlpha, - GLLibraryEGL* egl, - layers::LayersIPCChannel* allocator, - layers::TextureClient* textureClient, - GLuint prodTex) - : SharedSurface(SharedSurfaceType::Gralloc, - AttachmentType::GLTexture, - prodGL, - size, - hasAlpha, - true) - , mEGL(egl) - , mSync(0) - , mAllocator(allocator) - , mTextureClient(textureClient) - , mProdTex(prodTex) -{ -} - -bool -SharedSurface_Gralloc::HasExtensions(GLLibraryEGL* egl, GLContext* gl) -{ - return egl->HasKHRImageBase() && - gl->IsExtensionSupported(GLContext::OES_EGL_image); -} - -SharedSurface_Gralloc::~SharedSurface_Gralloc() -{ - DEBUG_PRINT("[SharedSurface_Gralloc %p] destroyed\n", this); - - if (!mGL || !mGL->MakeCurrent()) - return; - - mGL->fDeleteTextures(1, &mProdTex); - - if (mSync) { - MOZ_ALWAYS_TRUE( mEGL->fDestroySync(mEGL->Display(), mSync) ); - mSync = 0; - } -} - -void -SharedSurface_Gralloc::ProducerReleaseImpl() -{ - if (mSync) { - MOZ_ALWAYS_TRUE( mEGL->fDestroySync(mEGL->Display(), mSync) ); - mSync = 0; - } - - bool disableSyncFence = false; - // Disable sync fence on AdrenoTM200. - // AdrenoTM200's sync fence does not work correctly. See Bug 1022205. - if (mGL->Renderer() == GLRenderer::AdrenoTM200) { - disableSyncFence = true; - } - - // When Android native fences are available, try - // them first since they're more likely to work. - // Android native fences are also likely to perform better. - if (!disableSyncFence && - mEGL->IsExtensionSupported(GLLibraryEGL::ANDROID_native_fence_sync)) - { - mGL->MakeCurrent(); - EGLSync sync = mEGL->fCreateSync(mEGL->Display(), - LOCAL_EGL_SYNC_NATIVE_FENCE_ANDROID, - nullptr); - if (sync) { - mGL->fFlush(); -#if defined(MOZ_WIDGET_GONK) && ANDROID_VERSION >= 17 - int fenceFd = mEGL->fDupNativeFenceFDANDROID(mEGL->Display(), sync); - if (fenceFd != -1) { - mEGL->fDestroySync(mEGL->Display(), sync); - mTextureClient->SetAcquireFenceHandle(FenceHandle(new FenceHandle::FdObj(fenceFd))); - } else { - mSync = sync; - } -#else - mSync = sync; -#endif - return; - } - } - - if (!disableSyncFence && - mEGL->IsExtensionSupported(GLLibraryEGL::KHR_fence_sync)) - { - mGL->MakeCurrent(); - mSync = mEGL->fCreateSync(mEGL->Display(), - LOCAL_EGL_SYNC_FENCE, - nullptr); - if (mSync) { - mGL->fFlush(); - return; - } - } - - // We should be able to rely on genlock write locks/read locks. - // But they're broken on some configs, and even a glFinish doesn't - // work. glReadPixels seems to, though. - if (gfxPrefs::GrallocFenceWithReadPixels()) { - mGL->MakeCurrent(); - UniquePtr buf = MakeUnique(4); - mGL->fReadPixels(0, 0, 1, 1, LOCAL_GL_RGBA, LOCAL_GL_UNSIGNED_BYTE, buf.get()); - } -} - -void -SharedSurface_Gralloc::WaitForBufferOwnership() -{ - mTextureClient->WaitForBufferOwnership(); -} - -bool -SharedSurface_Gralloc::ToSurfaceDescriptor(layers::SurfaceDescriptor* const out_descriptor) -{ - mTextureClient->mWorkaroundAnnoyingSharedSurfaceOwnershipIssues = true; - return mTextureClient->ToSurfaceDescriptor(*out_descriptor); -} - -bool -SharedSurface_Gralloc::ReadbackBySharedHandle(gfx::DataSourceSurface* out_surface) -{ - MOZ_ASSERT(out_surface); - sp buffer = static_cast( - mTextureClient->GetInternalData() - )->GetGraphicBuffer(); - - const uint8_t* grallocData = nullptr; - auto result = buffer->lock( - GRALLOC_USAGE_SW_READ_OFTEN | GRALLOC_USAGE_SW_WRITE_NEVER, - const_cast(reinterpret_cast(&grallocData)) - ); - - if (result == BAD_VALUE) { - return false; - } - - gfx::DataSourceSurface::ScopedMap map(out_surface, gfx::DataSourceSurface::WRITE); - if (!map.IsMapped()) { - buffer->unlock(); - return false; - } - - uint32_t stride = buffer->getStride() * android::bytesPerPixel(buffer->getPixelFormat()); - uint32_t height = buffer->getHeight(); - uint32_t width = buffer->getWidth(); - for (uint32_t i = 0; i < height; i++) { - memcpy(map.GetData() + i * map.GetStride(), - grallocData + i * stride, width * 4); - } - - buffer->unlock(); - - android::PixelFormat srcFormat = buffer->getPixelFormat(); - MOZ_ASSERT(srcFormat == PIXEL_FORMAT_RGBA_8888 || - srcFormat == PIXEL_FORMAT_BGRA_8888 || - srcFormat == PIXEL_FORMAT_RGBX_8888); - bool isSrcRGB = srcFormat == PIXEL_FORMAT_RGBA_8888 || - srcFormat == PIXEL_FORMAT_RGBX_8888; - - gfx::SurfaceFormat destFormat = out_surface->GetFormat(); - MOZ_ASSERT(destFormat == gfx::SurfaceFormat::R8G8B8X8 || - destFormat == gfx::SurfaceFormat::R8G8B8A8 || - destFormat == gfx::SurfaceFormat::B8G8R8X8 || - destFormat == gfx::SurfaceFormat::B8G8R8A8); - bool isDestRGB = destFormat == gfx::SurfaceFormat::R8G8B8X8 || - destFormat == gfx::SurfaceFormat::R8G8B8A8; - - if (isSrcRGB != isDestRGB) { - SwapRAndBComponents(out_surface); - } - return true; -} - -} // namespace gl -} // namespace mozilla diff --git a/gfx/gl/SharedSurfaceGralloc.h b/gfx/gl/SharedSurfaceGralloc.h deleted file mode 100644 index 9cc311f2302d..000000000000 --- a/gfx/gl/SharedSurfaceGralloc.h +++ /dev/null @@ -1,104 +0,0 @@ -/* -*- Mode: c++; c-basic-offset: 4; indent-tabs-mode: nil; tab-width: 40; -*- */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef SHARED_SURFACE_GRALLOC_H_ -#define SHARED_SURFACE_GRALLOC_H_ - -#include "mozilla/layers/CompositorTypes.h" -#include "mozilla/layers/LayersSurfaces.h" -#include "SharedSurface.h" - -namespace mozilla { -namespace layers { -class LayersIPCChannel; -class TextureClient; -} - -namespace gl { -class GLContext; -class GLLibraryEGL; - -class SharedSurface_Gralloc - : public SharedSurface -{ -public: - static UniquePtr Create(GLContext* prodGL, - const GLFormats& formats, - const gfx::IntSize& size, - bool hasAlpha, - layers::TextureFlags flags, - layers::LayersIPCChannel* allocator); - - static SharedSurface_Gralloc* Cast(SharedSurface* surf) { - MOZ_ASSERT(surf->mType == SharedSurfaceType::Gralloc); - - return (SharedSurface_Gralloc*)surf; - } - -protected: - GLLibraryEGL* const mEGL; - EGLSync mSync; - RefPtr mAllocator; - RefPtr mTextureClient; - const GLuint mProdTex; - - SharedSurface_Gralloc(GLContext* prodGL, - const gfx::IntSize& size, - bool hasAlpha, - GLLibraryEGL* egl, - layers::LayersIPCChannel* allocator, - layers::TextureClient* textureClient, - GLuint prodTex); - - static bool HasExtensions(GLLibraryEGL* egl, GLContext* gl); - -public: - virtual ~SharedSurface_Gralloc(); - - virtual void ProducerAcquireImpl() override {} - virtual void ProducerReleaseImpl() override; - - virtual void WaitForBufferOwnership() override; - - virtual void LockProdImpl() override {} - virtual void UnlockProdImpl() override {} - - virtual GLuint ProdTexture() override { - return mProdTex; - } - - layers::TextureClient* GetTextureClient() { - return mTextureClient; - } - - virtual bool ToSurfaceDescriptor(layers::SurfaceDescriptor* const out_descriptor) override; - - virtual bool ReadbackBySharedHandle(gfx::DataSourceSurface* out_surface) override; -}; - -class SurfaceFactory_Gralloc - : public SurfaceFactory -{ -public: - SurfaceFactory_Gralloc(GLContext* prodGL, const SurfaceCaps& caps, - const RefPtr& allocator, - const layers::TextureFlags& flags); - - virtual UniquePtr CreateShared(const gfx::IntSize& size) override { - bool hasAlpha = mReadCaps.alpha; - - UniquePtr ret; - if (mAllocator) { - ret = SharedSurface_Gralloc::Create(mGL, mFormats, size, hasAlpha, - mFlags, mAllocator); - } - return Move(ret); - } -}; - -} /* namespace gl */ -} /* namespace mozilla */ - -#endif /* SHARED_SURFACE_GRALLOC_H_ */ diff --git a/gfx/gl/moz.build b/gfx/gl/moz.build index 6a922969abb8..596612bb8e50 100644 --- a/gfx/gl/moz.build +++ b/gfx/gl/moz.build @@ -19,8 +19,6 @@ elif 'gtk' in CONFIG['MOZ_WIDGET_TOOLKIT']: gl_provider = 'GLX' elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android': gl_provider = 'EGL' -elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk': - gl_provider = 'EGL' if CONFIG['MOZ_GL_PROVIDER']: gl_provider = CONFIG['MOZ_GL_PROVIDER'] @@ -84,12 +82,6 @@ if CONFIG['MOZ_ENABLE_SKIA_GPU']: # Suppress warnings from Skia header files. SOURCES['SkiaGLGlue.cpp'].flags += ['-Wno-implicit-fallthrough'] -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk': - UNIFIED_SOURCES += ['SharedSurfaceGralloc.cpp'] - EXPORTS += ['SharedSurfaceGralloc.h'] - LOCAL_INCLUDES += ['/widget/gonk'] - LOCAL_INCLUDES += ['%' + '%s/%s' % (CONFIG['ANDROID_SOURCE'], 'hardware/libhardware/include')] - if gl_provider == 'CGL': # These files include Mac headers that are unfriendly to unified builds SOURCES += [ diff --git a/gfx/layers/Compositor.cpp b/gfx/layers/Compositor.cpp index 2b5d3bbf279b..86af7aabae73 100644 --- a/gfx/layers/Compositor.cpp +++ b/gfx/layers/Compositor.cpp @@ -14,13 +14,6 @@ #include "gfx2DGlue.h" #include "nsAppRunner.h" -#if defined(MOZ_WIDGET_GONK) && ANDROID_VERSION >= 17 -#include "libdisplay/GonkDisplay.h" // for GonkDisplay -#include -#include "nsWindow.h" -#include "nsScreenManagerGonk.h" -#endif - namespace mozilla { namespace layers { @@ -607,37 +600,6 @@ Compositor::IsValid() const return !!mParent; } -#if defined(MOZ_WIDGET_GONK) && ANDROID_VERSION >= 17 -void -Compositor::SetDispAcquireFence(Layer* aLayer) -{ - // OpenGL does not provide ReleaseFence for rendering. - // Instead use DispAcquireFence as layer buffer's ReleaseFence - // to prevent flickering and tearing. - // DispAcquireFence is DisplaySurface's AcquireFence. - // AcquireFence will be signaled when a buffer's content is available. - // See Bug 974152. - if (!aLayer || !mWidget) { - return; - } - nsWindow* window = static_cast(mWidget->RealWidget()); - RefPtr fence = new FenceHandle::FdObj( - window->GetScreen()->GetPrevDispAcquireFd()); - mReleaseFenceHandle.Merge(FenceHandle(fence)); -} - -FenceHandle -Compositor::GetReleaseFence() -{ - if (!mReleaseFenceHandle.IsValid()) { - return FenceHandle(); - } - - RefPtr fdObj = mReleaseFenceHandle.GetDupFdObj(); - return FenceHandle(fdObj); -} - -#else void Compositor::SetDispAcquireFence(Layer* aLayer) { @@ -648,7 +610,6 @@ Compositor::GetReleaseFence() { return FenceHandle(); } -#endif } // namespace layers } // namespace mozilla diff --git a/gfx/layers/Compositor.h b/gfx/layers/Compositor.h index b3833fe806f0..622432df230c 100644 --- a/gfx/layers/Compositor.h +++ b/gfx/layers/Compositor.h @@ -683,10 +683,6 @@ protected: bool mIsDestroyed; -#if defined(MOZ_WIDGET_GONK) && ANDROID_VERSION >= 17 - FenceHandle mReleaseFenceHandle; -#endif - gfx::Color mClearColor; gfx::Color mDefaultClearColor; diff --git a/gfx/layers/GrallocImages.cpp b/gfx/layers/GrallocImages.cpp deleted file mode 100644 index ed18d8b56d39..000000000000 --- a/gfx/layers/GrallocImages.cpp +++ /dev/null @@ -1,478 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim: set ts=2 et sw=2 tw=80: */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this file, - * You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "GrallocImages.h" -#include // for size_t -#include // for int8_t, uint8_t, uint32_t, etc -#include "nsDebug.h" // for NS_WARNING, NS_PRECONDITION -#include "mozilla/layers/ImageBridgeChild.h" -#include "mozilla/layers/GrallocTextureClient.h" -#include "gfx2DGlue.h" -#include "YCbCrUtils.h" // for YCbCr conversions - -#include -#include - - -using namespace mozilla::ipc; -using namespace android; - -#define ALIGN(x, align) ((x + align - 1) & ~(align - 1)) - -namespace mozilla { -namespace layers { - -int32_t GrallocImage::sColorIdMap[] = { - HAL_PIXEL_FORMAT_YCbCr_420_P, OMX_COLOR_FormatYUV420Planar, - HAL_PIXEL_FORMAT_YCbCr_422_P, OMX_COLOR_FormatYUV422Planar, - HAL_PIXEL_FORMAT_YCbCr_420_SP, OMX_COLOR_FormatYUV420SemiPlanar, - HAL_PIXEL_FORMAT_YCrCb_420_SP, -1, - HAL_PIXEL_FORMAT_YCrCb_420_SP_ADRENO, -1, - HAL_PIXEL_FORMAT_YCbCr_420_SP_TILED, HAL_PIXEL_FORMAT_YCbCr_420_SP_TILED, - HAL_PIXEL_FORMAT_YCbCr_420_SP_VENUS, HAL_PIXEL_FORMAT_YCbCr_420_SP_VENUS, - HAL_PIXEL_FORMAT_YV12, OMX_COLOR_FormatYUV420Planar, - HAL_PIXEL_FORMAT_RGBA_8888, -1, - 0, 0 -}; - -struct GraphicBufferAutoUnlock { - android::sp mGraphicBuffer; - - GraphicBufferAutoUnlock(android::sp& aGraphicBuffer) - : mGraphicBuffer(aGraphicBuffer) { } - - ~GraphicBufferAutoUnlock() { mGraphicBuffer->unlock(); } -}; - -GrallocImage::GrallocImage() - : RecyclingPlanarYCbCrImage(nullptr) -{ - mFormat = ImageFormat::GRALLOC_PLANAR_YCBCR; -} - -GrallocImage::~GrallocImage() -{ -} - -bool -GrallocImage::SetData(const Data& aData) -{ - MOZ_ASSERT(!mTextureClient, "TextureClient is already set"); - NS_PRECONDITION(aData.mYSize.width % 2 == 0, "Image should have even width"); - NS_PRECONDITION(aData.mYSize.height % 2 == 0, "Image should have even height"); - NS_PRECONDITION(aData.mYStride % 16 == 0, "Image should have stride of multiple of 16 pixels"); - - mData = aData; - mSize = aData.mPicSize; - - if (gfxPlatform::GetPlatform()->IsInGonkEmulator()) { - // Emulator does not support HAL_PIXEL_FORMAT_YV12. - return false; - } - - RefPtr allocator = ImageBridgeChild::GetSingleton(); - GrallocTextureData* texData = GrallocTextureData::Create(mData.mYSize, HAL_PIXEL_FORMAT_YV12, - gfx::BackendType::NONE, - GraphicBuffer::USAGE_SW_READ_OFTEN | - GraphicBuffer::USAGE_SW_WRITE_OFTEN | - GraphicBuffer::USAGE_HW_TEXTURE, - allocator - ); - - if (!texData) { - return false; - } - - mTextureClient = new TextureClient(texData, TextureFlags::DEFAULT, allocator); - sp graphicBuffer = texData->GetGraphicBuffer(); - - void* vaddr; - if (graphicBuffer->lock(GraphicBuffer::USAGE_SW_WRITE_OFTEN, - &vaddr) != OK) { - return false; - } - - uint8_t* yChannel = static_cast(vaddr); - gfx::IntSize ySize = aData.mYSize; - int32_t yStride = graphicBuffer->getStride(); - - uint8_t* vChannel = yChannel + (yStride * ySize.height); - gfx::IntSize uvSize = gfx::IntSize(ySize.width / 2, - ySize.height / 2); - // Align to 16 bytes boundary - int32_t uvStride = ((yStride / 2) + 15) & ~0x0F; - uint8_t* uChannel = vChannel + (uvStride * uvSize.height); - - // Memory outside of the image width may not writable. If the stride - // equals to the image width then we can use only one copy. - if (yStride == mData.mYStride && - yStride == ySize.width) { - memcpy(yChannel, mData.mYChannel, yStride * ySize.height); - } else { - for (int i = 0; i < ySize.height; i++) { - memcpy(yChannel + i * yStride, - mData.mYChannel + i * mData.mYStride, - ySize.width); - } - } - if (uvStride == mData.mCbCrStride && - uvStride == uvSize.width) { - memcpy(uChannel, mData.mCbChannel, uvStride * uvSize.height); - memcpy(vChannel, mData.mCrChannel, uvStride * uvSize.height); - } else { - for (int i = 0; i < uvSize.height; i++) { - memcpy(uChannel + i * uvStride, - mData.mCbChannel + i * mData.mCbCrStride, - uvSize.width); - memcpy(vChannel + i * uvStride, - mData.mCrChannel + i * mData.mCbCrStride, - uvSize.width); - } - } - graphicBuffer->unlock(); - // Initialze the channels' addresses. - // Do not cache the addresses when gralloc buffer is not locked. - // gralloc hal could map gralloc buffer only when the buffer is locked, - // though some gralloc hals implementation maps it when it is allocated. - mData.mYChannel = nullptr; - mData.mCrChannel = nullptr; - mData.mCbChannel = nullptr; - return true; -} - -void -GrallocImage::AdoptData(TextureClient* aGraphicBuffer, const gfx::IntSize& aSize) -{ - mTextureClient = aGraphicBuffer; - mSize = aSize; -} - -/** - * Converts YVU420 semi planar frames to RGB565, possibly taking different - * stride values. - * Needed because the Android ColorConverter class assumes that the Y and UV - * channels have equal stride. - */ -static void -ConvertYVU420SPToRGB565(void *aYData, uint32_t aYStride, - void *aUData, void *aVData, uint32_t aUVStride, - void *aOut, - uint32_t aWidth, uint32_t aHeight) -{ - uint8_t *y = (uint8_t*)aYData; - bool isCbCr; - int8_t *uv; - - if (aUData < aVData) { - // The color format is YCbCr - isCbCr = true; - uv = (int8_t*)aUData; - } else { - // The color format is YCrCb - isCbCr = false; - uv = (int8_t*)aVData; - } - - uint16_t *rgb = (uint16_t*)aOut; - - for (size_t i = 0; i < aHeight; i++) { - for (size_t j = 0; j < aWidth; j++) { - int8_t d, e; - - if (isCbCr) { - d = uv[j & ~1] - 128; - e = uv[j | 1] - 128; - } else { - d = uv[j | 1] - 128; - e = uv[j & ~1] - 128; - } - - // Constants taken from https://en.wikipedia.org/wiki/YUV - int32_t r = (298 * y[j] + 409 * e + 128) >> 11; - int32_t g = (298 * y[j] - 100 * d - 208 * e + 128) >> 10; - int32_t b = (298 * y[j] + 516 * d + 128) >> 11; - - r = r > 0x1f ? 0x1f : r < 0 ? 0 : r; - g = g > 0x3f ? 0x3f : g < 0 ? 0 : g; - b = b > 0x1f ? 0x1f : b < 0 ? 0 : b; - - *rgb++ = (uint16_t)(r << 11 | g << 5 | b); - } - - y += aYStride; - if (i % 2) { - uv += aUVStride; - } - } -} - -/** - * Converts the format of vendor-specific YVU420(planar and semi-planar) - * with the help of GraphicBuffer::lockYCbCr. In this way, we can convert - * the YUV color format without awaring actual definition/enumeration - * of vendor formats. - */ -static status_t -ConvertVendorYUVFormatToRGB565(android::sp& aBuffer, - gfx::DataSourceSurface *aSurface, - gfx::DataSourceSurface::MappedSurface *aMappedSurface) -{ - status_t rv = BAD_VALUE; - -#if ANDROID_VERSION >= 18 - android_ycbcr ycbcr; - - // Check if the vendor provides explicit addresses of Y/Cb/Cr buffer from lockYCbCr - rv = aBuffer->lockYCbCr(android::GraphicBuffer::USAGE_SW_READ_OFTEN, &ycbcr); - - if (rv != OK) { - NS_WARNING("Couldn't lock graphic buffer using lockYCbCr()"); - return rv; - } - - GraphicBufferAutoUnlock unlock(aBuffer); - - uint32_t width = aSurface->GetSize().width; - uint32_t height = aSurface->GetSize().height; - - if (ycbcr.chroma_step == 2) { - // From the system/core/include/system/graphics.h - // @chroma_step is the distance in bytes from one chroma pixel value to - // the next. This is 2 bytes for semiplanar (because chroma values are - // interleaved and each chroma value is one byte) and 1 for planar. - ConvertYVU420SPToRGB565(ycbcr.y, ycbcr.ystride, - ycbcr.cb, ycbcr.cr, ycbcr.cstride, - aMappedSurface->mData, - width, height); - } else { - layers::PlanarYCbCrData ycbcrData; - ycbcrData.mYChannel = static_cast(ycbcr.y); - ycbcrData.mYStride = ycbcr.ystride; - ycbcrData.mYSize = aSurface->GetSize(); - ycbcrData.mCbChannel = static_cast(ycbcr.cb); - ycbcrData.mCrChannel = static_cast(ycbcr.cr); - ycbcrData.mCbCrStride = ycbcr.cstride; - ycbcrData.mCbCrSize = aSurface->GetSize() / 2; - ycbcrData.mPicSize = aSurface->GetSize(); - - gfx::ConvertYCbCrToRGB(ycbcrData, - aSurface->GetFormat(), - aSurface->GetSize(), - aMappedSurface->mData, - aMappedSurface->mStride); - } -#endif - - return rv; -} - -static status_t -ConvertOmxYUVFormatToRGB565(android::sp& aBuffer, - gfx::DataSourceSurface *aSurface, - gfx::DataSourceSurface::MappedSurface *aMappedSurface, - const layers::PlanarYCbCrData& aYcbcrData) -{ - uint32_t omxFormat = - GrallocImage::GetOmxFormat(aBuffer->getPixelFormat()); - if (!omxFormat) { - NS_WARNING("Unknown color format"); - return BAD_VALUE; - } - - status_t rv; - uint8_t *buffer; - - rv = aBuffer->lock(android::GraphicBuffer::USAGE_SW_READ_OFTEN, - reinterpret_cast(&buffer)); - if (rv != OK) { - NS_WARNING("Couldn't lock graphic buffer"); - return BAD_VALUE; - } - - GraphicBufferAutoUnlock unlock(aBuffer); - - uint32_t format = aBuffer->getPixelFormat(); - uint32_t width = aSurface->GetSize().width; - uint32_t height = aSurface->GetSize().height; - uint32_t stride = aBuffer->getStride(); - - if (format == GrallocImage::HAL_PIXEL_FORMAT_YCrCb_420_SP_ADRENO) { - // The Adreno hardware decoder aligns image dimensions to a multiple of 32, - // so we have to account for that here - uint32_t alignedWidth = ALIGN(width, 32); - uint32_t alignedHeight = ALIGN(height, 32); - uint32_t uvOffset = ALIGN(alignedHeight * alignedWidth, 4096); - uint32_t uvStride = 2 * ALIGN(width / 2, 32); - ConvertYVU420SPToRGB565(buffer, alignedWidth, - buffer + uvOffset + 1, - buffer + uvOffset, - uvStride, - aMappedSurface->mData, - width, height); - return OK; - } - - if (format == HAL_PIXEL_FORMAT_YCrCb_420_SP) { - uint32_t uvOffset = height * stride; - ConvertYVU420SPToRGB565(buffer, stride, - buffer + uvOffset + 1, - buffer + uvOffset, - stride, - aMappedSurface->mData, - width, height); - return OK; - } - - if (format == HAL_PIXEL_FORMAT_YV12) { - // Depend on platforms, it is possible for HW decoder to output YV12 format. - // It means the mData won't be configured during the SetData API because the - // yuv data has already stored in GraphicBuffer. Here we try to confgiure the - // mData if it doesn't contain valid configuration. - layers::PlanarYCbCrData ycbcrData = aYcbcrData; - if (!ycbcrData.mYChannel) { - ycbcrData.mYChannel = buffer; - ycbcrData.mYSkip = 0; - ycbcrData.mYStride = aBuffer->getStride(); - ycbcrData.mYSize = aSurface->GetSize(); - ycbcrData.mCbSkip = 0; - ycbcrData.mCbCrSize = aSurface->GetSize() / 2; - ycbcrData.mPicSize = aSurface->GetSize(); - ycbcrData.mCrChannel = buffer + ycbcrData.mYStride * aBuffer->getHeight(); - ycbcrData.mCrSkip = 0; - // Align to 16 bytes boundary - ycbcrData.mCbCrStride = ALIGN(ycbcrData.mYStride / 2, 16); - ycbcrData.mCbChannel = ycbcrData.mCrChannel + (ycbcrData.mCbCrStride * aBuffer->getHeight() / 2); - } else { - // Update channels' address. - // Gralloc buffer could map gralloc buffer only when the buffer is locked. - ycbcrData.mYChannel = buffer; - ycbcrData.mCrChannel = buffer + ycbcrData.mYStride * aBuffer->getHeight(); - ycbcrData.mCbChannel = ycbcrData.mCrChannel + (ycbcrData.mCbCrStride * aBuffer->getHeight() / 2); - } - gfx::ConvertYCbCrToRGB(ycbcrData, - aSurface->GetFormat(), - aSurface->GetSize(), - aMappedSurface->mData, - aMappedSurface->mStride); - return OK; - } - - if (format == HAL_PIXEL_FORMAT_RGBA_8888) { - uint32_t* src = (uint32_t*)(buffer); - uint16_t* dest = (uint16_t*)(aMappedSurface->mData); - - // Convert RGBA8888 to RGB565 - for (size_t i = 0; i < width * height; i++) { - uint32_t r = ((*src >> 0 ) & 0xFF); - uint32_t g = ((*src >> 8 ) & 0xFF); - uint32_t b = ((*src >> 16) & 0xFF); - *dest++ = ((r >> 3) << 11) | ((g >> 2) << 5) | ((b >> 3) << 0); - src++; - } - return OK; - } - - android::ColorConverter colorConverter((OMX_COLOR_FORMATTYPE)omxFormat, - OMX_COLOR_Format16bitRGB565); - if (!colorConverter.isValid()) { - NS_WARNING("Invalid color conversion"); - return BAD_VALUE; - } - - uint32_t pixelStride = aMappedSurface->mStride/gfx::BytesPerPixel(gfx::SurfaceFormat::R5G6B5_UINT16); - rv = colorConverter.convert(buffer, width, height, - 0, 0, width - 1, height - 1 /* source crop */, - aMappedSurface->mData, pixelStride, height, - 0, 0, width - 1, height - 1 /* dest crop */); - if (rv) { - NS_WARNING("OMX color conversion failed"); - return BAD_VALUE; - } - - return OK; -} - -already_AddRefed -GetDataSourceSurfaceFrom(android::sp& aGraphicBuffer, - gfx::IntSize aSize, - const layers::PlanarYCbCrData& aYcbcrData) -{ - MOZ_ASSERT(aGraphicBuffer.get()); - - RefPtr surface = - gfx::Factory::CreateDataSourceSurface(aSize, gfx::SurfaceFormat::R5G6B5_UINT16); - if (NS_WARN_IF(!surface)) { - return nullptr; - } - - gfx::DataSourceSurface::MappedSurface mappedSurface; - if (!surface->Map(gfx::DataSourceSurface::WRITE, &mappedSurface)) { - NS_WARNING("Could not map DataSourceSurface"); - return nullptr; - } - - int32_t rv; - rv = ConvertOmxYUVFormatToRGB565(aGraphicBuffer, surface, &mappedSurface, aYcbcrData); - if (rv == OK) { - surface->Unmap(); - return surface.forget(); - } - - rv = ConvertVendorYUVFormatToRGB565(aGraphicBuffer, surface, &mappedSurface); - surface->Unmap(); - if (rv != OK) { - NS_WARNING("Unknown color format"); - return nullptr; - } - - return surface.forget(); -} - -already_AddRefed -GrallocImage::GetAsSourceSurface() -{ - if (!mTextureClient) { - return nullptr; - } - - android::sp graphicBuffer = GetGraphicBuffer(); - - RefPtr surface = - GetDataSourceSurfaceFrom(graphicBuffer, mSize, mData); - - return surface.forget(); -} - -android::sp -GrallocImage::GetGraphicBuffer() const -{ - if (!mTextureClient) { - return nullptr; - } - return static_cast(mTextureClient->GetInternalData())->GetGraphicBuffer(); -} - -void* -GrallocImage::GetNativeBuffer() -{ - if (!mTextureClient) { - return nullptr; - } - android::sp graphicBuffer = GetGraphicBuffer(); - if (!graphicBuffer.get()) { - return nullptr; - } - return graphicBuffer->getNativeBuffer(); -} - -TextureClient* -GrallocImage::GetTextureClient(KnowsCompositor* aForwarder) -{ - return mTextureClient; -} - -} // namespace layers -} // namespace mozilla diff --git a/gfx/layers/GrallocImages.h b/gfx/layers/GrallocImages.h deleted file mode 100644 index 22b4bdc9b883..000000000000 --- a/gfx/layers/GrallocImages.h +++ /dev/null @@ -1,136 +0,0 @@ -/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef GRALLOCIMAGES_H -#define GRALLOCIMAGES_H - -#ifdef MOZ_WIDGET_GONK - -#include "ImageLayers.h" -#include "ImageContainer.h" -#include "mozilla/gfx/Point.h" -#include "mozilla/layers/AtomicRefCountedWithFinalize.h" -#include "mozilla/layers/FenceUtils.h" -#include "mozilla/layers/LayersSurfaces.h" - -#include - -namespace mozilla { -namespace layers { - -class TextureClient; - -already_AddRefed -GetDataSourceSurfaceFrom(android::sp& aGraphicBuffer, - gfx::IntSize aSize, - const layers::PlanarYCbCrData& aYcbcrData); - -/** - * The YUV format supported by Android HAL - * - * 4:2:0 - CbCr width and height is half that of Y. - * - * This format assumes - * - an even width - * - an even height - * - a horizontal stride multiple of 16 pixels - * - a vertical stride equal to the height - * - * y_size = stride * height - * c_size = ALIGN(stride/2, 16) * height/2 - * size = y_size + c_size * 2 - * cr_offset = y_size - * cb_offset = y_size + c_size - * - * The Image that is rendered is the picture region defined by - * mPicX, mPicY and mPicSize. The size of the rendered image is - * mPicSize, not mYSize or mCbCrSize. - */ -class GrallocImage : public RecyclingPlanarYCbCrImage -{ - typedef PlanarYCbCrData Data; - static int32_t sColorIdMap[]; -public: - GrallocImage(); - - virtual ~GrallocImage(); - - /** - * This makes a copy of the data buffers, in order to support functioning - * in all different layer managers. - */ - virtual bool SetData(const Data& aData); - - using RecyclingPlanarYCbCrImage::AdoptData; - /** - * Share the SurfaceDescriptor without making the copy, in order - * to support functioning in all different layer managers. - */ - void AdoptData(TextureClient* aGraphicBuffer, const gfx::IntSize& aSize); - - // From [android 4.0.4]/hardware/msm7k/libgralloc-qsd8k/gralloc_priv.h - enum { - /* OEM specific HAL formats */ - HAL_PIXEL_FORMAT_YCbCr_422_P = 0x102, - HAL_PIXEL_FORMAT_YCbCr_420_P = 0x103, - HAL_PIXEL_FORMAT_YCbCr_420_SP = 0x109, - HAL_PIXEL_FORMAT_YCrCb_420_SP_ADRENO = 0x10A, - HAL_PIXEL_FORMAT_YCbCr_420_SP_TILED = 0x7FA30C03, - HAL_PIXEL_FORMAT_YCbCr_420_SP_VENUS = 0x7FA30C04, - }; - - enum { - GRALLOC_SW_UAGE = android::GraphicBuffer::USAGE_SOFTWARE_MASK, - }; - - virtual already_AddRefed GetAsSourceSurface() override; - - android::sp GetGraphicBuffer() const; - - void* GetNativeBuffer(); - - virtual bool IsValid() { return !!mTextureClient; } - - virtual TextureClient* GetTextureClient(KnowsCompositor* aForwarder) override; - - virtual GrallocImage* AsGrallocImage() override - { - return this; - } - - virtual uint8_t* GetBuffer() - { - return static_cast(GetNativeBuffer()); - } - - int GetUsage() - { - return (static_cast(GetNativeBuffer()))->usage; - } - - static int GetOmxFormat(int aFormat) - { - uint32_t omxFormat = 0; - - for (int i = 0; sColorIdMap[i]; i += 2) { - if (sColorIdMap[i] == aFormat) { - omxFormat = sColorIdMap[i + 1]; - break; - } - } - - return omxFormat; - } - -private: - RefPtr mTextureClient; -}; - -} // namespace layers -} // namespace mozilla - -#endif - -#endif /* GRALLOCIMAGES_H */ diff --git a/gfx/layers/ImageContainer.cpp b/gfx/layers/ImageContainer.cpp index 3ed8cb4eac98..e09e8fd971fe 100644 --- a/gfx/layers/ImageContainer.cpp +++ b/gfx/layers/ImageContainer.cpp @@ -24,9 +24,6 @@ #include "mozilla/gfx/gfxVars.h" #include "nsISupportsUtils.h" // for NS_IF_ADDREF #include "YCbCrUtils.h" // for YCbCr conversions -#ifdef MOZ_WIDGET_GONK -#include "GrallocImages.h" -#endif #include "gfx2DGlue.h" #include "mozilla/gfx/2D.h" @@ -178,18 +175,6 @@ ImageContainer::CreateSharedRGBImage() return new SharedRGBImage(mImageClient); } -#ifdef MOZ_WIDGET_GONK -RefPtr -ImageContainer::CreateOverlayImage() -{ - ReentrantMonitorAutoEnter mon(mReentrantMonitor); - if (!mImageClient || !mImageClient->AsImageClientSingle()) { - return nullptr; - } - return new OverlayImage(); -} -#endif - void ImageContainer::SetCurrentImageInternal(const nsTArray& aImages) { diff --git a/gfx/layers/ImageContainer.h b/gfx/layers/ImageContainer.h index 38d000ce668d..a2f404e17925 100644 --- a/gfx/layers/ImageContainer.h +++ b/gfx/layers/ImageContainer.h @@ -152,7 +152,6 @@ class SharedPlanarYCbCrImage; class PlanarYCbCrImage; class TextureClient; class KnowsCompositor; -class GrallocImage; class NVImage; struct ImageBackendData @@ -171,8 +170,6 @@ class SharedRGBImage; class SurfaceTextureImage; #elif defined(XP_MACOSX) class MacIOSurfaceImage; -#elif defined(MOZ_WIDGET_GONK) -class OverlayImage; #endif /** @@ -215,11 +212,6 @@ public: virtual already_AddRefed GetAsSourceSurface() = 0; - virtual GrallocImage* AsGrallocImage() - { - return nullptr; - } - virtual bool IsValid() { return true; } virtual uint8_t* GetBuffer() { return nullptr; } @@ -385,10 +377,6 @@ public: // Factory methods for shared image types. RefPtr CreateSharedRGBImage(); -#ifdef MOZ_WIDGET_GONK - RefPtr CreateOverlayImage(); -#endif - struct NonOwningImage { explicit NonOwningImage(Image* aImage = nullptr, TimeStamp aTimeStamp = TimeStamp(), @@ -909,54 +897,6 @@ private: TextureFlags mTextureFlags; }; -#ifdef MOZ_WIDGET_GONK -class OverlayImage : public Image { - /** - * OverlayImage is a special Image type that does not hold any buffer. - * It only hold an Id as identifier to the real content of the Image. - * Therefore, OverlayImage must be handled by some specialized hardware(e.g. HWC) - * to show its content. - */ -public: - struct Data { - int32_t mOverlayId; - gfx::IntSize mSize; - }; - - struct SidebandStreamData { - GonkNativeHandle mStream; - gfx::IntSize mSize; - }; - - OverlayImage() : Image(nullptr, ImageFormat::OVERLAY_IMAGE) { mOverlayId = INVALID_OVERLAY; } - - void SetData(const Data& aData) - { - mOverlayId = aData.mOverlayId; - mSize = aData.mSize; - mSidebandStream = GonkNativeHandle(); - } - - void SetData(const SidebandStreamData& aData) - { - mSidebandStream = aData.mStream; - mSize = aData.mSize; - mOverlayId = INVALID_OVERLAY; - } - - already_AddRefed GetAsSourceSurface() { return nullptr; } ; - int32_t GetOverlayId() { return mOverlayId; } - GonkNativeHandle& GetSidebandStream() { return mSidebandStream; } - - gfx::IntSize GetSize() { return mSize; } - -private: - int32_t mOverlayId; - GonkNativeHandle mSidebandStream; - gfx::IntSize mSize; -}; -#endif - } // namespace layers } // namespace mozilla diff --git a/gfx/layers/LayerScope.cpp b/gfx/layers/LayerScope.cpp index 0c536ce29c6e..fefe8a052cdf 100644 --- a/gfx/layers/LayerScope.cpp +++ b/gfx/layers/LayerScope.cpp @@ -461,101 +461,6 @@ protected: int64_t mFrameStamp; }; -#ifdef MOZ_WIDGET_GONK -// B2G optimization. -class DebugGLGraphicBuffer final: public DebugGLData { -public: - DebugGLGraphicBuffer(void *layerRef, - GLenum target, - GLuint name, - const LayerRenderState &aState, - bool aIsMask, - UniquePtr aPacket) - : DebugGLData(Packet::TEXTURE), - mLayerRef(reinterpret_cast(layerRef)), - mTarget(target), - mName(name), - mState(aState), - mIsMask(aIsMask), - mPacket(Move(aPacket)) - { - } - - virtual bool Write() override { - return WriteToStream(*mPacket); - } - - bool TryPack(bool packData) { - android::sp buffer = mState.mSurface; - MOZ_ASSERT(buffer.get()); - - mPacket->set_type(mDataType); - TexturePacket* tp = mPacket->mutable_texture(); - tp->set_layerref(mLayerRef); - tp->set_name(mName); - tp->set_target(mTarget); - tp->set_ismask(mIsMask); - - int pFormat = buffer->getPixelFormat(); - if (HAL_PIXEL_FORMAT_RGBA_8888 != pFormat && - HAL_PIXEL_FORMAT_RGBX_8888 != pFormat) { - return false; - } - - int32_t stride = buffer->getStride() * 4; - int32_t height = buffer->getHeight(); - int32_t width = buffer->getWidth(); - int32_t sourceSize = stride * height; - if (sourceSize <= 0) { - return false; - } - - uint32_t dFormat = mState.FormatRBSwapped() ? - LOCAL_GL_BGRA : LOCAL_GL_RGBA; - tp->set_dataformat(dFormat); - tp->set_dataformat((1 << 16 | tp->dataformat())); - tp->set_width(width); - tp->set_height(height); - tp->set_stride(stride); - - if (packData) { - uint8_t* grallocData = nullptr; - if (BAD_VALUE == buffer->lock(GRALLOC_USAGE_SW_READ_OFTEN | - GRALLOC_USAGE_SW_WRITE_NEVER, - reinterpret_cast(&grallocData))) - { - return false; - } - // Do not return before buffer->unlock(); - auto compressedData = - MakeUnique(LZ4::maxCompressedSize(sourceSize)); - int compressedSize = LZ4::compress((char*)grallocData, - sourceSize, - compressedData.get()); - - if (compressedSize > 0) { - tp->set_data(compressedData.get(), compressedSize); - } else { - buffer->unlock(); - return false; - } - - buffer->unlock(); - } - - return true; - } - -private: - uint64_t mLayerRef; - GLenum mTarget; - GLuint mName; - const LayerRenderState &mState; - bool mIsMask; - UniquePtr mPacket; -}; -#endif - class DebugGLTextureData final: public DebugGLData { public: DebugGLTextureData(GLContext* cx, @@ -947,13 +852,6 @@ private: bool aFlipY, bool aIsMask, UniquePtr aPacket); -#ifdef MOZ_WIDGET_GONK - static bool SendGraphicBuffer(GLContext* aGLContext, - void* aLayerRef, - TextureSourceOGL* aSource, - const TexturedEffect* aEffect, - bool aIsMask); -#endif static void SetAndSendTexture(GLContext* aGLContext, void* aLayerRef, TextureSourceOGL* aSource, @@ -1110,51 +1008,6 @@ SenderHelper::SendTextureSource(GLContext* aGLContext, } -#ifdef MOZ_WIDGET_GONK -bool -SenderHelper::SendGraphicBuffer(GLContext* aGLContext, - void* aLayerRef, - TextureSourceOGL* aSource, - const TexturedEffect* aEffect, - bool aIsMask) { - GLuint texID = GetTextureID(aGLContext, aSource); - if (HasTextureIdBeenSent(texID)) { - return false; - } - if (!aEffect->mState.mSurface.get()) { - return false; - } - - // Expose packet creation here, so we could dump primary texture effect attributes. - auto packet = MakeUnique(); - layerscope::TexturePacket* texturePacket = packet->mutable_texture(); - texturePacket->set_mpremultiplied(aEffect->mPremultiplied); - DumpFilter(texturePacket, aEffect->mSamplingFilter); - DumpRect(texturePacket->mutable_mtexturecoords(), aEffect->mTextureCoords); - - GLenum target = aSource->GetTextureTarget(); - mozilla::UniquePtr package = - MakeUnique(aLayerRef, target, texID, aEffect->mState, aIsMask, Move(packet)); - - // The texure content in this TexureHost is not altered, - // we don't need to send it again. - bool changed = gLayerScopeManager.GetContentMonitor()->IsChangedOrNew( - aEffect->mState.mTexture); - if (!package->TryPack(changed)) { - return false; - } - - // Transfer ownership to SocketManager. - gLayerScopeManager.GetSocketManager()->AppendDebugData(package.release()); - sSentTextureIds.push_back(texID); - - gLayerScopeManager.CurrentSession().mTexIDs.push_back(texID); - - gLayerScopeManager.GetContentMonitor()->ClearChangedHost(aEffect->mState.mTexture); - return true; -} -#endif - void SenderHelper::SetAndSendTexture(GLContext* aGLContext, void* aLayerRef, @@ -1180,12 +1033,6 @@ SenderHelper::SendTexturedEffect(GLContext* aGLContext, return; } -#ifdef MOZ_WIDGET_GONK - if (SendGraphicBuffer(aGLContext, aLayerRef, source, aEffect, false)) { - return; - } -#endif - // Fallback texture sending path. SetAndSendTexture(aGLContext, aLayerRef, source, aEffect); } diff --git a/gfx/layers/LayersLogging.cpp b/gfx/layers/LayersLogging.cpp index 5b45372e5246..3d11643603d9 100644 --- a/gfx/layers/LayersLogging.cpp +++ b/gfx/layers/LayersLogging.cpp @@ -366,8 +366,6 @@ AppendToString(std::stringstream& aStream, ImageFormat format, aStream << "ImageFormat::PLANAR_YCBCR"; break; case ImageFormat::GRALLOC_PLANAR_YCBCR: aStream << "ImageFormat::GRALLOC_PLANAR_YCBCR"; break; - case ImageFormat::GONK_CAMERA_IMAGE: - aStream << "ImageFormat::GONK_CAMERA_IMAGE"; break; case ImageFormat::SHARED_RGB: aStream << "ImageFormat::SHARED_RGB"; break; case ImageFormat::CAIRO_SURFACE: diff --git a/gfx/layers/LayersTypes.cpp b/gfx/layers/LayersTypes.cpp index d94abb38eb06..a79f4455441d 100644 --- a/gfx/layers/LayersTypes.cpp +++ b/gfx/layers/LayersTypes.cpp @@ -5,21 +5,12 @@ #include "LayersTypes.h" -#ifdef MOZ_WIDGET_GONK -#include -#endif - namespace mozilla { namespace layers { LayerRenderState::LayerRenderState() : mFlags(LayerRenderStateFlags::LAYER_RENDER_STATE_DEFAULT) , mHasOwnOffset(false) -#ifdef MOZ_WIDGET_GONK - , mSurface(nullptr) - , mOverlayId(INVALID_OVERLAY) - , mTexture(nullptr) -#endif { } @@ -27,12 +18,6 @@ LayerRenderState::LayerRenderState(const LayerRenderState& aOther) : mFlags(aOther.mFlags) , mHasOwnOffset(aOther.mHasOwnOffset) , mOffset(aOther.mOffset) -#ifdef MOZ_WIDGET_GONK - , mSurface(aOther.mSurface) - , mOverlayId(aOther.mOverlayId) - , mSize(aOther.mSize) - , mTexture(aOther.mTexture) -#endif { } @@ -40,19 +25,5 @@ LayerRenderState::~LayerRenderState() { } -#ifdef MOZ_WIDGET_GONK -LayerRenderState::LayerRenderState(android::GraphicBuffer* aSurface, - const gfx::IntSize& aSize, - LayerRenderStateFlags aFlags, - TextureHost* aTexture) - : mFlags(aFlags) - , mHasOwnOffset(false) - , mSurface(aSurface) - , mOverlayId(INVALID_OVERLAY) - , mSize(aSize) - , mTexture(aTexture) -{} -#endif - } // namespace layers } // namespace mozilla diff --git a/gfx/layers/LayersTypes.h b/gfx/layers/LayersTypes.h index a69c0916d553..8d52ed2fd8b5 100644 --- a/gfx/layers/LayersTypes.h +++ b/gfx/layers/LayersTypes.h @@ -8,11 +8,6 @@ #include // for uint32_t -#ifdef MOZ_WIDGET_GONK -#include -#include "mozilla/layers/GonkNativeHandle.h" -#endif - #include "Units.h" #include "mozilla/gfx/Point.h" // for IntPoint #include "mozilla/TypedEnumBits.h" @@ -86,8 +81,6 @@ enum class LayerRenderStateFlags : int8_t { }; MOZ_MAKE_ENUM_CLASS_BITWISE_OPERATORS(LayerRenderStateFlags) -// The 'ifdef MOZ_WIDGET_GONK' sadness here is because we don't want to include -// android::sp unless we have to. struct LayerRenderState { // Constructors and destructor are defined in LayersTypes.cpp so we don't // have to pull in a definition for GraphicBuffer.h here. In KK at least, @@ -97,36 +90,6 @@ struct LayerRenderState { LayerRenderState(const LayerRenderState& aOther); ~LayerRenderState(); -#ifdef MOZ_WIDGET_GONK - LayerRenderState(android::GraphicBuffer* aSurface, - const gfx::IntSize& aSize, - LayerRenderStateFlags aFlags, - TextureHost* aTexture); - - bool OriginBottomLeft() const - { return bool(mFlags & LayerRenderStateFlags::ORIGIN_BOTTOM_LEFT); } - - bool BufferRotated() const - { return bool(mFlags & LayerRenderStateFlags::BUFFER_ROTATION); } - - bool FormatRBSwapped() const - { return bool(mFlags & LayerRenderStateFlags::FORMAT_RB_SWAP); } - - void SetOverlayId(const int32_t& aId) - { mOverlayId = aId; } - - void SetSidebandStream(const GonkNativeHandle& aStream) - { - mSidebandStream = aStream; - } - - android::GraphicBuffer* GetGrallocBuffer() const - { return mSurface.get(); } - - const GonkNativeHandle& GetSidebandStream() - { return mSidebandStream; } -#endif - void SetOffset(const nsIntPoint& aOffset) { mOffset = aOffset; @@ -139,17 +102,6 @@ struct LayerRenderState { bool mHasOwnOffset; // the location of the layer's origin on mSurface nsIntPoint mOffset; - // The 'ifdef MOZ_WIDGET_GONK' sadness here is because we don't want to include - // android::sp unless we have to. -#ifdef MOZ_WIDGET_GONK - // surface to render - android::sp mSurface; - int32_t mOverlayId; - // size of mSurface - gfx::IntSize mSize; - TextureHost* mTexture; - GonkNativeHandle mSidebandStream; -#endif }; enum class ScaleMode : int8_t { diff --git a/gfx/layers/RotatedBuffer.cpp b/gfx/layers/RotatedBuffer.cpp index 8fdd3a0ce474..92252fb0446e 100644 --- a/gfx/layers/RotatedBuffer.cpp +++ b/gfx/layers/RotatedBuffer.cpp @@ -406,20 +406,6 @@ ComputeBufferRect(const IntRect& aRequestedRect) // rendering glitch, and guarantees image rows can be SIMD'd for // even r5g6b5 surfaces pretty much everywhere. rect.width = std::max(aRequestedRect.width, 64); -#ifdef MOZ_WIDGET_GONK - // Set a minumum height to guarantee a minumum height of buffers we - // allocate. Some GL implementations fail to render gralloc textures - // with a height 9px-16px. It happens on Adreno 200. Adreno 320 does not - // have this problem. 32 is choosed as alignment of gralloc buffers. - // See Bug 873937. - // Increase the height only when the requested height is more than 0. - // See Bug 895976. - // XXX it might be better to disable it on the gpu that does not have - // the height problem. - if (rect.height > 0) { - rect.height = std::max(aRequestedRect.height, 32); - } -#endif return rect; } @@ -480,7 +466,7 @@ RotatedContentBuffer::BeginPaint(PaintedLayer* aLayer, } if (mode == SurfaceMode::SURFACE_COMPONENT_ALPHA) { -#if defined(MOZ_GFX_OPTIMIZE_MOBILE) || defined(MOZ_WIDGET_GONK) +#if defined(MOZ_GFX_OPTIMIZE_MOBILE) mode = SurfaceMode::SURFACE_SINGLE_CHANNEL_ALPHA; #else if (!aLayer->GetParent() || diff --git a/gfx/layers/TiledLayerBuffer.h b/gfx/layers/TiledLayerBuffer.h index e5271c8b3f2f..c1efcc39e059 100644 --- a/gfx/layers/TiledLayerBuffer.h +++ b/gfx/layers/TiledLayerBuffer.h @@ -22,10 +22,6 @@ #include "nsRegion.h" // for nsIntRegion #include "nsTArray.h" // for nsTArray -#if defined(MOZ_WIDGET_GONK) && ANDROID_VERSION >= 17 -#include -#endif - namespace mozilla { struct TileUnit {}; diff --git a/gfx/layers/basic/GrallocTextureHostBasic.cpp b/gfx/layers/basic/GrallocTextureHostBasic.cpp deleted file mode 100644 index a157eecacec4..000000000000 --- a/gfx/layers/basic/GrallocTextureHostBasic.cpp +++ /dev/null @@ -1,306 +0,0 @@ -/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "GrallocTextureHostBasic.h" -#include "GrallocImages.h" // for GetDataSourceSurfaceFrom() -#include "mozilla/layers/SharedBufferManagerParent.h" - -#if ANDROID_VERSION >= 17 -#include -#endif - -namespace mozilla { -namespace layers { - -static gfx::SurfaceFormat -HalFormatToSurfaceFormat(int aHalFormat, TextureFlags aFlags) -{ - bool swapRB = bool(aFlags & TextureFlags::RB_SWAPPED); - switch (aHalFormat) { - case android::PIXEL_FORMAT_BGRA_8888: - return swapRB ? gfx::SurfaceFormat::R8G8B8A8 : gfx::SurfaceFormat::B8G8R8A8; - case android::PIXEL_FORMAT_RGBA_8888: - return swapRB ? gfx::SurfaceFormat::B8G8R8A8 : gfx::SurfaceFormat::R8G8B8A8; - case android::PIXEL_FORMAT_RGBX_8888: - return swapRB ? gfx::SurfaceFormat::B8G8R8X8 : gfx::SurfaceFormat::R8G8B8X8; - case android::PIXEL_FORMAT_RGB_565: - return gfx::SurfaceFormat::R5G6B5_UINT16; - case HAL_PIXEL_FORMAT_YCbCr_422_SP: - case HAL_PIXEL_FORMAT_YCrCb_420_SP: - case HAL_PIXEL_FORMAT_YCbCr_422_I: - case GrallocImage::HAL_PIXEL_FORMAT_YCbCr_420_SP_TILED: - case GrallocImage::HAL_PIXEL_FORMAT_YCbCr_420_SP_VENUS: - case HAL_PIXEL_FORMAT_YV12: -#if defined(MOZ_WIDGET_GONK) && ANDROID_VERSION >= 17 - case HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED: -#endif - // Needs convert to RGB565 - return gfx::SurfaceFormat::R5G6B5_UINT16; - default: - if (aHalFormat >= 0x100 && aHalFormat <= 0x1FF) { - // Reserved range for HAL specific formats. - // Needs convert to RGB565 - return gfx::SurfaceFormat::R5G6B5_UINT16; - } else { - MOZ_CRASH("GFX: Unhandled HAL pixel format"); - return gfx::SurfaceFormat::UNKNOWN; // not reached - } - } -} - -static bool -NeedsConvertFromYUVtoRGB565(int aHalFormat) -{ - switch (aHalFormat) { - case android::PIXEL_FORMAT_BGRA_8888: - case android::PIXEL_FORMAT_RGBA_8888: - case android::PIXEL_FORMAT_RGBX_8888: - case android::PIXEL_FORMAT_RGB_565: - return false; - case HAL_PIXEL_FORMAT_YCbCr_422_SP: - case HAL_PIXEL_FORMAT_YCrCb_420_SP: - case HAL_PIXEL_FORMAT_YCbCr_422_I: - case GrallocImage::HAL_PIXEL_FORMAT_YCbCr_420_SP_TILED: - case GrallocImage::HAL_PIXEL_FORMAT_YCbCr_420_SP_VENUS: - case HAL_PIXEL_FORMAT_YV12: -#if defined(MOZ_WIDGET_GONK) && ANDROID_VERSION >= 17 - case HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED: -#endif - return true; - default: - if (aHalFormat >= 0x100 && aHalFormat <= 0x1FF) { - // Reserved range for HAL specific formats. - return true; - } else { - MOZ_CRASH("GFX: Unhandled HAL pixel format YUV"); - return false; // not reached - } - } -} - -GrallocTextureHostBasic::GrallocTextureHostBasic( - TextureFlags aFlags, - const SurfaceDescriptorGralloc& aDescriptor) - : TextureHost(aFlags) - , mGrallocHandle(aDescriptor) - , mSize(0, 0) - , mCropSize(0, 0) - , mFormat(gfx::SurfaceFormat::UNKNOWN) - , mIsOpaque(aDescriptor.isOpaque()) -{ - android::GraphicBuffer* grallocBuffer = GetGraphicBufferFromDesc(mGrallocHandle).get(); - MOZ_ASSERT(grallocBuffer); - - if (grallocBuffer) { - mFormat = - HalFormatToSurfaceFormat(grallocBuffer->getPixelFormat(), - aFlags & TextureFlags::RB_SWAPPED); - mSize = gfx::IntSize(grallocBuffer->getWidth(), grallocBuffer->getHeight()); - mCropSize = mSize; - } else { - printf_stderr("gralloc buffer is nullptr\n"); - } -} - -bool -GrallocTextureHostBasic::Lock() -{ - if (!mCompositor || !IsValid()) { - return false; - } - - if (mTextureSource) { - return true; - } - - android::sp graphicBuffer = - GetGraphicBufferFromDesc(mGrallocHandle); - MOZ_ASSERT(graphicBuffer.get()); - - RefPtr surf; - if (NeedsConvertFromYUVtoRGB565(graphicBuffer->getPixelFormat())) { - PlanarYCbCrData ycbcrData; - surf = GetDataSourceSurfaceFrom(graphicBuffer, - mCropSize, - ycbcrData); - } else { - uint32_t usage = GRALLOC_USAGE_SW_READ_OFTEN; - int32_t rv = graphicBuffer->lock(usage, - reinterpret_cast(&mMappedBuffer)); - if (rv) { - mMappedBuffer = nullptr; - NS_WARNING("Couldn't lock graphic buffer"); - return false; - } - surf = gfx::Factory::CreateWrappingDataSourceSurface( - mMappedBuffer, - graphicBuffer->getStride() * gfx::BytesPerPixel(mFormat), - mCropSize, - mFormat); - } - if (surf) { - mTextureSource = mCompositor->CreateDataTextureSource(mFlags); - mTextureSource->Update(surf, nullptr); - return true; - } - mMappedBuffer = nullptr; - return false; -} - -bool -GrallocTextureHostBasic::IsValid() const -{ - android::GraphicBuffer* graphicBuffer = GetGraphicBufferFromDesc(mGrallocHandle).get(); - return graphicBuffer != nullptr; -} - -bool -GrallocTextureHostBasic::BindTextureSource(CompositableTextureSourceRef& aTexture) -{ - aTexture = mTextureSource; - return !!aTexture; -} - -void -GrallocTextureHostBasic::UnbindTextureSource() -{ - TextureHost::UnbindTextureSource(); - ClearTextureSource(); -} - -void -GrallocTextureHostBasic::ClearTextureSource() -{ - mTextureSource = nullptr; - if (mMappedBuffer) { - android::GraphicBuffer* graphicBuffer = GetGraphicBufferFromDesc(mGrallocHandle).get(); - MOZ_ASSERT(graphicBuffer); - mMappedBuffer = nullptr; - graphicBuffer->unlock(); - } -} - -void -GrallocTextureHostBasic::SetCompositor(Compositor* aCompositor) -{ - BasicCompositor* compositor = AssertBasicCompositor(aCompositor); - if (!compositor) { - return; - } - - mCompositor = compositor; - if (mTextureSource) { - mTextureSource->SetCompositor(compositor); - } -} - -Compositor* -GrallocTextureHostBasic::GetCompositor() -{ - return mCompositor; -} - -gfx::SurfaceFormat -GrallocTextureHostBasic::GetFormat() const { - return mFormat; -} - -void -GrallocTextureHostBasic::WaitAcquireFenceHandleSyncComplete() -{ - if (!mAcquireFenceHandle.IsValid()) { - return; - } - -#if ANDROID_VERSION >= 17 - RefPtr fdObj = mAcquireFenceHandle.GetAndResetFdObj(); - android::sp fence( - new android::Fence(fdObj->GetAndResetFd())); - - // Wait fece complete with timeout. - // If a source of the fence becomes invalid because of error, - // fene complete is not signaled. See Bug 1061435. - int rv = fence->wait(400 /*400 msec*/); - if (rv != android::OK) { - NS_ERROR("failed to wait fence complete"); - } -#endif -} - -void -GrallocTextureHostBasic::SetCropRect(nsIntRect aCropRect) -{ - MOZ_ASSERT(aCropRect.TopLeft() == gfx::IntPoint(0, 0)); - MOZ_ASSERT(!aCropRect.IsEmpty()); - MOZ_ASSERT(aCropRect.width <= mSize.width); - MOZ_ASSERT(aCropRect.height <= mSize.height); - - gfx::IntSize cropSize(aCropRect.width, aCropRect.height); - if (mCropSize == cropSize) { - return; - } - - mCropSize = cropSize; - ClearTextureSource(); -} - -void -GrallocTextureHostBasic::DeallocateSharedData() -{ - ClearTextureSource(); - - if (mGrallocHandle.buffer().type() != MaybeMagicGrallocBufferHandle::Tnull_t) { - MaybeMagicGrallocBufferHandle handle = mGrallocHandle.buffer(); - base::ProcessId owner; - if (handle.type() == MaybeMagicGrallocBufferHandle::TGrallocBufferRef) { - owner = handle.get_GrallocBufferRef().mOwner; - } - else { - owner = handle.get_MagicGrallocBufferHandle().mRef.mOwner; - } - - SharedBufferManagerParent::DropGrallocBuffer(owner, mGrallocHandle); - } -} - -void -GrallocTextureHostBasic::ForgetSharedData() -{ - ClearTextureSource(); -} - -void -GrallocTextureHostBasic::DeallocateDeviceData() -{ - ClearTextureSource(); -} - -LayerRenderState -GrallocTextureHostBasic::GetRenderState() -{ - android::GraphicBuffer* graphicBuffer = GetGraphicBufferFromDesc(mGrallocHandle).get(); - - if (graphicBuffer) { - LayerRenderStateFlags flags = LayerRenderStateFlags::LAYER_RENDER_STATE_DEFAULT; - if (mIsOpaque) { - flags |= LayerRenderStateFlags::OPAQUE; - } - if (mFlags & TextureFlags::ORIGIN_BOTTOM_LEFT) { - flags |= LayerRenderStateFlags::ORIGIN_BOTTOM_LEFT; - } - if (mFlags & TextureFlags::RB_SWAPPED) { - flags |= LayerRenderStateFlags::FORMAT_RB_SWAP; - } - return LayerRenderState(graphicBuffer, - mCropSize, - flags, - this); - } - - return LayerRenderState(); -} - -} // namespace layers -} // namespace mozilla diff --git a/gfx/layers/basic/GrallocTextureHostBasic.h b/gfx/layers/basic/GrallocTextureHostBasic.h deleted file mode 100644 index abae76f014b2..000000000000 --- a/gfx/layers/basic/GrallocTextureHostBasic.h +++ /dev/null @@ -1,88 +0,0 @@ -/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef MOZILLA_GFX_GRALLOCTEXTUREHOST_BASIC_H -#define MOZILLA_GFX_GRALLOCTEXTUREHOST_BASIC_H - -#include "mozilla/layers/BasicCompositor.h" -#include "mozilla/layers/ShadowLayerUtilsGralloc.h" -#include "mozilla/layers/TextureHostBasic.h" - -namespace mozilla { -namespace layers { - -class BasicCompositor; - -/** - * A TextureHost for shared gralloc - * - * Most of the logic actually happens in GrallocTextureSourceBasic. - */ -class GrallocTextureHostBasic : public TextureHost -{ -public: - GrallocTextureHostBasic(TextureFlags aFlags, - const SurfaceDescriptorGralloc& aDescriptor); - - virtual void SetCompositor(Compositor* aCompositor) override; - - virtual Compositor* GetCompositor() override; - - virtual bool Lock() override; - - virtual gfx::SurfaceFormat GetFormat() const override; - - virtual bool BindTextureSource(CompositableTextureSourceRef& aTexture) override; - - virtual void UnbindTextureSource() override; - - virtual already_AddRefed GetAsSurface() override - { - return nullptr; // XXX - implement this (for MOZ_DUMP_PAINTING) - } - - virtual void WaitAcquireFenceHandleSyncComplete() override; - - virtual gfx::IntSize GetSize() const override { return mCropSize; } - - virtual void SetCropRect(nsIntRect aCropRect) override; - - virtual void DeallocateSharedData() override; - - virtual void ForgetSharedData() override; - - virtual void DeallocateDeviceData() override; - - virtual LayerRenderState GetRenderState() override; - - bool IsValid() const; - - void ClearTextureSource(); - -#ifdef MOZ_LAYERS_HAVE_LOG - virtual const char* Name() override { return "GrallocTextureHostBasic"; } -#endif - -protected: - RefPtr mCompositor; - RefPtr mTextureSource; - SurfaceDescriptorGralloc mGrallocHandle; - // gralloc buffer size. - gfx::IntSize mSize; - // Size reported by TextureClient, can be different in some cases (video?), - // used by LayerRenderState. - gfx::IntSize mCropSize; - gfx::SurfaceFormat mFormat; - bool mIsOpaque; - /** - * Points to a mapped gralloc buffer when TextureSource is valid. - */ - uint8_t* mMappedBuffer; -}; - -} // namespace layers -} // namespace mozilla - -#endif // MOZILLA_GFX_GRALLOCTEXTUREHOST_BASIC_H diff --git a/gfx/layers/basic/TextureHostBasic.cpp b/gfx/layers/basic/TextureHostBasic.cpp index 3207ffa781d5..8058e43efca2 100644 --- a/gfx/layers/basic/TextureHostBasic.cpp +++ b/gfx/layers/basic/TextureHostBasic.cpp @@ -7,9 +7,6 @@ #ifdef XP_MACOSX #include "MacIOSurfaceTextureHostBasic.h" #endif -#ifdef MOZ_WIDGET_GONK -#include "GrallocTextureHostBasic.h" -#endif using namespace mozilla::gl; using namespace mozilla::gfx; @@ -28,13 +25,6 @@ CreateTextureHostBasic(const SurfaceDescriptor& aDesc, aDesc.get_SurfaceDescriptorMacIOSurface(); return MakeAndAddRef(aFlags, desc); } -#endif -#ifdef MOZ_WIDGET_GONK - if (aDesc.type() == SurfaceDescriptor::TSurfaceDescriptorGralloc) { - const SurfaceDescriptorGralloc& desc = - aDesc.get_SurfaceDescriptorGralloc(); - return MakeAndAddRef(aFlags, desc); - } #endif return CreateBackendIndependentTextureHost(aDesc, aDeallocator, aFlags); } diff --git a/gfx/layers/client/CanvasClient.cpp b/gfx/layers/client/CanvasClient.cpp index ae499c4cf044..40513984e273 100644 --- a/gfx/layers/client/CanvasClient.cpp +++ b/gfx/layers/client/CanvasClient.cpp @@ -17,7 +17,6 @@ #include "mozilla/layers/AsyncCanvasRenderer.h" #include "mozilla/layers/CompositableForwarder.h" #include "mozilla/layers/CompositorBridgeChild.h" // for CompositorBridgeChild -#include "mozilla/layers/GrallocTextureClient.h" #include "mozilla/layers/LayersTypes.h" #include "mozilla/layers/TextureClient.h" // for TextureClient, etc #include "mozilla/layers/TextureClientOGL.h" diff --git a/gfx/layers/client/ClientLayerManager.cpp b/gfx/layers/client/ClientLayerManager.cpp index 69bb63cf202a..bdc7a3ed6c9a 100644 --- a/gfx/layers/client/ClientLayerManager.cpp +++ b/gfx/layers/client/ClientLayerManager.cpp @@ -238,7 +238,7 @@ ClientLayerManager::BeginTransactionWithTarget(gfxContext* aTarget) // // Desktop does not support async zoom yet, so we ignore this for those // platforms. -#if defined(MOZ_WIDGET_ANDROID) || defined(MOZ_WIDGET_GONK) || defined(MOZ_WIDGET_UIKIT) +#if defined(MOZ_WIDGET_ANDROID) || defined(MOZ_WIDGET_UIKIT) if (mWidget && mWidget->GetOwningTabChild()) { mCompositorMightResample = AsyncPanZoomEnabled(); } diff --git a/gfx/layers/client/ClientTiledPaintedLayer.cpp b/gfx/layers/client/ClientTiledPaintedLayer.cpp index 5eb52cae8768..5a07681f6ded 100644 --- a/gfx/layers/client/ClientTiledPaintedLayer.cpp +++ b/gfx/layers/client/ClientTiledPaintedLayer.cpp @@ -150,7 +150,7 @@ ClientTiledPaintedLayer::BeginPaint() if (!displayPortAncestor || !scrollAncestor) { // No displayport or scroll ancestor, so we can't do progressive rendering. -#if defined(MOZ_WIDGET_ANDROID) || defined(MOZ_WIDGET_GONK) +#if defined(MOZ_WIDGET_ANDROID) // Both Android and b2g on phones are guaranteed to have a displayport set, so this // should never happen. NS_WARNING("Tiled PaintedLayer with no scrollable container ancestor"); diff --git a/gfx/layers/client/ImageClient.cpp b/gfx/layers/client/ImageClient.cpp index 52c8018dc355..7a4b6bbf103a 100644 --- a/gfx/layers/client/ImageClient.cpp +++ b/gfx/layers/client/ImageClient.cpp @@ -33,10 +33,6 @@ #include "nsISupportsImpl.h" // for Image::Release, etc #include "nsRect.h" // for mozilla::gfx::IntRect -#ifdef MOZ_WIDGET_GONK -#include "GrallocImages.h" -#endif - namespace mozilla { namespace layers { @@ -222,28 +218,6 @@ ImageClientSingle::UpdateImage(ImageContainer* aContainer, uint32_t aContentFlag for (auto& img : images) { Image* image = img.mImage; -#ifdef MOZ_WIDGET_GONK - if (image->GetFormat() == ImageFormat::OVERLAY_IMAGE) { - OverlayImage* overlayImage = static_cast(image); - OverlaySource source; - if (overlayImage->GetSidebandStream().IsValid()) { - // Duplicate GonkNativeHandle::NhObj for ipc, - // since ParamTraits::Write() absorbs native_handle_t. - RefPtr nhObj = overlayImage->GetSidebandStream().GetDupNhObj(); - GonkNativeHandle handle(nhObj); - if (!handle.IsValid()) { - return false; - } - source.handle() = OverlayHandle(handle); - } else { - source.handle() = OverlayHandle(overlayImage->GetOverlayId()); - } - source.size() = overlayImage->GetSize(); - GetForwarder()->UseOverlaySource(this, source, image->GetPictureRect()); - continue; - } -#endif - RefPtr texture = image->GetTextureClient(GetForwarder()); const bool hasTextureClient = !!texture; diff --git a/gfx/layers/client/TextureClient.cpp b/gfx/layers/client/TextureClient.cpp index 92f621650799..961d937cb7ce 100644 --- a/gfx/layers/client/TextureClient.cpp +++ b/gfx/layers/client/TextureClient.cpp @@ -53,11 +53,6 @@ #include "mozilla/layers/MacIOSurfaceTextureClientOGL.h" #endif -#ifdef MOZ_WIDGET_GONK -#include -#include "mozilla/layers/GrallocTextureClient.h" -#endif - #if 0 #define RECYCLE_LOG(...) printf_stderr(__VA_ARGS__) #else @@ -726,13 +721,6 @@ TextureClient::WaitForBufferOwnership(bool aWaitReleaseFence) if (mFenceHandleWaiter) { mFenceHandleWaiter->WaitComplete(); } - -#if defined(MOZ_WIDGET_GONK) && ANDROID_VERSION < 21 - if (aWaitReleaseFence && mReleaseFenceHandle.IsValid()) { - mData->WaitForFence(&mReleaseFenceHandle); - mReleaseFenceHandle = FenceHandle(); - } -#endif } // static @@ -1131,13 +1119,6 @@ TextureClient::CreateForDrawing(TextureForwarder* aAllocator, #endif #endif -#ifdef MOZ_WIDGET_GONK - if (!data && aSize.width <= aMaxTextureSize && aSize.height <= aMaxTextureSize) { - data = GrallocTextureData::CreateForDrawing(aSize, aFormat, moz2DBackend, - aAllocator); - } -#endif - #ifdef XP_MACOSX if (!data && gfxPrefs::UseIOSurfaceTextures()) { data = MacIOSurfaceTextureData::Create(aSize, aFormat, moz2DBackend); diff --git a/gfx/layers/client/TextureClient.h b/gfx/layers/client/TextureClient.h index 122a885cccb1..e86746c61116 100644 --- a/gfx/layers/client/TextureClient.h +++ b/gfx/layers/client/TextureClient.h @@ -42,17 +42,12 @@ namespace mozilla { #define GFX_DEBUG_TRACK_CLIENTS_IN_POOL 1 #endif -namespace gl { -class SharedSurface_Gralloc; -} - namespace layers { class AsyncTransactionWaiter; class BufferTextureData; class CompositableForwarder; class KnowsCompositor; -class GrallocTextureData; class LayersIPCChannel; class CompositableClient; struct PlanarYCbCrData; @@ -306,8 +301,6 @@ public: } #endif - virtual GrallocTextureData* AsGrallocTextureData() { return nullptr; } - virtual BufferTextureData* AsBufferTextureData() { return nullptr; } }; @@ -652,14 +645,7 @@ public: bool NeedsFenceHandle() { -#if defined(MOZ_WIDGET_GONK) && ANDROID_VERSION >= 17 - if (!mData) { - return false; - } - return !!mData->AsGrallocTextureData(); -#else return false; -#endif } void WaitFenceHandleOnImageBridge(Mutex& aMutex); @@ -731,7 +717,6 @@ private: void Finalize() {} friend class AtomicRefCountedWithFinalize; - friend class gl::SharedSurface_Gralloc; protected: /** * Should only be called *once* per texture, in TextureClient::InitIPDLActor. diff --git a/gfx/layers/client/TextureClientSharedSurface.cpp b/gfx/layers/client/TextureClientSharedSurface.cpp index f1545ffe1392..b0cbfec218d3 100644 --- a/gfx/layers/client/TextureClientSharedSurface.cpp +++ b/gfx/layers/client/TextureClientSharedSurface.cpp @@ -13,11 +13,6 @@ #include "nsThreadUtils.h" #include "SharedSurface.h" -#ifdef MOZ_WIDGET_GONK -#include "mozilla/layers/GrallocTextureClient.h" -#include "SharedSurfaceGralloc.h" -#endif - using namespace mozilla::gl; namespace mozilla { @@ -73,67 +68,6 @@ SharedSurfaceTextureClient::Create(UniquePtr surf, gl::Surfac return MakeAndAddRef(data, flags, aAllocator); } -void -SharedSurfaceTextureClient::SetReleaseFenceHandle(const FenceHandle& aReleaseFenceHandle) -{ -#ifdef MOZ_WIDGET_GONK - gl::SharedSurface_Gralloc* surf = nullptr; - if (Surf()->mType == gl::SharedSurfaceType::Gralloc) { - surf = gl::SharedSurface_Gralloc::Cast(Surf()); - } - if (surf && surf->GetTextureClient()) { - surf->GetTextureClient()->SetReleaseFenceHandle(aReleaseFenceHandle); - return; - } -#endif - TextureClient::SetReleaseFenceHandle(aReleaseFenceHandle); -} - -FenceHandle -SharedSurfaceTextureClient::GetAndResetReleaseFenceHandle() -{ -#ifdef MOZ_WIDGET_GONK - gl::SharedSurface_Gralloc* surf = nullptr; - if (Surf()->mType == gl::SharedSurfaceType::Gralloc) { - surf = gl::SharedSurface_Gralloc::Cast(Surf()); - } - if (surf && surf->GetTextureClient()) { - return surf->GetTextureClient()->GetAndResetReleaseFenceHandle(); - } -#endif - return TextureClient::GetAndResetReleaseFenceHandle(); -} - -void -SharedSurfaceTextureClient::SetAcquireFenceHandle(const FenceHandle& aAcquireFenceHandle) -{ -#ifdef MOZ_WIDGET_GONK - gl::SharedSurface_Gralloc* surf = nullptr; - if (Surf()->mType == gl::SharedSurfaceType::Gralloc) { - surf = gl::SharedSurface_Gralloc::Cast(Surf()); - } - if (surf && surf->GetTextureClient()) { - return surf->GetTextureClient()->SetAcquireFenceHandle(aAcquireFenceHandle); - } -#endif - TextureClient::SetAcquireFenceHandle(aAcquireFenceHandle); -} - -const FenceHandle& -SharedSurfaceTextureClient::GetAcquireFenceHandle() const -{ -#ifdef MOZ_WIDGET_GONK - gl::SharedSurface_Gralloc* surf = nullptr; - if (Surf()->mType == gl::SharedSurfaceType::Gralloc) { - surf = gl::SharedSurface_Gralloc::Cast(Surf()); - } - if (surf && surf->GetTextureClient()) { - return surf->GetTextureClient()->GetAcquireFenceHandle(); - } -#endif - return TextureClient::GetAcquireFenceHandle(); -} - SharedSurfaceTextureClient::~SharedSurfaceTextureClient() { // XXX - Things break when using the proper destruction handshake with diff --git a/gfx/layers/client/TextureClientSharedSurface.h b/gfx/layers/client/TextureClientSharedSurface.h index fa20a0ff73bc..95deb759b916 100644 --- a/gfx/layers/client/TextureClientSharedSurface.h +++ b/gfx/layers/client/TextureClientSharedSurface.h @@ -66,14 +66,6 @@ public: Create(UniquePtr surf, gl::SurfaceFactory* factory, LayersIPCChannel* aAllocator, TextureFlags aFlags); - virtual void SetReleaseFenceHandle(const FenceHandle& aReleaseFenceHandle) override; - - virtual FenceHandle GetAndResetReleaseFenceHandle() override; - - virtual void SetAcquireFenceHandle(const FenceHandle& aAcquireFenceHandle) override; - - virtual const FenceHandle& GetAcquireFenceHandle() const override; - gl::SharedSurface* Surf() const { return static_cast(GetInternalData())->Surf(); } diff --git a/gfx/layers/client/TiledContentClient.cpp b/gfx/layers/client/TiledContentClient.cpp index 1fb1af6e5269..c5677a8a31bd 100644 --- a/gfx/layers/client/TiledContentClient.cpp +++ b/gfx/layers/client/TiledContentClient.cpp @@ -308,7 +308,7 @@ ClientTiledLayerBuffer::GetContentType(SurfaceMode* aMode) const SurfaceMode mode = mPaintedLayer.GetSurfaceMode(); if (mode == SurfaceMode::SURFACE_COMPONENT_ALPHA) { -#if defined(MOZ_GFX_OPTIMIZE_MOBILE) || defined(MOZ_WIDGET_GONK) +#if defined(MOZ_GFX_OPTIMIZE_MOBILE) mode = SurfaceMode::SURFACE_SINGLE_CHANNEL_ALPHA; #else if (!mPaintedLayer.GetParent() || @@ -319,7 +319,7 @@ ClientTiledLayerBuffer::GetContentType(SurfaceMode* aMode) const } #endif } else if (mode == SurfaceMode::SURFACE_OPAQUE) { -#if defined(MOZ_GFX_OPTIMIZE_MOBILE) || defined(MOZ_WIDGET_GONK) +#if defined(MOZ_GFX_OPTIMIZE_MOBILE) if (IsLowPrecision()) { // If we're in low-res mode, drawing can sample from outside the visible // region. Make sure that we only sample transparency if that happens. diff --git a/gfx/layers/composite/ImageHost.cpp b/gfx/layers/composite/ImageHost.cpp index 948cdf149346..b1d77924b752 100644 --- a/gfx/layers/composite/ImageHost.cpp +++ b/gfx/layers/composite/ImageHost.cpp @@ -703,15 +703,6 @@ LayerRenderState ImageHostOverlay::GetRenderState() { LayerRenderState state; -#ifdef MOZ_WIDGET_GONK - if (mOverlay.handle().type() == OverlayHandle::Tint32_t) { - state.SetOverlayId(mOverlay.handle().get_int32_t()); - } else if (mOverlay.handle().type() == OverlayHandle::TGonkNativeHandle) { - state.SetSidebandStream(mOverlay.handle().get_GonkNativeHandle()); - } - state.mSize.width = mPictureRect.Width(); - state.mSize.height = mPictureRect.Height(); -#endif return state; } diff --git a/gfx/layers/composite/LayerManagerComposite.cpp b/gfx/layers/composite/LayerManagerComposite.cpp index a4d09c7024c2..1d1dd153681d 100644 --- a/gfx/layers/composite/LayerManagerComposite.cpp +++ b/gfx/layers/composite/LayerManagerComposite.cpp @@ -58,16 +58,12 @@ #include #include #endif -#if defined(MOZ_WIDGET_ANDROID) || defined(MOZ_WIDGET_GONK) +#if defined(MOZ_WIDGET_ANDROID) #include "opengl/CompositorOGL.h" #include "GLContextEGL.h" #include "GLContextProvider.h" #include "ScopedGLHelpers.h" #endif -#ifdef MOZ_WIDGET_GONK -#include "nsScreenManagerGonk.h" -#include "nsWindow.h" -#endif #include "GeckoProfiler.h" #include "TextRenderer.h" // for TextRenderer #include "mozilla/layers/CompositorBridgeParent.h" @@ -481,7 +477,7 @@ LayerManagerComposite::UpdateAndRender() } Render(invalid, opaque); -#if defined(MOZ_WIDGET_ANDROID) || defined(MOZ_WIDGET_GONK) +#if defined(MOZ_WIDGET_ANDROID) RenderToPresentationSurface(); #endif mGeometryChanged = false; @@ -1006,7 +1002,7 @@ LayerManagerComposite::Render(const nsIntRegion& aInvalidRegion, const nsIntRegi RecordFrame(); } -#if defined(MOZ_WIDGET_ANDROID) || defined(MOZ_WIDGET_GONK) +#if defined(MOZ_WIDGET_ANDROID) class ScopedCompositorProjMatrix { public: ScopedCompositorProjMatrix(CompositorOGL* aCompositor, const Matrix4x4& aProjMatrix): @@ -1113,40 +1109,6 @@ LayerManagerComposite::RenderToPresentationSurface() const IntSize windowSize(ANativeWindow_getWidth(window), ANativeWindow_getHeight(window)); -#elif defined(MOZ_WIDGET_GONK) - CompositorOGL* compositor = mCompositor->AsCompositorOGL(); - nsScreenGonk* screen = static_cast(mCompositor->GetWidget()->RealWidget())->GetScreen(); - if (!screen->IsPrimaryScreen()) { - // Only primary screen support mirroring - return; - } - - nsWindow* mirrorScreenWidget = screen->GetMirroringWidget(); - if (!mirrorScreenWidget) { - // No mirroring - return; - } - - nsScreenGonk* mirrorScreen = mirrorScreenWidget->GetScreen(); - if (!mirrorScreen->GetTopWindows().IsEmpty()) { - return; - } - - EGLSurface surface = mirrorScreen->GetEGLSurface(); - if (surface == LOCAL_EGL_NO_SURFACE) { - // Create GLContext - RefPtr gl = gl::GLContextProvider::CreateForWindow(mirrorScreenWidget, false); - mirrorScreenWidget->SetNativeData(NS_NATIVE_OPENGL_CONTEXT, - reinterpret_cast(gl.get())); - surface = mirrorScreen->GetEGLSurface(); - if (surface == LOCAL_EGL_NO_SURFACE) { - // Failed to create EGLSurface - return; - } - } - GLContext* gl = compositor->gl(); - GLContextEGL* egl = GLContextEGL::Cast(gl); - const IntSize windowSize = mirrorScreen->GetNaturalBounds().Size().ToUnknownSize(); #endif if ((windowSize.width <= 0) || (windowSize.height <= 0)) { @@ -1213,15 +1175,6 @@ LayerManagerComposite::RenderToPresentationSurface() RootLayer()->RenderLayer(clipRect); mCompositor->EndFrame(); -#ifdef MOZ_WIDGET_GONK - mCompositor->SetDispAcquireFence(mRoot); // Call after EndFrame() - - RefPtr composer2D; - composer2D = mCompositor->GetWidget()->GetComposer2D(); - if (composer2D) { - composer2D->Render(mirrorScreenWidget); - } -#endif } #endif diff --git a/gfx/layers/composite/LayerManagerComposite.h b/gfx/layers/composite/LayerManagerComposite.h index 88533a43af79..3766750faf0a 100644 --- a/gfx/layers/composite/LayerManagerComposite.h +++ b/gfx/layers/composite/LayerManagerComposite.h @@ -326,7 +326,7 @@ private: * Render the current layer tree to the active target. */ void Render(const nsIntRegion& aInvalidRegion, const nsIntRegion& aOpaqueRegion); -#if defined(MOZ_WIDGET_ANDROID) || defined(MOZ_WIDGET_GONK) +#if defined(MOZ_WIDGET_ANDROID) void RenderToPresentationSurface(); #endif diff --git a/gfx/layers/composite/TextureHost.cpp b/gfx/layers/composite/TextureHost.cpp index 404666cd6038..e506d28d0c39 100644 --- a/gfx/layers/composite/TextureHost.cpp +++ b/gfx/layers/composite/TextureHost.cpp @@ -35,11 +35,6 @@ #include "../d3d11/CompositorD3D11.h" #endif -#ifdef MOZ_WIDGET_GONK -#include "../opengl/GrallocTextureClient.h" -#include "../opengl/GrallocTextureHost.h" -#endif - #ifdef MOZ_X11 #include "mozilla/layers/X11TextureHost.h" #endif @@ -241,7 +236,6 @@ TextureHost::Create(const SurfaceDescriptor& aDesc, case SurfaceDescriptor::TSurfaceDescriptorSharedGLTexture: return CreateTextureHostOGL(aDesc, aDeallocator, aFlags); - case SurfaceDescriptor::TSurfaceDescriptorGralloc: case SurfaceDescriptor::TSurfaceDescriptorMacIOSurface: if (aBackend == LayersBackend::LAYERS_OPENGL) { return CreateTextureHostOGL(aDesc, aDeallocator, aFlags); @@ -386,9 +380,8 @@ TextureHost::NotifyNotUsed() } // Do not need to call NotifyNotUsed() if TextureHost does not have - // TextureFlags::RECYCLE flag and TextureHost is not GrallocTextureHostOGL. - if (!(GetFlags() & TextureFlags::RECYCLE) && - !AsGrallocTextureHostOGL()) { + // TextureFlags::RECYCLE flag. + if (!(GetFlags() & TextureFlags::RECYCLE)) { return; } @@ -397,13 +390,11 @@ TextureHost::NotifyNotUsed() // - TextureHost does not have Compositor. // - Compositor is BasicCompositor. // - TextureHost has intermediate buffer. - // - TextureHost is GrallocTextureHostOGL. Fence object is used to detect // end of buffer usage. if (!compositor || compositor->IsDestroyed() || compositor->AsBasicCompositor() || - HasIntermediateBuffer() || - AsGrallocTextureHostOGL()) { + HasIntermediateBuffer()) { static_cast(mActor)->NotifyNotUsed(mFwdTransactionId); return; } diff --git a/gfx/layers/composite/TextureHost.h b/gfx/layers/composite/TextureHost.h index 8d4960071647..c5cecd6f186b 100644 --- a/gfx/layers/composite/TextureHost.h +++ b/gfx/layers/composite/TextureHost.h @@ -44,7 +44,6 @@ class Compositor; class CompositableParentManager; class ReadLockDescriptor; class CompositorBridgeParent; -class GrallocTextureHostOGL; class SurfaceDescriptor; class HostIPCAllocator; class ISurfaceAllocator; @@ -622,8 +621,6 @@ public: virtual BufferTextureHost* AsBufferTextureHost() { return nullptr; } - virtual GrallocTextureHostOGL* AsGrallocTextureHostOGL() { return nullptr; } - protected: void ReadUnlock(); diff --git a/gfx/layers/composite/TiledContentHost.h b/gfx/layers/composite/TiledContentHost.h index 68244015d8f4..4b52394def99 100644 --- a/gfx/layers/composite/TiledContentHost.h +++ b/gfx/layers/composite/TiledContentHost.h @@ -28,10 +28,6 @@ #include "nsRegion.h" // for nsIntRegion #include "nscore.h" // for nsACString -#if defined(MOZ_WIDGET_GONK) && ANDROID_VERSION >= 17 -#include -#endif - namespace mozilla { namespace layers { diff --git a/gfx/layers/ipc/CompositableForwarder.h b/gfx/layers/ipc/CompositableForwarder.h index 506be38ccb2b..cfe382888cba 100644 --- a/gfx/layers/ipc/CompositableForwarder.h +++ b/gfx/layers/ipc/CompositableForwarder.h @@ -72,12 +72,6 @@ public: const ThebesBufferData& aThebesBufferData, const nsIntRegion& aUpdatedRegion) = 0; -#ifdef MOZ_WIDGET_GONK - virtual void UseOverlaySource(CompositableClient* aCompositabl, - const OverlaySource& aOverlay, - const gfx::IntRect& aPictureRect) = 0; -#endif - virtual void Destroy(CompositableChild* aCompositable); virtual bool DestroyInTransaction(PTextureChild* aTexture, bool synchronously) = 0; diff --git a/gfx/layers/ipc/CompositableTransactionParent.cpp b/gfx/layers/ipc/CompositableTransactionParent.cpp index 1b93f93f982a..e9056ee4de5d 100644 --- a/gfx/layers/ipc/CompositableTransactionParent.cpp +++ b/gfx/layers/ipc/CompositableTransactionParent.cpp @@ -16,7 +16,6 @@ #include "mozilla/layers/CompositorTypes.h" #include "mozilla/layers/ContentHost.h" // for ContentHostBase #include "mozilla/layers/ImageBridgeParent.h" // for ImageBridgeParent -#include "mozilla/layers/SharedBufferManagerParent.h" #include "mozilla/layers/LayerManagerComposite.h" #include "mozilla/layers/LayersSurfaces.h" // for SurfaceDescriptor #include "mozilla/layers/LayersTypes.h" // for MOZ_LAYERS_LOG @@ -61,7 +60,7 @@ ScheduleComposition(CompositableHost* aCompositable) return true; } -#if defined(DEBUG) || defined(MOZ_WIDGET_GONK) +#if defined(DEBUG) static bool ValidatePictureRect(const mozilla::gfx::IntSize& aSize, const nsIntRect& aPictureRect) { @@ -246,16 +245,6 @@ CompositableParentManager::ReceiveCompositableUpdate(const CompositableOperation } break; } -#ifdef MOZ_WIDGET_GONK - case CompositableOperationDetail::TOpUseOverlaySource: { - const OpUseOverlaySource& op = aEdit.detail().get_OpUseOverlaySource(); - if (!ValidatePictureRect(op.overlay().size(), op.picture())) { - return false; - } - compositable->UseOverlaySource(op.overlay(), op.picture()); - break; - } -#endif default: { MOZ_ASSERT(false, "bad type"); } diff --git a/gfx/layers/ipc/CompositorBench.cpp b/gfx/layers/ipc/CompositorBench.cpp index 726b352d964c..945adafc1829 100644 --- a/gfx/layers/ipc/CompositorBench.cpp +++ b/gfx/layers/ipc/CompositorBench.cpp @@ -14,10 +14,6 @@ #include #include "GeckoProfiler.h" -#ifdef MOZ_WIDGET_GONK -#include "mozilla/layers/GrallocTextureHost.h" -#endif - #define TEST_STEPS 1000 #define DURATION_THRESHOLD 30 #define THRESHOLD_ABORT_COUNT 5 @@ -275,92 +271,6 @@ public: } }; -#ifdef MOZ_WIDGET_GONK -class TrivialGrallocQuadBench : public BenchTest { -public: - TrivialGrallocQuadBench() - : BenchTest("Travial Gralloc Quad (10s 256x256 quads)") - {} - - uint32_t* mBuf; - android::sp mGralloc; - RefPtr mTexture; - - virtual void Setup(Compositor* aCompositor, size_t aStep) { - mBuf = nullptr; - int w = 256; - int h = 256; - int32_t format = android::PIXEL_FORMAT_RGBA_8888;; - mGralloc = new android::GraphicBuffer(w, h, - format, - android::GraphicBuffer::USAGE_SW_READ_OFTEN | - android::GraphicBuffer::USAGE_SW_WRITE_OFTEN | - android::GraphicBuffer::USAGE_HW_TEXTURE); - mTexture = new mozilla::layers::GrallocTextureSourceOGL((CompositorOGL*)aCompositor, mGralloc.get(), SurfaceFormat::B8G8R8A8); - } - - void DrawFrame(Compositor* aCompositor, const gfx::Rect& aScreenRect, size_t aStep) { - EffectChain effects; - effects.mPrimaryEffect = CreateEffect(aStep); - - DrawFrameTrivialQuad(aCompositor, aScreenRect, aStep, effects); - } - - virtual void Teardown(Compositor* aCompositor) { - mGralloc = nullptr; - mTexture = nullptr; - free(mBuf); - } - - virtual already_AddRefed CreateEffect(size_t i) { - return CreateTexturedEffect(SurfaceFormat::B8G8R8A8, mTexture, - SamplingFilter::POINT); - } -}; - -class StressGrallocQuadBench : public BenchTest { -public: - StressGrallocQuadBench() - : BenchTest("Stress Gralloc Quad (10s 256x256 quads)") - {} - - uint32_t* mBuf; - android::sp mGralloc; - RefPtr mTexture; - - virtual void Setup(Compositor* aCompositor, size_t aStep) { - mBuf = nullptr; - int w = 256; - int h = 256; - int32_t format = android::PIXEL_FORMAT_RGBA_8888;; - mGralloc = new android::GraphicBuffer(w, h, - format, - android::GraphicBuffer::USAGE_SW_READ_OFTEN | - android::GraphicBuffer::USAGE_SW_WRITE_OFTEN | - android::GraphicBuffer::USAGE_HW_TEXTURE); - mTexture = new mozilla::layers::GrallocTextureSourceOGL((CompositorOGL*)aCompositor, mGralloc.get(), SurfaceFormat::B8G8R8A8); - } - - void DrawFrame(Compositor* aCompositor, const gfx::Rect& aScreenRect, size_t aStep) { - EffectChain effects; - effects.mPrimaryEffect = CreateEffect(aStep); - - DrawFrameStressQuad(aCompositor, aScreenRect, aStep, effects); - } - - virtual void Teardown(Compositor* aCompositor) { - mGralloc = nullptr; - mTexture = nullptr; - free(mBuf); - } - - virtual already_AddRefed CreateEffect(size_t i) { - return CreateTexturedEffect(SurfaceFormat::B8G8R8A8, mTexture, - SamplingFilter::POINT); - } -}; -#endif - static void RunCompositorBench(Compositor* aCompositor, const gfx::Rect& aScreenRect) { std::vector tests; @@ -371,10 +281,6 @@ static void RunCompositorBench(Compositor* aCompositor, const gfx::Rect& aScreen tests.push_back(new EffectSolidColorStressBench()); tests.push_back(new TrivialTexturedQuadBench()); tests.push_back(new StressTexturedQuadBench()); -#ifdef MOZ_WIDGET_GONK - tests.push_back(new TrivialGrallocQuadBench()); - tests.push_back(new StressGrallocQuadBench()); -#endif for (size_t i = 0; i < tests.size(); i++) { BenchTest* test = tests[i]; diff --git a/gfx/layers/ipc/CompositorBridgeParent.cpp b/gfx/layers/ipc/CompositorBridgeParent.cpp index 1aa58bd06b91..ac08c18719b0 100644 --- a/gfx/layers/ipc/CompositorBridgeParent.cpp +++ b/gfx/layers/ipc/CompositorBridgeParent.cpp @@ -85,11 +85,6 @@ # include "mozilla/widget/CompositorWidgetParent.h" #endif -#ifdef MOZ_WIDGET_GONK -#include "GeckoTouchDispatcher.h" -#include "nsScreenManagerGonk.h" -#endif - #include "LayerScope.h" namespace mozilla { @@ -349,24 +344,9 @@ CompositorVsyncScheduler::CompositorVsyncScheduler(CompositorBridgeParent* aComp , mCurrentCompositeTask(nullptr) , mSetNeedsCompositeMonitor("SetNeedsCompositeMonitor") , mSetNeedsCompositeTask(nullptr) -#ifdef MOZ_WIDGET_GONK -#if ANDROID_VERSION >= 19 - , mDisplayEnabled(false) - , mSetDisplayMonitor("SetDisplayMonitor") - , mSetDisplayTask(nullptr) -#endif -#endif { MOZ_ASSERT(NS_IsMainThread() || XRE_GetProcessType() == GeckoProcessType_GPU); mVsyncObserver = new Observer(this); -#ifdef MOZ_WIDGET_GONK - GeckoTouchDispatcher::GetInstance()->SetCompositorVsyncScheduler(this); - -#if ANDROID_VERSION >= 19 - RefPtr screenManager = nsScreenManagerGonk::GetInstance(); - screenManager->SetCompositorVsyncScheduler(this); -#endif -#endif // mAsapScheduling is set on the main thread during init, // but is only accessed after on the compositor thread. @@ -382,54 +362,6 @@ CompositorVsyncScheduler::~CompositorVsyncScheduler() mCompositorBridgeParent = nullptr; } -#ifdef MOZ_WIDGET_GONK -#if ANDROID_VERSION >= 19 -void -CompositorVsyncScheduler::SetDisplay(bool aDisplayEnable) -{ - // SetDisplay() is usually called from nsScreenManager at main thread. Post - // to compositor thread if needs. - if (!CompositorThreadHolder::IsInCompositorThread()) { - MOZ_ASSERT(NS_IsMainThread()); - MonitorAutoLock lock(mSetDisplayMonitor); - RefPtr task = - NewCancelableRunnableMethod(this, &CompositorVsyncScheduler::SetDisplay, aDisplayEnable); - mSetDisplayTask = task; - ScheduleTask(task.forget(), 0); - return; - } else { - MonitorAutoLock lock(mSetDisplayMonitor); - mSetDisplayTask = nullptr; - } - - if (mDisplayEnabled == aDisplayEnable) { - return; - } - - mDisplayEnabled = aDisplayEnable; - if (!mDisplayEnabled) { - CancelCurrentSetNeedsCompositeTask(); - CancelCurrentCompositeTask(); - } -} - -void -CompositorVsyncScheduler::CancelSetDisplayTask() -{ - MOZ_ASSERT(CompositorThreadHolder::IsInCompositorThread()); - MonitorAutoLock lock(mSetDisplayMonitor); - if (mSetDisplayTask) { - mSetDisplayTask->Cancel(); - mSetDisplayTask = nullptr; - } - - // CancelSetDisplayTask is only be called in clean-up process, so - // mDisplayEnabled could be false there. - mDisplayEnabled = false; -} -#endif //ANDROID_VERSION >= 19 -#endif //MOZ_WIDGET_GONK - void CompositorVsyncScheduler::Destroy() { @@ -442,11 +374,6 @@ CompositorVsyncScheduler::Destroy() mVsyncObserver->Destroy(); mVsyncObserver = nullptr; -#ifdef MOZ_WIDGET_GONK -#if ANDROID_VERSION >= 19 - CancelSetDisplayTask(); -#endif -#endif CancelCurrentSetNeedsCompositeTask(); CancelCurrentCompositeTask(); } @@ -521,15 +448,6 @@ CompositorVsyncScheduler::SetNeedsComposite() mSetNeedsCompositeTask = nullptr; } -#ifdef MOZ_WIDGET_GONK -#if ANDROID_VERSION >= 19 - // Skip composition when display off. - if (!mDisplayEnabled) { - return; - } -#endif -#endif - mNeedsComposite++; if (!mIsObservingVsync && mNeedsComposite) { ObserveVsync(); @@ -652,9 +570,6 @@ CompositorVsyncScheduler::UnobserveVsync() void CompositorVsyncScheduler::DispatchTouchEvents(TimeStamp aVsyncTimestamp) { -#ifdef MOZ_WIDGET_GONK - GeckoTouchDispatcher::GetInstance()->NotifyVsync(aVsyncTimestamp); -#endif } void diff --git a/gfx/layers/ipc/CompositorBridgeParent.h b/gfx/layers/ipc/CompositorBridgeParent.h index 7280887ce76d..73319dfbf0e4 100644 --- a/gfx/layers/ipc/CompositorBridgeParent.h +++ b/gfx/layers/ipc/CompositorBridgeParent.h @@ -95,19 +95,6 @@ public: explicit CompositorVsyncScheduler(CompositorBridgeParent* aCompositorBridgeParent, widget::CompositorWidget* aWidget); -#ifdef MOZ_WIDGET_GONK - // emulator-ics never trigger the display on/off, so compositor will always - // skip composition request at that device. Only check the display status - // with kk device and upon. -#if ANDROID_VERSION >= 19 - // SetDisplay() and CancelSetDisplayTask() are used for the display on/off. - // It will clear all composition related task and flag, and skip another - // composition task during the display off. That could prevent the problem - // that compositor might show the old content at the first frame of display on. - void SetDisplay(bool aDisplayEnable); -#endif -#endif - bool NotifyVsync(TimeStamp aVsyncTimestamp); void SetNeedsComposite(); void OnForceComposeToTarget(); @@ -144,11 +131,6 @@ private: void DispatchTouchEvents(TimeStamp aVsyncTimestamp); void DispatchVREvents(TimeStamp aVsyncTimestamp); void CancelCurrentSetNeedsCompositeTask(); -#ifdef MOZ_WIDGET_GONK -#if ANDROID_VERSION >= 19 - void CancelSetDisplayTask(); -#endif -#endif class Observer final : public VsyncObserver { @@ -183,14 +165,6 @@ private: mozilla::Monitor mSetNeedsCompositeMonitor; RefPtr mSetNeedsCompositeTask; - -#ifdef MOZ_WIDGET_GONK -#if ANDROID_VERSION >= 19 - bool mDisplayEnabled; - mozilla::Monitor mSetDisplayMonitor; - RefPtr mSetDisplayTask; -#endif -#endif }; class CompositorBridgeParentBase : public PCompositorBridgeParent, diff --git a/gfx/layers/ipc/FenceUtils.cpp b/gfx/layers/ipc/FenceUtils.cpp index b2f07ad0ad05..5c4cc7d4d8b3 100644 --- a/gfx/layers/ipc/FenceUtils.cpp +++ b/gfx/layers/ipc/FenceUtils.cpp @@ -5,12 +5,6 @@ * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ -#if defined(MOZ_WIDGET_GONK) && ANDROID_VERSION >= 17 -#pragma GCC visibility push(default) -#include "sync/sync.h" // for sync_merge -#pragma GCC visibility pop -#endif - #include "FenceUtils.h" using namespace mozilla::layers; @@ -24,23 +18,12 @@ ParamTraits::Write(Message* aMsg, FenceHandle handle = aParam; MOZ_ASSERT(handle.IsValid()); - -#if defined(MOZ_WIDGET_GONK) && ANDROID_VERSION >= 17 - RefPtr fence = handle.GetAndResetFdObj(); - aMsg->WriteFileDescriptor(base::FileDescriptor(fence->GetAndResetFd(), true)); -#endif } bool ParamTraits::Read(const Message* aMsg, PickleIterator* aIter, paramType* aResult) { -#if defined(MOZ_WIDGET_GONK) && ANDROID_VERSION >= 17 - base::FileDescriptor fd; - if (aMsg->ReadFileDescriptor(aIter, &fd)) { - aResult->Merge(FenceHandle(new FenceHandle::FdObj(fd.fd))); - } -#endif return true; } @@ -63,22 +46,6 @@ FenceHandle::FenceHandle(FdObj* aFdObj) void FenceHandle::Merge(const FenceHandle& aFenceHandle) { -#if defined(MOZ_WIDGET_GONK) && ANDROID_VERSION >= 17 - if (!aFenceHandle.IsValid()) { - return; - } - - if (!IsValid()) { - mFence = aFenceHandle.mFence; - } else { - int result = sync_merge("FenceHandle", mFence->mFd, aFenceHandle.mFence->mFd); - if (result == -1) { - mFence = aFenceHandle.mFence; - } else { - mFence = new FdObj(result); - } - } -#endif } void diff --git a/gfx/layers/ipc/GonkNativeHandle.h b/gfx/layers/ipc/GonkNativeHandle.h index 176e2f7c74c6..6afaea540d1c 100644 --- a/gfx/layers/ipc/GonkNativeHandle.h +++ b/gfx/layers/ipc/GonkNativeHandle.h @@ -8,88 +8,15 @@ #ifndef IPC_GonkNativeHandle_h #define IPC_GonkNativeHandle_h -#ifdef MOZ_WIDGET_GONK -#include -#endif - #include "mozilla/RefPtr.h" // for RefPtr #include "nsISupportsImpl.h" namespace mozilla { namespace layers { -#ifdef MOZ_WIDGET_GONK -// GonkNativeHandle wraps android's native_handle_t and is used to support -// android's sideband stream. -// The sideband stream is a device-specific mechanism for passing buffers -// to hwcomposer. It is used to render TV streams and DRM protected streams. -// The native_handle_t represents device-specific kernel objects on android. -class GonkNativeHandle { -public: - class NhObj { - NS_INLINE_DECL_THREADSAFE_REFCOUNTING(NhObj) - friend class GonkNativeHandle; - public: - NhObj() - : mHandle(nullptr) {} - explicit NhObj(native_handle_t* aHandle) - : mHandle(aHandle) {} - native_handle_t* GetAndResetNativeHandle() - { - native_handle_t* handle = mHandle; - mHandle = nullptr; - return handle; - } - - private: - virtual ~NhObj() { - if (mHandle) { - native_handle_close(mHandle); - native_handle_delete(mHandle); - } - } - - native_handle_t* mHandle; - }; - - GonkNativeHandle(); - - explicit GonkNativeHandle(NhObj* aNhObj); - - bool operator==(const GonkNativeHandle& aOther) const { - return mNhObj.get() == aOther.mNhObj.get(); - } - - bool IsValid() const - { - return mNhObj && mNhObj->mHandle; - } - - void TransferToAnother(GonkNativeHandle& aHandle); - - already_AddRefed GetAndResetNhObj(); - - already_AddRefed GetDupNhObj(); - - static already_AddRefed CreateDupNhObj(native_handle_t* aHandle); - - // Return non owning handle. - native_handle_t* GetRawNativeHandle() const - { - if (mNhObj) { - return mNhObj->mHandle; - } - return nullptr; - } - -private: - RefPtr mNhObj; -}; -#else struct GonkNativeHandle { bool operator==(const GonkNativeHandle&) const { return false; } }; -#endif } // namespace layers } // namespace mozilla diff --git a/gfx/layers/ipc/GonkNativeHandleUtils.h b/gfx/layers/ipc/GonkNativeHandleUtils.h index 8b23afdab4a3..d91792c95d80 100644 --- a/gfx/layers/ipc/GonkNativeHandleUtils.h +++ b/gfx/layers/ipc/GonkNativeHandleUtils.h @@ -14,22 +14,12 @@ namespace IPC { -#ifdef MOZ_WIDGET_GONK -template <> -struct ParamTraits { - typedef mozilla::layers::GonkNativeHandle paramType; - - static void Write(Message* aMsg, const paramType& aParam); - static bool Read(const Message* aMsg, PickleIterator* aIter, paramType* aResult); -}; -#else template <> struct ParamTraits { typedef mozilla::layers::GonkNativeHandle paramType; static void Write(Message*, const paramType&) {} static bool Read(const Message*, PickleIterator*, paramType*) { return false; } }; -#endif } // namespace IPC diff --git a/gfx/layers/ipc/ISurfaceAllocator.h b/gfx/layers/ipc/ISurfaceAllocator.h index a3e83a051624..95847512ee9f 100644 --- a/gfx/layers/ipc/ISurfaceAllocator.h +++ b/gfx/layers/ipc/ISurfaceAllocator.h @@ -17,18 +17,6 @@ #include "mozilla/layers/LayersMessages.h" // for ShmemSection #include "LayersTypes.h" -/* - * FIXME [bjacob] *** PURE CRAZYNESS WARNING *** - * (I think that this doesn't apply anymore.) - * - * This #define is actually needed here, because subclasses of ISurfaceAllocator, - * namely ShadowLayerForwarder, will or will not override AllocGrallocBuffer - * depending on whether MOZ_HAVE_SURFACEDESCRIPTORGRALLOC is defined. - */ -#ifdef MOZ_WIDGET_GONK -#define MOZ_HAVE_SURFACEDESCRIPTORGRALLOC -#endif - namespace mozilla { namespace ipc { class Shmem; diff --git a/gfx/layers/ipc/ImageBridgeChild.cpp b/gfx/layers/ipc/ImageBridgeChild.cpp index 5e75299a4b90..13d89e1def18 100644 --- a/gfx/layers/ipc/ImageBridgeChild.cpp +++ b/gfx/layers/ipc/ImageBridgeChild.cpp @@ -219,24 +219,6 @@ ImageBridgeChild::UseComponentAlphaTextures(CompositableClient* aCompositable, ); } -#ifdef MOZ_WIDGET_GONK -void -ImageBridgeChild::UseOverlaySource(CompositableClient* aCompositable, - const OverlaySource& aOverlay, - const nsIntRect& aPictureRect) -{ - MOZ_ASSERT(aCompositable); - MOZ_ASSERT(aCompositable->IsConnected()); - - CompositableOperation op( - nullptr, - aCompositable->GetIPDLActor(), - OpUseOverlaySource(aOverlay, aPictureRect)); - - mTxn->AddEdit(op); -} -#endif - void ImageBridgeChild::HoldUntilCompositableRefReleasedIfNecessary(TextureClient* aClient) { @@ -280,17 +262,7 @@ ImageBridgeChild::HoldUntilFenceHandleDelivery(TextureClient* aClient, uint64_t // XXX Re-enable fence handling return; -#ifdef MOZ_WIDGET_GONK - if (!aClient) { - return; - } - MutexAutoLock lock(mWaitingFenceHandleMutex); - aClient->SetLastFwdTransactionId(aTransactionId); - aClient->WaitFenceHandleOnImageBridge(mWaitingFenceHandleMutex); - mTexturesWaitingFenceHandle.Put(aClient->GetSerial(), aClient); -#else NS_RUNTIMEABORT("not reached"); -#endif } void @@ -299,17 +271,7 @@ ImageBridgeChild::DeliverFenceToNonRecycle(uint64_t aTextureId, FenceHandle& aRe // XXX Re-enable fence handling return; -#ifdef MOZ_WIDGET_GONK - MutexAutoLock lock(mWaitingFenceHandleMutex); - TextureClient* client = mTexturesWaitingFenceHandle.Get(aTextureId).get(); - if (!client) { - return; - } - MOZ_ASSERT(aTextureId == client->GetSerial()); - client->SetReleaseFenceHandle(aReleaseFenceHandle); -#else NS_RUNTIMEABORT("not reached"); -#endif } void @@ -318,30 +280,7 @@ ImageBridgeChild::NotifyNotUsedToNonRecycle(uint64_t aTextureId, uint64_t aTrans // XXX Re-enable fence handling return; -#ifdef MOZ_WIDGET_GONK - MutexAutoLock lock(mWaitingFenceHandleMutex); - - RefPtr client = mTexturesWaitingFenceHandle.Get(aTextureId); - if (!client) { - return; - } - if (aTransactionId < client->GetLastFwdTransactionId()) { - return; - } - - MOZ_ASSERT(aTextureId == client->GetSerial()); - client->ClearWaitFenceHandleOnImageBridge(mWaitingFenceHandleMutex); - mTexturesWaitingFenceHandle.Remove(aTextureId); - - // Release TextureClient on allocator's message loop. - RefPtr task = - MakeAndAddRef(client); - RefPtr allocator = client->GetAllocator(); - client = nullptr; - allocator->GetMessageLoop()->PostTask(task.forget()); -#else NS_RUNTIMEABORT("not reached"); -#endif } void @@ -350,13 +289,7 @@ ImageBridgeChild::CancelWaitFenceHandle(TextureClient* aClient) // XXX Re-enable fence handling return; -#ifdef MOZ_WIDGET_GONK - MutexAutoLock lock(mWaitingFenceHandleMutex); - aClient->ClearWaitFenceHandleOnImageBridge(mWaitingFenceHandleMutex); - mTexturesWaitingFenceHandle.Remove(aClient->GetSerial()); -#else NS_RUNTIMEABORT("not reached"); -#endif } void @@ -516,9 +449,6 @@ ImageBridgeChild::ImageBridgeChild() : mCanSend(false) , mCalledClose(false) , mFwdTransactionId(0) -#ifdef MOZ_WIDGET_GONK - , mWaitingFenceHandleMutex("ImageBridgeChild::mWaitingFenceHandleMutex") -#endif { MOZ_ASSERT(NS_IsMainThread()); @@ -722,18 +652,11 @@ ImageBridgeChild::FlushAllImagesSync(SynchronousTask* aTask, ImageContainer* aContainer, RefPtr aWaiter) { -#ifdef MOZ_WIDGET_GONK - MOZ_ASSERT(aWaiter); -#else MOZ_ASSERT(!aWaiter); -#endif AutoCompleteTask complete(aTask); if (!CanSend()) { -#ifdef MOZ_WIDGET_GONK - aWaiter->DecrementWaitCount(); -#endif return; } @@ -744,13 +667,6 @@ ImageBridgeChild::FlushAllImagesSync(SynchronousTask* aTask, } aClient->FlushAllImages(aWaiter); EndTransaction(); - // This decrement is balanced by the increment in FlushAllImages. - // If any AsyncTransactionTrackers were created by FlushAllImages and attached - // to aWaiter, aWaiter will not complete until those trackers all complete. - // Otherwise, aWaiter will be ready to complete now. -#ifdef MOZ_WIDGET_GONK - aWaiter->DecrementWaitCount(); -#endif } void @@ -767,11 +683,6 @@ ImageBridgeChild::FlushAllImages(ImageClient* aClient, ImageContainer* aContaine SynchronousTask task("FlushAllImages Lock"); RefPtr waiter; -#ifdef MOZ_WIDGET_GONK - waiter = new AsyncTransactionWaiter(); - // This increment is balanced by the decrement in FlushAllImagesSync - waiter->IncrementWaitCount(); -#endif // RefPtrs on arguments are not needed since this dispatches synchronously. RefPtr runnable = WrapRunnable( @@ -784,10 +695,6 @@ ImageBridgeChild::FlushAllImages(ImageClient* aClient, ImageContainer* aContaine GetMessageLoop()->PostTask(runnable.forget()); task.Wait(); - -#ifdef MOZ_WIDGET_GONK - waiter->WaitComplete(); -#endif } void @@ -844,9 +751,6 @@ ImageBridgeChild::EndTransaction() void ImageBridgeChild::SendImageBridgeThreadId() { -#ifdef MOZ_WIDGET_GONK - PImageBridgeChild::SendImageBridgeThreadId(gettid()); -#endif } bool diff --git a/gfx/layers/ipc/ImageBridgeChild.h b/gfx/layers/ipc/ImageBridgeChild.h index 82fba5937754..e23155793a70 100644 --- a/gfx/layers/ipc/ImageBridgeChild.h +++ b/gfx/layers/ipc/ImageBridgeChild.h @@ -279,11 +279,6 @@ public: virtual void UseComponentAlphaTextures(CompositableClient* aCompositable, TextureClient* aClientOnBlack, TextureClient* aClientOnWhite) override; -#ifdef MOZ_WIDGET_GONK - virtual void UseOverlaySource(CompositableClient* aCompositable, - const OverlaySource& aOverlay, - const nsIntRect& aPictureRect) override; -#endif void Destroy(CompositableChild* aCompositable) override; @@ -415,11 +410,6 @@ private: nsDataHashtable > mTexturesWaitingRecycled; AsyncTransactionTrackersHolder mTrackersHolder; - -#ifdef MOZ_WIDGET_GONK - Mutex mWaitingFenceHandleMutex; - nsDataHashtable > mTexturesWaitingFenceHandle; -#endif }; } // namespace layers diff --git a/gfx/layers/ipc/ImageBridgeParent.cpp b/gfx/layers/ipc/ImageBridgeParent.cpp index ef7303416bdd..0f058cf15751 100644 --- a/gfx/layers/ipc/ImageBridgeParent.cpp +++ b/gfx/layers/ipc/ImageBridgeParent.cpp @@ -132,9 +132,6 @@ ImageBridgeParent::RecvImageBridgeThreadId(const PlatformThreadId& aThreadId) return false; } mSetChildThreadPriority = true; -#ifdef MOZ_WIDGET_GONK - hal::SetThreadPriority(aThreadId, hal::THREAD_PRIORITY_COMPOSITOR); -#endif return true; } diff --git a/gfx/layers/ipc/LayerTransactionParent.cpp b/gfx/layers/ipc/LayerTransactionParent.cpp index aaa1678f2892..e7b003f34473 100644 --- a/gfx/layers/ipc/LayerTransactionParent.cpp +++ b/gfx/layers/ipc/LayerTransactionParent.cpp @@ -52,8 +52,6 @@ using mozilla::layout::RenderFrameParent; namespace mozilla { namespace layers { -class PGrallocBufferParent; - //-------------------------------------------------- // Convenience accessors static ShadowLayerParent* diff --git a/gfx/layers/ipc/LayersSurfaces.ipdlh b/gfx/layers/ipc/LayersSurfaces.ipdlh index 96c37848782f..8eeda4ada255 100644 --- a/gfx/layers/ipc/LayersSurfaces.ipdlh +++ b/gfx/layers/ipc/LayersSurfaces.ipdlh @@ -4,8 +4,6 @@ using struct gfxPoint from "gfxPoint.h"; using nsIntRegion from "nsRegion.h"; -using struct mozilla::layers::MagicGrallocBufferHandle from "gfxipc/ShadowLayerUtils.h"; -using struct mozilla::layers::GrallocBufferRef from "gfxipc/ShadowLayerUtils.h"; using struct mozilla::layers::SurfaceDescriptorX11 from "gfxipc/ShadowLayerUtils.h"; using mozilla::StereoMode from "ImageTypes.h"; using mozilla::YUVColorSpace from "ImageTypes.h"; @@ -31,12 +29,6 @@ struct OverlaySource { IntSize size; }; -union MaybeMagicGrallocBufferHandle { - MagicGrallocBufferHandle; - GrallocBufferRef; - null_t; -}; - struct SurfaceDescriptorD3D9 { // IDirect3DTexture9* uintptr_t texture; @@ -94,11 +86,6 @@ struct SurfaceDescriptorSharedGLTexture { bool hasAlpha; }; -struct SurfaceDescriptorGralloc { - MaybeMagicGrallocBufferHandle buffer; - bool isOpaque; -}; - struct SurfaceDescriptorGPUVideo { uint64_t handle; }; @@ -146,7 +133,6 @@ union SurfaceDescriptor { SurfaceTextureDescriptor; EGLImageDescriptor; SurfaceDescriptorMacIOSurface; - SurfaceDescriptorGralloc; SurfaceDescriptorSharedGLTexture; SurfaceDescriptorGPUVideo; null_t; diff --git a/gfx/layers/ipc/PSharedBufferManager.ipdl b/gfx/layers/ipc/PSharedBufferManager.ipdl deleted file mode 100644 index b24055abddb6..000000000000 --- a/gfx/layers/ipc/PSharedBufferManager.ipdl +++ /dev/null @@ -1,29 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * vim: sw=2 ts=8 et : - */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this file, - * You can obtain one at http://mozilla.org/MPL/2.0/. */ - -include LayersSurfaces; -include ProtocolTypes; - -include "mozilla/GfxMessageUtils.h"; - -namespace mozilla { -namespace layers { - -/** - * This is a dedicated protocol to track/allocate/deallocate gralloc buffers. - */ - -sync protocol PSharedBufferManager { -parent: - sync AllocateGrallocBuffer(IntSize size, uint32_t format, uint32_t usage) - returns (MaybeMagicGrallocBufferHandle handle); -both: - async DropGrallocBuffer(MaybeMagicGrallocBufferHandle handle); -}; - -} // namespace layers -} // namespace mozilla diff --git a/gfx/layers/ipc/ShadowLayerUtils.h b/gfx/layers/ipc/ShadowLayerUtils.h index c93a6b9a90b9..257cee81d17f 100644 --- a/gfx/layers/ipc/ShadowLayerUtils.h +++ b/gfx/layers/ipc/ShadowLayerUtils.h @@ -28,21 +28,6 @@ struct SurfaceDescriptorX11 { } // namespace mozilla #endif -#if defined(MOZ_WIDGET_GONK) -# include "mozilla/layers/ShadowLayerUtilsGralloc.h" -#else -namespace mozilla { namespace layers { -struct MagicGrallocBufferHandle { - bool operator==(const MagicGrallocBufferHandle&) const { return false; } -}; - -struct GrallocBufferRef { - bool operator==(const GrallocBufferRef&) const { return false; } -}; -} // namespace layers -} // namespace mozilla -#endif - namespace IPC { #if !defined(MOZ_HAVE_SURFACEDESCRIPTORX11) @@ -54,22 +39,6 @@ struct ParamTraits { }; #endif // !defined(MOZ_HAVE_XSURFACEDESCRIPTORX11) -#if !defined(MOZ_HAVE_SURFACEDESCRIPTORGRALLOC) -template <> -struct ParamTraits { - typedef mozilla::layers::MagicGrallocBufferHandle paramType; - static void Write(Message*, const paramType&) {} - static bool Read(const Message*, PickleIterator*, paramType*) { return false; } -}; - -template <> -struct ParamTraits { - typedef mozilla::layers::GrallocBufferRef paramType; - static void Write(Message*, const paramType&) {} - static bool Read(const Message*, PickleIterator*, paramType*) { return false; } -}; -#endif // !defined(MOZ_HAVE_XSURFACEDESCRIPTORGRALLOC) - template <> struct ParamTraits : public ContiguousEnumSerializer< diff --git a/gfx/layers/ipc/ShadowLayerUtilsGralloc.cpp b/gfx/layers/ipc/ShadowLayerUtilsGralloc.cpp deleted file mode 100644 index 2284e73dd73f..000000000000 --- a/gfx/layers/ipc/ShadowLayerUtilsGralloc.cpp +++ /dev/null @@ -1,253 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * vim: sw=2 ts=8 et : - */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "mozilla/DebugOnly.h" - -#include "mozilla/gfx/Point.h" -#include "mozilla/layers/LayerTransactionChild.h" -#include "mozilla/layers/ShadowLayers.h" -#include "mozilla/layers/LayerManagerComposite.h" -#include "mozilla/layers/CompositorTypes.h" -#include "mozilla/layers/TextureHost.h" -#include "mozilla/layers/SharedBufferManagerChild.h" -#include "mozilla/layers/SharedBufferManagerParent.h" -#include "mozilla/UniquePtr.h" -#include "mozilla/Unused.h" -#include "nsXULAppAPI.h" - -#include "ShadowLayerUtilsGralloc.h" - -#include "nsIMemoryReporter.h" - -#include "gfxPlatform.h" -#include "gfx2DGlue.h" -#include "GLContext.h" - -#include "GeckoProfiler.h" - -#include "cutils/properties.h" - -#include "MainThreadUtils.h" - -using namespace android; -using namespace mozilla::layers; -using namespace mozilla::gl; - -using base::FileDescriptor; - -namespace IPC { - -void -ParamTraits::Write(Message* aMsg, - const paramType& aParam) -{ - aMsg->WriteInt(aParam.mOwner); - aMsg->WriteInt64(aParam.mKey); -} - -bool -ParamTraits::Read(const Message* aMsg, PickleIterator* aIter, - paramType* aParam) -{ - int owner; - int64_t index; - if (!aMsg->ReadInt(aIter, &owner) || - !aMsg->ReadInt64(aIter, &index)) { - printf_stderr("ParamTraits::Read() failed to read a message\n"); - return false; - } - aParam->mOwner = owner; - aParam->mKey = index; - return true; -} - -void -ParamTraits::Write(Message* aMsg, - const paramType& aParam) -{ -#if ANDROID_VERSION >= 19 - sp flattenable = aParam.mGraphicBuffer; -#else - Flattenable *flattenable = aParam.mGraphicBuffer.get(); -#endif - size_t nbytes = flattenable->getFlattenedSize(); - size_t nfds = flattenable->getFdCount(); - - char data[nbytes]; - int fds[nfds]; - -#if ANDROID_VERSION >= 19 - // Make a copy of "data" and "fds" for flatten() to avoid casting problem - void *pdata = (void *)data; - int *pfds = fds; - - flattenable->flatten(pdata, nbytes, pfds, nfds); - - // In Kitkat, flatten() will change the value of nbytes and nfds, which dues - // to multiple parcelable object consumption. The actual size and fd count - // which returned by getFlattenedSize() and getFdCount() are not changed. - // So we change nbytes and nfds back by call corresponding calls. - nbytes = flattenable->getFlattenedSize(); - nfds = flattenable->getFdCount(); -#else - flattenable->flatten(data, nbytes, fds, nfds); -#endif - aMsg->WriteInt(aParam.mRef.mOwner); - aMsg->WriteInt64(aParam.mRef.mKey); - aMsg->WriteSize(nbytes); - aMsg->WriteBytes(data, nbytes); - for (size_t n = 0; n < nfds; ++n) { - // These buffers can't die in transit because they're created - // synchonously and the parent-side buffer can only be dropped if - // there's a crash. - aMsg->WriteFileDescriptor(FileDescriptor(fds[n], false)); - } -} - -bool -ParamTraits::Read(const Message* aMsg, - PickleIterator* aIter, paramType* aResult) -{ - MOZ_ASSERT(!aResult->mGraphicBuffer.get()); - MOZ_ASSERT(aResult->mRef.mOwner == 0); - MOZ_ASSERT(aResult->mRef.mKey == -1); - - size_t nbytes; - int owner; - int64_t index; - - if (!aMsg->ReadInt(aIter, &owner) || - !aMsg->ReadInt64(aIter, &index) || - !aMsg->ReadSize(aIter, &nbytes)) { - printf_stderr("ParamTraits::Read() failed to read a message\n"); - return false; - } - - auto data = mozilla::MakeUnique(nbytes); - - if (!aMsg->ReadBytesInto(aIter, data.get(), nbytes)) { - printf_stderr("ParamTraits::Read() failed to read a message\n"); - return false; - } - - size_t nfds = aMsg->num_fds(); - int fds[nfds]; - - for (size_t n = 0; n < nfds; ++n) { - FileDescriptor fd; - if (!aMsg->ReadFileDescriptor(aIter, &fd)) { - printf_stderr("ParamTraits::Read() failed to read file descriptors\n"); - return false; - } - // If the GraphicBuffer was shared cross-process, SCM_RIGHTS does - // the right thing and dup's the fd. If it's shared cross-thread, - // SCM_RIGHTS doesn't dup the fd. - // But in shared cross-thread, dup fd is not necessary because we get - // a pointer to the GraphicBuffer directly from SharedBufferManagerParent - // and don't create a new GraphicBuffer around the fd. - fds[n] = fd.fd; - } - - aResult->mRef.mOwner = owner; - aResult->mRef.mKey = index; - if (XRE_IsParentProcess()) { - // If we are in chrome process, we can just get GraphicBuffer directly from - // SharedBufferManagerParent. - aResult->mGraphicBuffer = SharedBufferManagerParent::GetGraphicBuffer(aResult->mRef); - } else { - // Deserialize GraphicBuffer -#if ANDROID_VERSION >= 19 - sp buffer(new GraphicBuffer()); - const void* datap = (const void*)data.get(); - const int* fdsp = &fds[0]; - if (NO_ERROR != buffer->unflatten(datap, nbytes, fdsp, nfds)) { - buffer = nullptr; - } -#else - sp buffer(new GraphicBuffer()); - Flattenable *flattenable = buffer.get(); - if (NO_ERROR != flattenable->unflatten(data.get(), nbytes, fds, nfds)) { - buffer = nullptr; - } -#endif - if (buffer.get()) { - aResult->mGraphicBuffer = buffer; - } - } - - if (!aResult->mGraphicBuffer.get()) { - printf_stderr("ParamTraits::Read() failed to get gralloc buffer\n"); - return false; - } - - return true; -} - -} // namespace IPC - -namespace mozilla { -namespace layers { - -MagicGrallocBufferHandle::MagicGrallocBufferHandle(const sp& aGraphicBuffer, GrallocBufferRef ref) - : mGraphicBuffer(aGraphicBuffer) - , mRef(ref) -{ -} - -//----------------------------------------------------------------------------- -// Parent process - -/*static*/ bool -LayerManagerComposite::SupportsDirectTexturing() -{ - return true; -} - -/*static*/ void -LayerManagerComposite::PlatformSyncBeforeReplyUpdate() -{ - // Nothing to be done for gralloc. -} - -//----------------------------------------------------------------------------- -// Both processes - -/*static*/ sp -GetGraphicBufferFrom(MaybeMagicGrallocBufferHandle aHandle) -{ - if (aHandle.type() != MaybeMagicGrallocBufferHandle::TMagicGrallocBufferHandle) { - if (aHandle.type() == MaybeMagicGrallocBufferHandle::TGrallocBufferRef) { - if (XRE_IsParentProcess()) { - return SharedBufferManagerParent::GetGraphicBuffer(aHandle.get_GrallocBufferRef()); - } - return SharedBufferManagerChild::GetSingleton()->GetGraphicBuffer(aHandle.get_GrallocBufferRef().mKey); - } - } else { - MagicGrallocBufferHandle realHandle = aHandle.get_MagicGrallocBufferHandle(); - return realHandle.mGraphicBuffer; - } - return nullptr; -} - -android::sp -GetGraphicBufferFromDesc(SurfaceDescriptor aDesc) -{ - MaybeMagicGrallocBufferHandle handle; - if (aDesc.type() == SurfaceDescriptor::TSurfaceDescriptorGralloc) { - handle = aDesc.get_SurfaceDescriptorGralloc().buffer(); - } - return GetGraphicBufferFrom(handle); -} - -/*static*/ void -ShadowLayerForwarder::PlatformSyncBeforeUpdate() -{ - // Nothing to be done for gralloc. -} - -} // namespace layers -} // namespace mozilla diff --git a/gfx/layers/ipc/ShadowLayerUtilsGralloc.h b/gfx/layers/ipc/ShadowLayerUtilsGralloc.h deleted file mode 100644 index b963e3bd9d3e..000000000000 --- a/gfx/layers/ipc/ShadowLayerUtilsGralloc.h +++ /dev/null @@ -1,95 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * vim: sw=2 ts=8 et : - */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef mozilla_layers_ShadowLayerUtilsGralloc_h -#define mozilla_layers_ShadowLayerUtilsGralloc_h - -#include -#include - -#include "base/process.h" -#include "ipc/IPCMessageUtils.h" - -#define MOZ_HAVE_SURFACEDESCRIPTORGRALLOC -#define MOZ_HAVE_PLATFORM_SPECIFIC_LAYER_BUFFERS - -namespace mozilla { -namespace layers { - -class MaybeMagicGrallocBufferHandle; -class SurfaceDescriptor; - -struct GrallocBufferRef { - base::ProcessId mOwner; - int64_t mKey; - - GrallocBufferRef() - : mOwner(0) - , mKey(-1) - { - - } - - bool operator== (const GrallocBufferRef rhs) const{ - return mOwner == rhs.mOwner && mKey == rhs.mKey; - } -}; -/** - * This class exists to share the underlying GraphicBuffer resources - * from one thread context to another. This requires going through - * slow paths in the kernel so can be somewhat expensive. - * - * This is not just platform-specific, but also - * gralloc-implementation-specific. - */ -struct MagicGrallocBufferHandle { - typedef android::GraphicBuffer GraphicBuffer; - MagicGrallocBufferHandle() {} - - MagicGrallocBufferHandle(const android::sp& aGraphicBuffer, GrallocBufferRef ref); - - // Default copy ctor and operator= are OK - - bool operator==(const MagicGrallocBufferHandle& aOther) const { - return mGraphicBuffer == aOther.mGraphicBuffer; - } - - android::sp mGraphicBuffer; - GrallocBufferRef mRef; -}; - -/** - * Util function to find GraphicBuffer from SurfaceDescriptor, caller of this function should check origin - * to make sure not corrupt others buffer - */ -android::sp GetGraphicBufferFrom(MaybeMagicGrallocBufferHandle aHandle); -android::sp GetGraphicBufferFromDesc(SurfaceDescriptor aDesc); - -} // namespace layers -} // namespace mozilla - -namespace IPC { - -template <> -struct ParamTraits { - typedef mozilla::layers::MagicGrallocBufferHandle paramType; - - static void Write(Message* aMsg, const paramType& aParam); - static bool Read(const Message* aMsg, PickleIterator* aIter, paramType* aResult); -}; - -template<> -struct ParamTraits { - typedef mozilla::layers::GrallocBufferRef paramType; - static void Write(Message* aMsg, const paramType& aParam); - static bool Read(const Message* aMsg, PickleIterator* aIter, paramType* aResult); -}; - - -} // namespace IPC - -#endif // mozilla_layers_ShadowLayerUtilsGralloc_h diff --git a/gfx/layers/ipc/ShadowLayers.cpp b/gfx/layers/ipc/ShadowLayers.cpp index 2b41fcfbd8a9..085ef46f85d6 100644 --- a/gfx/layers/ipc/ShadowLayers.cpp +++ b/gfx/layers/ipc/ShadowLayers.cpp @@ -29,7 +29,6 @@ #include "mozilla/layers/LayersSurfaces.h" // for SurfaceDescriptor, etc #include "mozilla/layers/LayersTypes.h" // for MOZ_LAYERS_LOG #include "mozilla/layers/LayerTransactionChild.h" -#include "mozilla/layers/SharedBufferManagerChild.h" #include "mozilla/layers/PCompositableChild.h" #include "mozilla/layers/PTextureChild.h" #include "ShadowLayerUtils.h" @@ -357,24 +356,6 @@ ShadowLayerForwarder::UseTiledLayerBuffer(CompositableClient* aCompositable, { MOZ_ASSERT(aCompositable && aCompositable->IsConnected()); -#ifdef MOZ_WIDGET_GONK - // GrallocTextureData alwasys requests fence delivery if ANDROID_VERSION >= 17. - const InfallibleTArray& tileDescriptors = aTileLayerDescriptor.tiles(); - for (size_t i = 0; i < tileDescriptors.Length(); i++) { - const TileDescriptor& tileDesc = tileDescriptors[i]; - if (tileDesc.type() != TileDescriptor::TTexturedTileDescriptor) { - continue; - } - const TexturedTileDescriptor& texturedDesc = tileDesc.get_TexturedTileDescriptor(); - RefPtr texture = TextureClient::AsTextureClient(texturedDesc.textureChild()); - mClientLayerManager->GetCompositorBridgeChild()->HoldUntilCompositableRefReleasedIfNecessary(texture); - if (texturedDesc.textureOnWhite().type() == MaybeTexture::TPTextureChild) { - texture = TextureClient::AsTextureClient(texturedDesc.textureOnWhite().get_PTextureChild()); - mClientLayerManager->GetCompositorBridgeChild()->HoldUntilCompositableRefReleasedIfNecessary(texture); - } - } -#endif - mTxn->AddNoSwapPaint(CompositableOperation(nullptr, aCompositable->GetIPDLActor(), OpUseTiledLayerBuffer(aTileLayerDescriptor))); } @@ -463,20 +444,6 @@ ShadowLayerForwarder::UseComponentAlphaTextures(CompositableClient* aCompositabl ); } -#ifdef MOZ_WIDGET_GONK -void -ShadowLayerForwarder::UseOverlaySource(CompositableClient* aCompositable, - const OverlaySource& aOverlay, - const nsIntRect& aPictureRect) -{ - MOZ_ASSERT(aCompositable); - MOZ_ASSERT(aCompositable->IsConnected()); - - mTxn->AddEdit(CompositableOperation(nullptr, aCompositable->GetIPDLActor(), - OpUseOverlaySource(aOverlay, aPictureRect))); -} -#endif - static bool AddOpDestroy(Transaction* aTxn, const OpDestroy& op, bool synchronously) { diff --git a/gfx/layers/ipc/ShadowLayers.h b/gfx/layers/ipc/ShadowLayers.h index 8956b4b2b1be..a0884c3109ec 100644 --- a/gfx/layers/ipc/ShadowLayers.h +++ b/gfx/layers/ipc/ShadowLayers.h @@ -274,11 +274,6 @@ public: virtual void UseComponentAlphaTextures(CompositableClient* aCompositable, TextureClient* aClientOnBlack, TextureClient* aClientOnWhite) override; -#ifdef MOZ_WIDGET_GONK - virtual void UseOverlaySource(CompositableClient* aCompositable, - const OverlaySource& aOverlay, - const nsIntRect& aPictureRect) override; -#endif /** * Used for debugging to tell the compositor how long this frame took to paint. diff --git a/gfx/layers/ipc/SharedBufferManagerChild.cpp b/gfx/layers/ipc/SharedBufferManagerChild.cpp deleted file mode 100644 index 3ebd7ee78842..000000000000 --- a/gfx/layers/ipc/SharedBufferManagerChild.cpp +++ /dev/null @@ -1,352 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * vim: sw=2 ts=8 et : - */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this file, - * You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "base/task.h" // for NewRunnableFunction, etc -#include "base/thread.h" // for Thread -#include "mozilla/gfx/Logging.h" // for gfxDebug -#include "mozilla/layers/SharedBufferManagerChild.h" -#include "mozilla/layers/SharedBufferManagerParent.h" -#include "mozilla/Sprintf.h" // for SprintfLiteral -#include "mozilla/StaticPtr.h" // for StaticRefPtr -#include "mozilla/ReentrantMonitor.h" // for ReentrantMonitor, etc -#include "nsThreadUtils.h" // for NS_IsMainThread - -#ifdef MOZ_WIDGET_GONK -#define LOG(args...) __android_log_print(ANDROID_LOG_INFO, "SBMChild", ## args) -#endif - -namespace mozilla { -namespace layers { - -using namespace mozilla::gfx; - -// Singleton -SharedBufferManagerChild* SharedBufferManagerChild::sSharedBufferManagerChildSingleton = nullptr; -SharedBufferManagerParent* SharedBufferManagerChild::sSharedBufferManagerParentSingleton = nullptr; -base::Thread* SharedBufferManagerChild::sSharedBufferManagerChildThread = nullptr; - -SharedBufferManagerChild::SharedBufferManagerChild() -#ifdef MOZ_HAVE_SURFACEDESCRIPTORGRALLOC - : mBufferMutex("BufferMonitor") -#endif -{ -} - -static bool -InSharedBufferManagerChildThread() -{ - return SharedBufferManagerChild::sSharedBufferManagerChildThread->thread_id() == PlatformThread::CurrentId(); -} - -// dispatched function -static void -DeleteSharedBufferManagerSync(ReentrantMonitor *aBarrier, bool *aDone) -{ - ReentrantMonitorAutoEnter autoMon(*aBarrier); - - MOZ_ASSERT(InSharedBufferManagerChildThread(), - "Should be in SharedBufferManagerChild thread."); - SharedBufferManagerChild::sSharedBufferManagerChildSingleton = nullptr; - SharedBufferManagerChild::sSharedBufferManagerParentSingleton = nullptr; - *aDone = true; - aBarrier->NotifyAll(); -} - -// dispatched function -static void -ConnectSharedBufferManager(SharedBufferManagerChild *child, SharedBufferManagerParent *parent) -{ - MessageLoop *parentMsgLoop = parent->GetMessageLoop(); - ipc::MessageChannel *parentChannel = parent->GetIPCChannel(); - child->Open(parentChannel, parentMsgLoop, mozilla::ipc::ChildSide); -} - -base::Thread* -SharedBufferManagerChild::GetThread() const -{ - return sSharedBufferManagerChildThread; -} - -SharedBufferManagerChild* -SharedBufferManagerChild::GetSingleton() -{ - return sSharedBufferManagerChildSingleton; -} - -bool -SharedBufferManagerChild::IsCreated() -{ - return GetSingleton() != nullptr; -} - -void -SharedBufferManagerChild::StartUp() -{ - NS_ASSERTION(NS_IsMainThread(), "Should be on the main Thread!"); - SharedBufferManagerChild::StartUpOnThread(new base::Thread("BufferMgrChild")); -} - -static void -ConnectSharedBufferManagerInChildProcess(mozilla::ipc::Transport* aTransport, - base::ProcessId aOtherPid) -{ - // Bind the IPC channel to the shared buffer manager thread. - SharedBufferManagerChild::sSharedBufferManagerChildSingleton->Open(aTransport, - aOtherPid, - XRE_GetIOMessageLoop(), - ipc::ChildSide); - -} - -PSharedBufferManagerChild* -SharedBufferManagerChild::StartUpInChildProcess(Transport* aTransport, - base::ProcessId aOtherPid) -{ - NS_ASSERTION(NS_IsMainThread(), "Should be on the main Thread!"); - - sSharedBufferManagerChildThread = new base::Thread("BufferMgrChild"); - if (!sSharedBufferManagerChildThread->Start()) { - return nullptr; - } - - sSharedBufferManagerChildSingleton = new SharedBufferManagerChild(); - sSharedBufferManagerChildSingleton->GetMessageLoop()->PostTask( - NewRunnableFunction(ConnectSharedBufferManagerInChildProcess, - aTransport, aOtherPid)); - - return sSharedBufferManagerChildSingleton; -} - -void -SharedBufferManagerChild::ShutDown() -{ - NS_ASSERTION(NS_IsMainThread(), "Should be on the main Thread!"); - if (IsCreated()) { - SharedBufferManagerChild::DestroyManager(); - delete sSharedBufferManagerChildThread; - sSharedBufferManagerChildThread = nullptr; - } -} - -bool -SharedBufferManagerChild::StartUpOnThread(base::Thread* aThread) -{ - MOZ_ASSERT(aThread, "SharedBufferManager needs a thread."); - if (sSharedBufferManagerChildSingleton != nullptr) { - return false; - } - - sSharedBufferManagerChildThread = aThread; - if (!aThread->IsRunning()) { - aThread->Start(); - } - sSharedBufferManagerChildSingleton = new SharedBufferManagerChild(); - char thrname[128]; - SprintfLiteral(thrname, "BufMgrParent#%d", base::Process::Current().pid()); - sSharedBufferManagerParentSingleton = new SharedBufferManagerParent( - base::Process::Current().pid(), new base::Thread(thrname)); - sSharedBufferManagerChildSingleton->ConnectAsync(sSharedBufferManagerParentSingleton); - return true; -} - -void -SharedBufferManagerChild::DestroyManager() -{ - MOZ_ASSERT(!InSharedBufferManagerChildThread(), - "This method must not be called in this thread."); - // ...because we are about to dispatch synchronous messages to the - // BufferManagerChild thread. - - if (!IsCreated()) { - return; - } - - ReentrantMonitor barrier("BufferManagerDestroyTask lock"); - ReentrantMonitorAutoEnter autoMon(barrier); - - bool done = false; - sSharedBufferManagerChildSingleton->GetMessageLoop()->PostTask( - NewRunnableFunction(&DeleteSharedBufferManagerSync, &barrier, &done)); - while (!done) { - barrier.Wait(); - } - -} - -MessageLoop * -SharedBufferManagerChild::GetMessageLoop() const -{ - return sSharedBufferManagerChildThread != nullptr ? - sSharedBufferManagerChildThread->message_loop() : - nullptr; -} - -void -SharedBufferManagerChild::ConnectAsync(SharedBufferManagerParent* aParent) -{ - GetMessageLoop()->PostTask(NewRunnableFunction(&ConnectSharedBufferManager, - this, aParent)); -} - -// dispatched function -void -SharedBufferManagerChild::AllocGrallocBufferSync(const GrallocParam& aParam, - Monitor* aBarrier, - bool* aDone) -{ - MonitorAutoLock autoMon(*aBarrier); - - sSharedBufferManagerChildSingleton->AllocGrallocBufferNow(aParam.size, - aParam.format, - aParam.usage, - aParam.buffer); - *aDone = true; - aBarrier->NotifyAll(); -} - -// dispatched function -void -SharedBufferManagerChild::DeallocGrallocBufferSync(const mozilla::layers::MaybeMagicGrallocBufferHandle& aBuffer) -{ - SharedBufferManagerChild::sSharedBufferManagerChildSingleton-> - DeallocGrallocBufferNow(aBuffer); -} - -bool -SharedBufferManagerChild::AllocGrallocBuffer(const gfx::IntSize& aSize, - const uint32_t& aFormat, - const uint32_t& aUsage, - mozilla::layers::MaybeMagicGrallocBufferHandle* aBuffer) -{ - if (aSize.width <= 0 || aSize.height <= 0) { - gfxDebug() << "Asking for gralloc of invalid size " << aSize.width << "x" << aSize.height; - return false; - } - - if (InSharedBufferManagerChildThread()) { - return SharedBufferManagerChild::AllocGrallocBufferNow(aSize, aFormat, aUsage, aBuffer); - } - - Monitor barrier("AllocSurfaceDescriptorGralloc Lock"); - MonitorAutoLock autoMon(barrier); - bool done = false; - - GetMessageLoop()->PostTask( - NewRunnableFunction(&AllocGrallocBufferSync, - GrallocParam(aSize, aFormat, aUsage, aBuffer), &barrier, &done)); - - while (!done) { - barrier.Wait(); - } - return true; -} - -bool -SharedBufferManagerChild::AllocGrallocBufferNow(const IntSize& aSize, - const uint32_t& aFormat, - const uint32_t& aUsage, - mozilla::layers::MaybeMagicGrallocBufferHandle* aHandle) -{ - // These are protected functions, we can just assert and ask the caller to test - MOZ_ASSERT(aSize.width >= 0 && aSize.height >= 0); - -#ifdef MOZ_HAVE_SURFACEDESCRIPTORGRALLOC - mozilla::layers::MaybeMagicGrallocBufferHandle handle; - if (!SendAllocateGrallocBuffer(aSize, aFormat, aUsage, &handle)) { - return false; - } - if (handle.type() != mozilla::layers::MaybeMagicGrallocBufferHandle::TMagicGrallocBufferHandle) { - return false; - } - *aHandle = handle.get_MagicGrallocBufferHandle().mRef; - - { - MutexAutoLock lock(mBufferMutex); - MOZ_ASSERT(mBuffers.count(handle.get_MagicGrallocBufferHandle().mRef.mKey)==0); - mBuffers[handle.get_MagicGrallocBufferHandle().mRef.mKey] = handle.get_MagicGrallocBufferHandle().mGraphicBuffer; - } - return true; -#else - NS_RUNTIMEABORT("No GrallocBuffer for you"); - return true; -#endif -} - -void -SharedBufferManagerChild::DeallocGrallocBuffer(const mozilla::layers::MaybeMagicGrallocBufferHandle& aBuffer) -{ -#ifdef MOZ_HAVE_SURFACEDESCRIPTORGRALLOC - NS_ASSERTION(aBuffer.type() != mozilla::layers::MaybeMagicGrallocBufferHandle::TMagicGrallocBufferHandle, "We shouldn't try to do IPC with real buffer"); - if (aBuffer.type() != mozilla::layers::MaybeMagicGrallocBufferHandle::TGrallocBufferRef) { - return; - } -#endif - - if (InSharedBufferManagerChildThread()) { - return SharedBufferManagerChild::DeallocGrallocBufferNow(aBuffer); - } - - GetMessageLoop()->PostTask(NewRunnableFunction(&DeallocGrallocBufferSync, aBuffer)); -} - -void -SharedBufferManagerChild::DeallocGrallocBufferNow(const mozilla::layers::MaybeMagicGrallocBufferHandle& aBuffer) -{ -#ifdef MOZ_HAVE_SURFACEDESCRIPTORGRALLOC - NS_ASSERTION(aBuffer.type() != mozilla::layers::MaybeMagicGrallocBufferHandle::TMagicGrallocBufferHandle, "We shouldn't try to do IPC with real buffer"); - - { - MutexAutoLock lock(mBufferMutex); - mBuffers.erase(aBuffer.get_GrallocBufferRef().mKey); - } - SendDropGrallocBuffer(aBuffer); -#else - NS_RUNTIMEABORT("No GrallocBuffer for you"); -#endif -} - -void -SharedBufferManagerChild::DropGrallocBuffer(const mozilla::layers::MaybeMagicGrallocBufferHandle& aHandle) -{ -#ifdef MOZ_HAVE_SURFACEDESCRIPTORGRALLOC - int64_t bufferKey = -1; - if (aHandle.type() == mozilla::layers::MaybeMagicGrallocBufferHandle::TMagicGrallocBufferHandle) { - bufferKey = aHandle.get_MagicGrallocBufferHandle().mRef.mKey; - } else if (aHandle.type() == mozilla::layers::MaybeMagicGrallocBufferHandle::TGrallocBufferRef) { - bufferKey = aHandle.get_GrallocBufferRef().mKey; - } else { - return; - } - - { - MutexAutoLock lock(mBufferMutex); - mBuffers.erase(bufferKey); - } -#endif -} - -bool SharedBufferManagerChild::RecvDropGrallocBuffer(const mozilla::layers::MaybeMagicGrallocBufferHandle& aHandle) -{ - DropGrallocBuffer(aHandle); - return true; -} - -#ifdef MOZ_HAVE_SURFACEDESCRIPTORGRALLOC -android::sp -SharedBufferManagerChild::GetGraphicBuffer(int64_t key) -{ - MutexAutoLock lock(mBufferMutex); - if (mBuffers.count(key) == 0) { - printf_stderr("SharedBufferManagerChild::GetGraphicBuffer -- invalid key"); - return nullptr; - } - return mBuffers[key]; -} -#endif - -} /* namespace layers */ -} /* namespace mozilla */ diff --git a/gfx/layers/ipc/SharedBufferManagerChild.h b/gfx/layers/ipc/SharedBufferManagerChild.h deleted file mode 100644 index 9af89f1dbd59..000000000000 --- a/gfx/layers/ipc/SharedBufferManagerChild.h +++ /dev/null @@ -1,168 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim: set sw=2 ts=8 et tw=80 : */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef SharedBufferManagerCHILD_H_ -#define SharedBufferManagerCHILD_H_ - -#include "mozilla/layers/PSharedBufferManagerChild.h" -#ifdef MOZ_HAVE_SURFACEDESCRIPTORGRALLOC -#include "mozilla/Mutex.h" -#endif - -namespace base { -class Thread; -} // namespace base - -namespace mozilla { -#ifdef MOZ_HAVE_SURFACEDESCRIPTORGRALLOC -class Mutex; -#endif - -namespace layers { -class SharedBufferManagerParent; - -struct GrallocParam { - gfx::IntSize size; - uint32_t format; - uint32_t usage; - mozilla::layers::MaybeMagicGrallocBufferHandle* buffer; - - GrallocParam(const gfx::IntSize& aSize, - const uint32_t& aFormat, - const uint32_t& aUsage, - mozilla::layers::MaybeMagicGrallocBufferHandle* aBuffer) - : size(aSize) - , format(aFormat) - , usage(aUsage) - , buffer(aBuffer) - {} -}; - -class SharedBufferManagerChild : public PSharedBufferManagerChild { -public: - SharedBufferManagerChild(); - /** - * Creates the gralloc buffer manager with a dedicated thread for SharedBufferManagerChild. - * - * We may want to use a specific thread in the future. In this case, use - * CreateWithThread instead. - */ - static void StartUp(); - - static PSharedBufferManagerChild* - StartUpInChildProcess(Transport* aTransport, ProcessId aOtherProcess); - - /** - * Creates the SharedBufferManagerChild manager protocol. - */ - static bool StartUpOnThread(base::Thread* aThread); - - /** - * Destroys The SharedBufferManager protocol. - * - * The actual destruction happens synchronously on the SharedBufferManagerChild thread - * which means that if this function is called from another thread, the current - * thread will be paused until the destruction is done. - */ - static void DestroyManager(); - - /** - * Destroys the grallob buffer manager calling DestroyManager, and destroys the - * SharedBufferManager's thread. - * - * If you don't want to destroy the thread, call DestroyManager directly - * instead. - */ - static void ShutDown(); - - /** - * returns the singleton instance. - * - * can be called from any thread. - */ - static SharedBufferManagerChild* GetSingleton(); - - /** - * Dispatches a task to the SharedBufferManagerChild thread to do the connection - */ - void ConnectAsync(SharedBufferManagerParent* aParent); - - /** - * Allocate GrallocBuffer remotely. - */ - bool - AllocGrallocBuffer(const gfx::IntSize&, const uint32_t&, const uint32_t&, mozilla::layers::MaybeMagicGrallocBufferHandle*); - - /** - * Deallocate a remotely allocated gralloc buffer. - * As gralloc buffer life cycle controlled by sp, this just break the sharing status of the underlying buffer - * and decrease the reference count on both side. - */ - void - DeallocGrallocBuffer(const mozilla::layers::MaybeMagicGrallocBufferHandle& aBuffer); - - void - DropGrallocBuffer(const mozilla::layers::MaybeMagicGrallocBufferHandle& aHandle); - - virtual bool RecvDropGrallocBuffer(const mozilla::layers::MaybeMagicGrallocBufferHandle& aHandle); - -#ifdef MOZ_HAVE_SURFACEDESCRIPTORGRALLOC - android::sp GetGraphicBuffer(int64_t key); -#endif - - base::Thread* GetThread() const; - - MessageLoop* GetMessageLoop() const; - - static bool IsCreated(); - - static base::Thread* sSharedBufferManagerChildThread; - static SharedBufferManagerChild* sSharedBufferManagerChildSingleton; - static SharedBufferManagerParent* sSharedBufferManagerParentSingleton; // Only available in Chrome process - -protected: - /** - * Part of the allocation of gralloc SurfaceDescriptor that is - * executed on the SharedBufferManagerChild thread after invoking - * AllocSurfaceDescriptorGralloc. - * - * Must be called from the SharedBufferManagerChild thread. - */ - bool - AllocGrallocBufferNow(const gfx::IntSize& aSize, - const uint32_t& aFormat, - const uint32_t& aUsage, - mozilla::layers::MaybeMagicGrallocBufferHandle* aBuffer); - - // Dispatched function - static void - AllocGrallocBufferSync(const GrallocParam& aParam, - Monitor* aBarrier, - bool* aDone); - - /** - * Part of the deallocation of gralloc SurfaceDescriptor that is - * executed on the SharedBufferManagerChild thread after invoking - * DeallocSurfaceDescriptorGralloc. - * - * Must be called from the SharedBufferManagerChild thread. - */ - void - DeallocGrallocBufferNow(const mozilla::layers::MaybeMagicGrallocBufferHandle& handle); - - // dispatched function - static void - DeallocGrallocBufferSync(const mozilla::layers::MaybeMagicGrallocBufferHandle& handle); - -#ifdef MOZ_HAVE_SURFACEDESCRIPTORGRALLOC - std::map > mBuffers; - Mutex mBufferMutex; -#endif -}; - -} /* namespace layers */ -} /* namespace mozilla */ -#endif /* SharedBufferManagerCHILD_H_*/ diff --git a/gfx/layers/ipc/SharedBufferManagerParent.cpp b/gfx/layers/ipc/SharedBufferManagerParent.cpp deleted file mode 100644 index 9afb3f87ce72..000000000000 --- a/gfx/layers/ipc/SharedBufferManagerParent.cpp +++ /dev/null @@ -1,364 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim: set sw=2 ts=8 et tw=80 : */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "mozilla/layers/SharedBufferManagerParent.h" -#include "base/message_loop.h" // for MessageLoop -#include "base/process.h" // for ProcessId -#include "base/task.h" // for CancelableTask, DeleteTask, etc -#include "base/thread.h" -#include "mozilla/Sprintf.h" // for SprintfLiteral -#include "mozilla/ipc/MessageChannel.h" // for MessageChannel, etc -#include "mozilla/ipc/ProtocolUtils.h" -#include "mozilla/ipc/Transport.h" // for Transport -#include "mozilla/Sprintf.h" -#include "mozilla/UniquePtr.h" // for UniquePtr -#include "mozilla/Unused.h" -#include "nsIMemoryReporter.h" -#ifdef MOZ_WIDGET_GONK -#include "mozilla/LinuxUtils.h" -#include "ui/PixelFormat.h" -#endif -#include "nsPrintfCString.h" -#include "nsThreadUtils.h" - -using namespace mozilla::ipc; -#ifdef MOZ_WIDGET_GONK -using namespace android; -#endif -using std::map; - -namespace mozilla { -namespace layers { - -map SharedBufferManagerParent::sManagers; -StaticAutoPtr SharedBufferManagerParent::sManagerMonitor; -uint64_t SharedBufferManagerParent::sBufferKey(0); - -#ifdef MOZ_WIDGET_GONK -class GrallocReporter final : public nsIMemoryReporter -{ -public: - NS_DECL_ISUPPORTS - - NS_IMETHOD CollectReports(nsIHandleReportCallback* aHandleReport, - nsISupports* aData, bool aAnonymize) override - { - if (SharedBufferManagerParent::sManagerMonitor) { - SharedBufferManagerParent::sManagerMonitor->Lock(); - } - map::iterator it; - for (it = SharedBufferManagerParent::sManagers.begin(); it != SharedBufferManagerParent::sManagers.end(); it++) { - base::ProcessId pid = it->first; - SharedBufferManagerParent *mgr = it->second; - if (!mgr) { - printf_stderr("GrallocReporter::CollectReports(): mgr is nullptr"); - continue; - } - - nsAutoCString pidName; - LinuxUtils::GetThreadName(pid, pidName); - - MutexAutoLock lock(mgr->mLock); - std::map >::iterator buf_it; - for (buf_it = mgr->mBuffers.begin(); buf_it != mgr->mBuffers.end(); buf_it++) { - android::sp gb = buf_it->second; - int bpp = android::bytesPerPixel(gb->getPixelFormat()); - int stride = gb->getStride(); - int height = gb->getHeight(); - int amount = bpp > 0 - ? (stride * height * bpp) - // Special case for BSP specific formats (mainly YUV formats, count it as normal YUV buffer). - : (stride * height * 3 / 2); - - nsPrintfCString gpath("gralloc/%s (pid=%d)/buffer(width=%d, height=%d, bpp=%d, stride=%d)", - pidName.get(), pid, gb->getWidth(), height, bpp, stride); - - aHandleReport->Callback( - EmptyCString(), gpath, KIND_OTHER, UNITS_BYTES, amount, - NS_LITERAL_CSTRING( -"Special RAM that can be shared between processes and directly accessed by " -"both the CPU and GPU. Gralloc memory is usually a relatively precious " -"resource, with much less available than generic RAM. When it's exhausted, " -"graphics performance can suffer. This value can be incorrect because of race " -"conditions."), - aData); - } - } - if (SharedBufferManagerParent::sManagerMonitor) { - SharedBufferManagerParent::sManagerMonitor->Unlock(); - } - return NS_OK; - } - -protected: - ~GrallocReporter() {} -}; - -NS_IMPL_ISUPPORTS(GrallocReporter, nsIMemoryReporter) -#endif - -void InitGralloc() { - NS_ASSERTION(NS_IsMainThread(), "Should be on main thread."); -#ifdef MOZ_WIDGET_GONK - RegisterStrongMemoryReporter(new GrallocReporter()); -#endif -} - -/** - * Task that deletes SharedBufferManagerParent on a specified thread. - */ -class DeleteSharedBufferManagerParentTask : public Runnable -{ -public: - explicit DeleteSharedBufferManagerParentTask(UniquePtr aSharedBufferManager) - : mSharedBufferManager(Move(aSharedBufferManager)) { - } - NS_IMETHOD Run() override { return NS_OK; } -private: - UniquePtr mSharedBufferManager; -}; - -SharedBufferManagerParent::SharedBufferManagerParent(base::ProcessId aOwner, base::Thread* aThread) - : mThread(aThread) - , mDestroyed(false) - , mLock("SharedBufferManagerParent.mLock") -{ - MOZ_ASSERT(NS_IsMainThread()); - if (!sManagerMonitor) { - sManagerMonitor = new Monitor("Manager Monitor"); - } - - MonitorAutoLock lock(*sManagerMonitor.get()); - NS_ASSERTION(NS_IsMainThread(), "Should be on main thread"); - if (!aThread->IsRunning()) { - aThread->Start(); - } - - if (sManagers.count(aOwner) != 0) { - printf_stderr("SharedBufferManagerParent already exists."); - } - mOwner = aOwner; - sManagers[aOwner] = this; -} - -SharedBufferManagerParent::~SharedBufferManagerParent() -{ - MonitorAutoLock lock(*sManagerMonitor.get()); - sManagers.erase(mOwner); - delete mThread; -} - -void -SharedBufferManagerParent::ActorDestroy(ActorDestroyReason aWhy) -{ - MutexAutoLock lock(mLock); - mDestroyed = true; -#ifdef MOZ_HAVE_SURFACEDESCRIPTORGRALLOC - mBuffers.clear(); -#endif - RefPtr task = - new DeleteSharedBufferManagerParentTask(UniquePtr(this)); - NS_DispatchToMainThread(task.forget()); -} - -static void -ConnectSharedBufferManagerInParentProcess(SharedBufferManagerParent* aManager, - Transport* aTransport, - base::ProcessId aOtherPid) -{ - aManager->Open(aTransport, aOtherPid, XRE_GetIOMessageLoop(), ipc::ParentSide); -} - -PSharedBufferManagerParent* SharedBufferManagerParent::Create(Transport* aTransport, - ProcessId aOtherPid) -{ - base::Thread* thread = nullptr; - char thrname[128]; - SprintfLiteral(thrname, "BufMgrParent#%d", aOtherPid); - thread = new base::Thread(thrname); - - SharedBufferManagerParent* manager = new SharedBufferManagerParent(aOtherPid, thread); - if (!thread->IsRunning()) { - thread->Start(); - } - thread->message_loop()->PostTask(NewRunnableFunction(ConnectSharedBufferManagerInParentProcess, - manager, aTransport, aOtherPid)); - return manager; -} - -bool SharedBufferManagerParent::RecvAllocateGrallocBuffer(const IntSize& aSize, const uint32_t& aFormat, const uint32_t& aUsage, mozilla::layers::MaybeMagicGrallocBufferHandle* aHandle) -{ -#ifdef MOZ_HAVE_SURFACEDESCRIPTORGRALLOC - - *aHandle = null_t(); - - if (aFormat == 0 || aUsage == 0) { - printf_stderr("SharedBufferManagerParent::RecvAllocateGrallocBuffer -- format and usage must be non-zero"); - return false; - } - - if (aSize.width <= 0 || aSize.height <= 0) { - printf_stderr("SharedBufferManagerParent::RecvAllocateGrallocBuffer -- requested gralloc buffer size is invalid"); - return false; - } - - // If the requested size is too big (i.e. exceeds the commonly used max GL texture size) - // then we risk OOMing the parent process. It's better to just deny the allocation and - // kill the child process, which is what the following code does. - // TODO: actually use GL_MAX_TEXTURE_SIZE instead of hardcoding 4096 - if (aSize.width > 4096 || aSize.height > 4096) { - printf_stderr("SharedBufferManagerParent::RecvAllocateGrallocBuffer -- requested gralloc buffer is too big."); - return false; - } - - sp outgoingBuffer = new GraphicBuffer(aSize.width, aSize.height, aFormat, aUsage); - if (!outgoingBuffer.get() || outgoingBuffer->initCheck() != NO_ERROR) { - printf_stderr("SharedBufferManagerParent::RecvAllocateGrallocBuffer -- gralloc buffer allocation failed"); - return true; - } - - int64_t bufferKey; - { - MonitorAutoLock lock(*sManagerMonitor.get()); - bufferKey = ++sBufferKey; - } - GrallocBufferRef ref; - ref.mOwner = mOwner; - ref.mKey = bufferKey; - *aHandle = MagicGrallocBufferHandle(outgoingBuffer, ref); - - { - MutexAutoLock lock(mLock); - mBuffers[bufferKey] = outgoingBuffer; - } -#endif - return true; -} - -bool SharedBufferManagerParent::RecvDropGrallocBuffer(const mozilla::layers::MaybeMagicGrallocBufferHandle& handle) -{ -#ifdef MOZ_HAVE_SURFACEDESCRIPTORGRALLOC - NS_ASSERTION(handle.type() == MaybeMagicGrallocBufferHandle::TGrallocBufferRef, "We shouldn't interact with the real buffer!"); - int64_t bufferKey = handle.get_GrallocBufferRef().mKey; - sp buf = GetGraphicBuffer(bufferKey); - MOZ_ASSERT(buf.get()); - MutexAutoLock lock(mLock); - NS_ASSERTION(mBuffers.count(bufferKey) == 1, "No such buffer"); - mBuffers.erase(bufferKey); - - if(!buf.get()) { - printf_stderr("SharedBufferManagerParent::RecvDropGrallocBuffer -- invalid buffer key."); - return true; - } - -#endif - return true; -} - -/*static*/ -void SharedBufferManagerParent::DropGrallocBufferSync(SharedBufferManagerParent* mgr, mozilla::layers::SurfaceDescriptor aDesc) -{ - mgr->DropGrallocBufferImpl(aDesc); -} - -/*static*/ -void SharedBufferManagerParent::DropGrallocBuffer(ProcessId id, mozilla::layers::SurfaceDescriptor aDesc) -{ - if (aDesc.type() != SurfaceDescriptor::TSurfaceDescriptorGralloc) { - return; - } - - MonitorAutoLock lock(*sManagerMonitor.get()); - SharedBufferManagerParent* mgr = SharedBufferManagerParent::GetInstance(id); - if (!mgr) { - return; - } - - MutexAutoLock mgrlock(mgr->mLock); - if (mgr->mDestroyed) { - return; - } - - if (PlatformThread::CurrentId() == mgr->mThread->thread_id()) { - MOZ_CRASH("GFX: SharedBufferManagerParent::DropGrallocBuffer should not be called on SharedBufferManagerParent thread"); - } else { - mgr->mThread->message_loop()->PostTask( - NewRunnableFunction(&DropGrallocBufferSync, mgr, aDesc)); - } - return; -} - -void SharedBufferManagerParent::DropGrallocBufferImpl(mozilla::layers::SurfaceDescriptor aDesc) -{ - MutexAutoLock lock(mLock); - if (mDestroyed) { - return; - } -#ifdef MOZ_HAVE_SURFACEDESCRIPTORGRALLOC - int64_t key = -1; - MaybeMagicGrallocBufferHandle handle; - if (aDesc.type() == SurfaceDescriptor::TSurfaceDescriptorGralloc) { - handle = aDesc.get_SurfaceDescriptorGralloc().buffer(); - } else { - return; - } - - if (handle.type() == MaybeMagicGrallocBufferHandle::TGrallocBufferRef) { - key = handle.get_GrallocBufferRef().mKey; - } else if (handle.type() == MaybeMagicGrallocBufferHandle::TMagicGrallocBufferHandle) { - key = handle.get_MagicGrallocBufferHandle().mRef.mKey; - } - - NS_ASSERTION(key != -1, "Invalid buffer key"); - NS_ASSERTION(mBuffers.count(key) == 1, "No such buffer"); - mBuffers.erase(key); - mozilla::Unused << SendDropGrallocBuffer(handle); -#endif -} - -MessageLoop* SharedBufferManagerParent::GetMessageLoop() -{ - return mThread->message_loop(); -} - -SharedBufferManagerParent* SharedBufferManagerParent::GetInstance(ProcessId id) -{ - NS_ASSERTION(sManagers.count(id) == 1, "No BufferManager for the process"); - if (sManagers.count(id) == 1) { - return sManagers[id]; - } else { - return nullptr; - } -} - -#ifdef MOZ_HAVE_SURFACEDESCRIPTORGRALLOC -android::sp -SharedBufferManagerParent::GetGraphicBuffer(int64_t key) -{ - MutexAutoLock lock(mLock); - if (mBuffers.count(key) == 1) { - return mBuffers[key]; - } else { - // The buffer can be dropped, or invalid - printf_stderr("SharedBufferManagerParent::GetGraphicBuffer -- invalid key"); - return nullptr; - } -} - -android::sp -SharedBufferManagerParent::GetGraphicBuffer(GrallocBufferRef aRef) -{ - MonitorAutoLock lock(*sManagerMonitor.get()); - SharedBufferManagerParent* parent = GetInstance(aRef.mOwner); - if (!parent) { - return nullptr; - } - return parent->GetGraphicBuffer(aRef.mKey); -} -#endif - -} /* namespace layers */ -} /* namespace mozilla */ diff --git a/gfx/layers/ipc/SharedBufferManagerParent.h b/gfx/layers/ipc/SharedBufferManagerParent.h deleted file mode 100644 index 6f5ea58227ce..000000000000 --- a/gfx/layers/ipc/SharedBufferManagerParent.h +++ /dev/null @@ -1,110 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim: set sw=2 ts=8 et tw=80 : */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef SharedBufferManagerPARENT_H_ -#define SharedBufferManagerPARENT_H_ - -#include "mozilla/Atomics.h" // for Atomic -#include "mozilla/layers/PSharedBufferManagerParent.h" -#include "mozilla/StaticPtr.h" - -#ifdef MOZ_HAVE_SURFACEDESCRIPTORGRALLOC -#include "mozilla/ipc/ProtocolUtils.h" -#include "mozilla/Mutex.h" // for Mutex - -namespace android { -class GraphicBuffer; -} -#endif - -namespace base { -class Thread; -} // namespace base - -namespace mozilla { -#ifdef MOZ_HAVE_SURFACEDESCRIPTORGRALLOC -class Mutex; -#endif - -namespace layers { - -class SharedBufferManagerParent : public PSharedBufferManagerParent -{ -friend class GrallocReporter; -public: - /** - * Create a SharedBufferManagerParent for child process, and link to the child side before leaving - */ - static PSharedBufferManagerParent* Create(Transport* aTransport, ProcessId aOtherProcess); - -#ifdef MOZ_HAVE_SURFACEDESCRIPTORGRALLOC - android::sp GetGraphicBuffer(int64_t key); - static android::sp GetGraphicBuffer(GrallocBufferRef aRef); -#endif - /** - * Create a SharedBufferManagerParent but do not open the link - */ - SharedBufferManagerParent(ProcessId aOwner, base::Thread* aThread); - virtual ~SharedBufferManagerParent(); - - /** - * When the IPC channel down or something bad make this Manager die, clear all the buffer reference! - */ - virtual void ActorDestroy(ActorDestroyReason aWhy) override; - - virtual bool RecvAllocateGrallocBuffer(const IntSize&, const uint32_t&, const uint32_t&, mozilla::layers::MaybeMagicGrallocBufferHandle*) override; - virtual bool RecvDropGrallocBuffer(const mozilla::layers::MaybeMagicGrallocBufferHandle& handle) override; - - /** - * Break the buffer's sharing state, decrease buffer reference for both side - */ - static void DropGrallocBuffer(ProcessId id, mozilla::layers::SurfaceDescriptor aDesc); - - MessageLoop* GetMessageLoop(); - -protected: - - /** - * Break the buffer's sharing state, decrease buffer reference for both side - * - * Must be called from SharedBufferManagerParent's thread - */ - void DropGrallocBufferImpl(mozilla::layers::SurfaceDescriptor aDesc); - - // dispatched function - static void DropGrallocBufferSync(SharedBufferManagerParent* mgr, mozilla::layers::SurfaceDescriptor aDesc); - - /** - * Function for find the buffer owner, most buffer passing on IPC contains only owner/key pair. - * Use these function to access the real buffer. - * Caller needs to hold sManagerMonitor. - */ - static SharedBufferManagerParent* GetInstance(ProcessId id); - - /** - * All living SharedBufferManager instances used to find the buffer owner, and parent->child IPCs - */ - static std::map sManagers; - -#ifdef MOZ_HAVE_SURFACEDESCRIPTORGRALLOC - /** - * Buffers owned by this SharedBufferManager pair - */ - std::map > mBuffers; -#endif - - base::ProcessId mOwner; - base::Thread* mThread; - bool mDestroyed; - Mutex mLock; - - static uint64_t sBufferKey; - static StaticAutoPtr sManagerMonitor; -}; - -} /* namespace layers */ -} /* namespace mozilla */ -#endif /* SharedBufferManagerPARENT_H_ */ diff --git a/gfx/layers/moz.build b/gfx/layers/moz.build index 8185c483ab5a..07e38505b935 100644 --- a/gfx/layers/moz.build +++ b/gfx/layers/moz.build @@ -26,7 +26,6 @@ EXPORTS += [ 'FrameMetrics.h', 'GLImages.h', 'GPUVideoImage.h', - 'GrallocImages.h', 'ImageContainer.h', 'ImageLayers.h', 'ImageTypes.h', @@ -186,8 +185,6 @@ EXPORTS.mozilla.layers += [ 'ipc/RemoteContentController.h', 'ipc/ShadowLayerChild.h', 'ipc/ShadowLayers.h', - 'ipc/SharedBufferManagerChild.h', - 'ipc/SharedBufferManagerParent.h', 'ipc/SharedPlanarYCbCrImage.h', 'ipc/SharedRGBImage.h', 'ipc/TextureForwarder.h', @@ -197,8 +194,6 @@ EXPORTS.mozilla.layers += [ 'LayersTypes.h', 'opengl/CompositingRenderTargetOGL.h', 'opengl/CompositorOGL.h', - 'opengl/GrallocTextureClient.h', - 'opengl/GrallocTextureHost.h', 'opengl/MacIOSurfaceTextureClientOGL.h', 'opengl/MacIOSurfaceTextureHostOGL.h', 'opengl/TextureClientOGL.h', @@ -243,34 +238,6 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': 'MacIOSurfaceImage.cpp', ] -# NB: Gralloc is available on other platforms that use the android GL -# libraries, but only Gonk is able to use it reliably because Gecko -# has full system permissions there. -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk': - EXPORTS.mozilla.layers += [ - 'basic/GrallocTextureHostBasic.h', - 'ipc/ShadowLayerUtilsGralloc.h', - ] - UNIFIED_SOURCES += [ - 'basic/GrallocTextureHostBasic.cpp', - 'GrallocImages.cpp', - 'opengl/EGLImageHelpers.cpp', - 'opengl/GrallocTextureClient.cpp', - 'opengl/GrallocTextureHost.cpp', - ] - LOCAL_INCLUDES += ['/widget/gonk'] - if CONFIG['ANDROID_VERSION'] >= '21': - LOCAL_INCLUDES += [ - '%' + '%s/%s' % (CONFIG['ANDROID_SOURCE'], d) for d in [ - 'system/core/libsync/include' - ] - ] - SOURCES += [ - 'ipc/GonkNativeHandle.cpp', - 'ipc/GonkNativeHandleUtils.cpp', - 'ipc/ShadowLayerUtilsGralloc.cpp', - ] - if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android': UNIFIED_SOURCES += [ 'apz/src/AndroidAPZ.cpp', @@ -386,8 +353,6 @@ UNIFIED_SOURCES += [ 'ipc/ShadowLayerChild.cpp', 'ipc/ShadowLayerParent.cpp', 'ipc/ShadowLayers.cpp', - 'ipc/SharedBufferManagerChild.cpp', - 'ipc/SharedBufferManagerParent.cpp', 'ipc/SharedPlanarYCbCrImage.cpp', 'ipc/SharedRGBImage.cpp', 'ipc/VideoBridgeChild.cpp', @@ -447,7 +412,6 @@ IPDL_SOURCES = [ 'ipc/PImageContainer.ipdl', 'ipc/PLayer.ipdl', 'ipc/PLayerTransaction.ipdl', - 'ipc/PSharedBufferManager.ipdl', 'ipc/PTexture.ipdl', 'ipc/PVideoBridge.ipdl', ] @@ -469,22 +433,6 @@ if CONFIG['MOZ_DEBUG']: if CONFIG['MOZ_ENABLE_D3D10_LAYER']: DEFINES['MOZ_ENABLE_D3D10_LAYER'] = True -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk': - if CONFIG['ANDROID_VERSION'] >= '17': - includes = [ - 'frameworks/av/include/media/stagefright', - 'frameworks/native/include/media/openmax', - ] - else: - includes = [ - 'frameworks/base/include/media/stagefright', - 'frameworks/base/include/media/stagefright/openmax', - ] - - LOCAL_INCLUDES += [ - '%' + '%s/%s' % (CONFIG['ANDROID_SOURCE'], d) for d in includes - ] - if CONFIG['ENABLE_TESTS']: DIRS += ['apz/test/gtest'] diff --git a/gfx/layers/opengl/CompositorOGL.cpp b/gfx/layers/opengl/CompositorOGL.cpp index 1fb1558398c1..b934d25851aa 100644 --- a/gfx/layers/opengl/CompositorOGL.cpp +++ b/gfx/layers/opengl/CompositorOGL.cpp @@ -148,12 +148,6 @@ CompositorOGL::CreateContext() NS_WARNING("Failed to create CompositorOGL context"); } -#ifdef MOZ_WIDGET_GONK - MOZ_ASSERT(widget); - widget->SetNativeData( - NS_NATIVE_OPENGL_CONTEXT, reinterpret_cast(context.get())); -#endif - return context.forget(); } @@ -179,11 +173,6 @@ CompositorOGL::CleanupResources() if (!mGLContext) return; -#ifdef MOZ_WIDGET_GONK - mWidget->RealWidget()->SetNativeData( - NS_NATIVE_OPENGL_CONTEXT, reinterpret_cast(nullptr)); -#endif - RefPtr ctx = mGLContext->GetSharedContext(); if (!ctx) { ctx = mGLContext; @@ -1778,11 +1767,7 @@ GLuint CompositorOGL::GetTemporaryTexture(GLenum aTarget, GLenum aUnit) { if (!mTexturePool) { -#ifdef MOZ_WIDGET_GONK - mTexturePool = new PerFrameTexturePoolOGL(gl()); -#else mTexturePool = new PerUnitTexturePoolOGL(gl()); -#endif } return mTexturePool->GetTexture(aTarget, aUnit); } diff --git a/gfx/layers/opengl/CompositorOGL.h b/gfx/layers/opengl/CompositorOGL.h index e89abb71ea4c..38531ffea9c5 100644 --- a/gfx/layers/opengl/CompositorOGL.h +++ b/gfx/layers/opengl/CompositorOGL.h @@ -33,10 +33,6 @@ #include "nsXULAppAPI.h" // for XRE_GetProcessType #include "nscore.h" // for NS_IMETHOD -#if defined(MOZ_WIDGET_GONK) && ANDROID_VERSION >= 21 -#include "nsTHashtable.h" // for nsTHashtable -#endif - class nsIWidget; namespace mozilla { @@ -52,10 +48,6 @@ struct Effect; struct EffectChain; class GLBlitTextureImageHelper; -#if defined(MOZ_WIDGET_GONK) && ANDROID_VERSION >= 21 -class ImageHostOverlay; -#endif - /** * Interface for pools of temporary gl textures for the compositor. * The textures are fully owned by the pool, so the latter is responsible @@ -259,25 +251,15 @@ public: virtual bool HasImageHostOverlays() override { -#if defined(MOZ_WIDGET_GONK) && ANDROID_VERSION >= 21 - return mImageHostOverlays.Count() > 0; -#else return false; -#endif } virtual void AddImageHostOverlay(ImageHostOverlay* aOverlay) override { -#if defined(MOZ_WIDGET_GONK) && ANDROID_VERSION >= 21 - mImageHostOverlays.PutEntry(aOverlay); -#endif } virtual void RemoveImageHostOverlay(ImageHostOverlay* aOverlay) override { -#if defined(MOZ_WIDGET_GONK) && ANDROID_VERSION >= 21 - mImageHostOverlays.RemoveEntry(aOverlay); -#endif } GLContext* gl() const { return mGLContext; } @@ -509,11 +491,6 @@ private: gfx::IntSize mViewportSize; ShaderProgramOGL *mCurrentProgram; - -#if defined(MOZ_WIDGET_GONK) && ANDROID_VERSION >= 21 - nsTHashtable > mImageHostOverlays; -#endif - }; } // namespace layers diff --git a/gfx/layers/opengl/GrallocTextureClient.cpp b/gfx/layers/opengl/GrallocTextureClient.cpp deleted file mode 100644 index 93a20d969fc5..000000000000 --- a/gfx/layers/opengl/GrallocTextureClient.cpp +++ /dev/null @@ -1,460 +0,0 @@ -/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- -// * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifdef MOZ_WIDGET_GONK - -#include "mozilla/gfx/2D.h" -#include "mozilla/layers/AsyncTransactionTracker.h" // for AsyncTransactionTracker -#include "mozilla/layers/GrallocTextureClient.h" -#include "mozilla/layers/TextureForwarder.h" -#include "mozilla/layers/ISurfaceAllocator.h" -#include "mozilla/layers/ShadowLayerUtilsGralloc.h" -#include "mozilla/layers/SharedBufferManagerChild.h" -#include "gfx2DGlue.h" -#include "gfxPrefs.h" // for gfxPrefs -#include "SharedSurfaceGralloc.h" - -#if defined(MOZ_WIDGET_GONK) && ANDROID_VERSION >= 17 -#include -#endif - -namespace mozilla { -namespace layers { - -using namespace mozilla::gfx; -using namespace android; - -static bool -DisableGralloc(SurfaceFormat aFormat, const gfx::IntSize& aSizeHint) -{ - if (gfxPrefs::DisableGralloc()) { - return true; - } - if (aFormat == gfx::SurfaceFormat::A8) { - return true; - } - - return false; -} - -gfx::SurfaceFormat -SurfaceFormatForPixelFormat(android::PixelFormat aFormat) -{ - switch (aFormat) { - case PIXEL_FORMAT_RGBA_8888: - return gfx::SurfaceFormat::R8G8B8A8; - case PIXEL_FORMAT_BGRA_8888: - return gfx::SurfaceFormat::B8G8R8A8; - case PIXEL_FORMAT_RGBX_8888: - return gfx::SurfaceFormat::R8G8B8X8; - case PIXEL_FORMAT_RGB_565: - return gfx::SurfaceFormat::R5G6B5_UINT16; - case HAL_PIXEL_FORMAT_YV12: - return gfx::SurfaceFormat::YUV; - default: - return gfx::SurfaceFormat::UNKNOWN; - } -} - -bool -IsGrallocRBSwapped(gfx::SurfaceFormat aFormat) { - switch (aFormat) { - case gfx::SurfaceFormat::B8G8R8A8: - case gfx::SurfaceFormat::B8G8R8X8: - return true; - default: - return false; - } -} - -uint32_t GetAndroidFormat(gfx::SurfaceFormat aFormat) -{ - switch (aFormat) { - case gfx::SurfaceFormat::R8G8B8A8: - case gfx::SurfaceFormat::B8G8R8A8: - return android::PIXEL_FORMAT_RGBA_8888; - case gfx::SurfaceFormat::R8G8B8X8: - case gfx::SurfaceFormat::B8G8R8X8: - return android::PIXEL_FORMAT_RGBX_8888; - case gfx::SurfaceFormat::R5G6B5_UINT16: - return android::PIXEL_FORMAT_RGB_565; - case gfx::SurfaceFormat::YUV: - return HAL_PIXEL_FORMAT_YV12; - case gfx::SurfaceFormat::A8: - NS_WARNING("gralloc does not support SurfaceFormat::A8"); - default: - NS_WARNING("Unsupported surface format"); - return android::PIXEL_FORMAT_UNKNOWN; - } -} - -GrallocTextureData::GrallocTextureData(MaybeMagicGrallocBufferHandle aGrallocHandle, - gfx::IntSize aSize, gfx::SurfaceFormat aFormat, - gfx::BackendType aMoz2DBackend) -: mSize(aSize) -, mFormat(aFormat) -, mMoz2DBackend(aMoz2DBackend) -, mGrallocHandle(aGrallocHandle) -, mMappedBuffer(nullptr) -, mMediaBuffer(nullptr) -{ - mGraphicBuffer = GetGraphicBufferFrom(aGrallocHandle); - MOZ_COUNT_CTOR(GrallocTextureData); -} - -GrallocTextureData::~GrallocTextureData() -{ - MOZ_COUNT_DTOR(GrallocTextureData); -} - -void -GrallocTextureData::Deallocate(LayersIPCChannel* aAllocator) -{ - MOZ_ASSERT(aAllocator); - if (aAllocator && aAllocator->IPCOpen()) { - SharedBufferManagerChild::GetSingleton()->DeallocGrallocBuffer(mGrallocHandle); - } - - mGrallocHandle = null_t(); - mGraphicBuffer = nullptr; -} - -void -GrallocTextureData::Forget(LayersIPCChannel* aAllocator) -{ - MOZ_ASSERT(aAllocator); - if (aAllocator && aAllocator->IPCOpen()) { - SharedBufferManagerChild::GetSingleton()->DropGrallocBuffer(mGrallocHandle); - } - - mGrallocHandle = null_t(); - mGraphicBuffer = nullptr; -} - -void -GrallocTextureData::FillInfo(TextureData::Info& aInfo) const -{ - aInfo.size = mSize; - aInfo.format = mFormat; - aInfo.hasIntermediateBuffer = false; - aInfo.hasSynchronization = true; - aInfo.supportsMoz2D = true; - aInfo.canExposeMappedData = true; -} - -bool -GrallocTextureData::Serialize(SurfaceDescriptor& aOutDescriptor) -{ - aOutDescriptor = SurfaceDescriptorGralloc(mGrallocHandle, gfx::IsOpaque(mFormat)); - return true; -} - -void -GrallocTextureData::WaitForFence(FenceHandle* aFence) -{ -#if defined(MOZ_WIDGET_GONK) && ANDROID_VERSION < 21 && ANDROID_VERSION >= 17 - if (aFence && aFence->IsValid()) { - RefPtr fdObj = aFence->GetAndResetFdObj(); - android::sp fence = new Fence(fdObj->GetAndResetFd()); -#if ANDROID_VERSION == 17 - fence->waitForever(1000, "GrallocTextureData::Lock"); - // 1000 is what Android uses. It is a warning timeout in ms. - // This timeout was removed in ANDROID_VERSION 18. -#else - fence->waitForever("GrallocTextureData::Lock"); -#endif - } -#endif -} - -bool -GrallocTextureData::Lock(OpenMode aMode, FenceHandle* aReleaseFence) -{ - MOZ_ASSERT(!mMappedBuffer); - - uint32_t usage = 0; - if (aMode & OpenMode::OPEN_READ) { - usage |= GRALLOC_USAGE_SW_READ_OFTEN; - } - if (aMode & OpenMode::OPEN_WRITE) { - usage |= GRALLOC_USAGE_SW_WRITE_OFTEN; - } - - void** mappedBufferPtr = reinterpret_cast(&mMappedBuffer); - - int32_t rv = 0; -#if defined(MOZ_WIDGET_GONK) && ANDROID_VERSION >= 21 - if (aReleaseFence) { - RefPtr fdObj = aReleaseFence->GetAndResetFdObj(); - rv = mGraphicBuffer->lockAsync(usage, mappedBufferPtr, - fdObj->GetAndResetFd()); - } else { - rv = mGraphicBuffer->lock(usage, mappedBufferPtr); - } -#else - // older versions of android don't have lockAsync - WaitForFence(aReleaseFence); - rv = mGraphicBuffer->lock(usage, mappedBufferPtr); -#endif - - if (rv) { - mMappedBuffer = nullptr; - NS_WARNING("Couldn't lock graphic buffer"); - return false; - } - - return true; -} - -void -GrallocTextureData::Unlock() -{ - MOZ_ASSERT(mMappedBuffer); - mMappedBuffer = nullptr; - mGraphicBuffer->unlock(); -} - -already_AddRefed -GrallocTextureData::BorrowDrawTarget() -{ - MOZ_ASSERT(mMappedBuffer); - if (!mMappedBuffer) { - return nullptr; - } - long byteStride = mGraphicBuffer->getStride() * BytesPerPixel(mFormat); - return gfxPlatform::CreateDrawTargetForData(mMappedBuffer, mSize, - byteStride, mFormat); -} - -bool -GrallocTextureData::BorrowMappedData(MappedTextureData& aMap) -{ - if (mFormat == gfx::SurfaceFormat::YUV || !mMappedBuffer) { - return false; - } - - aMap.data = mMappedBuffer; - aMap.size = mSize; - aMap.stride = mGraphicBuffer->getStride() * BytesPerPixel(mFormat); - aMap.format = mFormat; - - return true; -} - -bool -GrallocTextureData::UpdateFromSurface(gfx::SourceSurface* aSurface) -{ - MOZ_ASSERT(mMappedBuffer, "Calling TextureClient::BorrowDrawTarget without locking :("); - - if (!mMappedBuffer) { - return false; - } - - RefPtr srcSurf = aSurface->GetDataSurface(); - - if (!srcSurf) { - gfxCriticalError() << "Failed to GetDataSurface in UpdateFromSurface (GTC)."; - return false; - } - - gfx::SurfaceFormat format = SurfaceFormatForPixelFormat(mGraphicBuffer->getPixelFormat()); - if (mSize != srcSurf->GetSize() || mFormat != srcSurf->GetFormat()) { - gfxCriticalError() << "Attempt to update texture client from a surface with a different size or format! This: " << mSize << " " << format << " Other: " << srcSurf->GetSize() << " " << srcSurf->GetFormat(); - return false; - } - - long pixelStride = mGraphicBuffer->getStride(); - long byteStride = pixelStride * BytesPerPixel(format); - - DataSourceSurface::MappedSurface sourceMap; - - if (!srcSurf->Map(DataSourceSurface::READ, &sourceMap)) { - gfxCriticalError() << "Failed to map source surface for UpdateFromSurface (GTC)."; - return false; - } - - for (int y = 0; y < srcSurf->GetSize().height; y++) { - memcpy(mMappedBuffer + byteStride * y, - sourceMap.mData + sourceMap.mStride * y, - srcSurf->GetSize().width * BytesPerPixel(srcSurf->GetFormat())); - } - - srcSurf->Unmap(); - - return true; -} - -// static -GrallocTextureData* -GrallocTextureData::Create(gfx::IntSize aSize, AndroidFormat aAndroidFormat, - gfx::BackendType aMoz2dBackend, uint32_t aUsage, - LayersIPCChannel* aAllocator) -{ - if (!aAllocator || !aAllocator->IPCOpen()) { - return nullptr; - } - gfx::SurfaceFormat format; - switch (aAndroidFormat) { - case android::PIXEL_FORMAT_RGBA_8888: - format = gfx::SurfaceFormat::B8G8R8A8; - break; - case android::PIXEL_FORMAT_BGRA_8888: - format = gfx::SurfaceFormat::B8G8R8A8; - break; - case android::PIXEL_FORMAT_RGBX_8888: - format = gfx::SurfaceFormat::B8G8R8X8; - break; - case android::PIXEL_FORMAT_RGB_565: - format = gfx::SurfaceFormat::R5G6B5_UINT16; - break; - case HAL_PIXEL_FORMAT_YV12: - format = gfx::SurfaceFormat::YUV; - break; - default: - format = gfx::SurfaceFormat::UNKNOWN; - } - - if (DisableGralloc(format, aSize)) { - return nullptr; - } - - MaybeMagicGrallocBufferHandle handle; - if (!SharedBufferManagerChild::GetSingleton()->AllocGrallocBuffer(aSize, aAndroidFormat, aUsage, &handle)) { - return nullptr; - } - - sp graphicBuffer = GetGraphicBufferFrom(handle); - if (!graphicBuffer.get()) { - return nullptr; - } - - if (graphicBuffer->initCheck() != NO_ERROR) { - return nullptr; - } - - return new GrallocTextureData(handle, aSize, format, aMoz2dBackend); -} - -// static -GrallocTextureData* -GrallocTextureData::CreateForDrawing(gfx::IntSize aSize, gfx::SurfaceFormat aFormat, - gfx::BackendType aMoz2dBackend, - LayersIPCChannel* aAllocator) -{ - if (DisableGralloc(aFormat, aSize)) { - return nullptr; - } - -#if ANDROID_VERSION <= 15 - // Adreno 200 has a problem of drawing gralloc buffer width less than 64 and - // drawing gralloc buffer with a height 9px-16px. - // See Bug 983971. - // We only have this restriction in TextureClients that we'll use for drawing - // (not with WebGL for instance). Not sure why that's OK, but we have tests that - // rely on being able to create 32x32 webgl canvases with gralloc, so moving - // this check in DisableGralloc will break them. - if (aSize.width < 64 || aSize.height < 32) { - return nullptr; - } -#endif - - uint32_t usage = android::GraphicBuffer::USAGE_SW_READ_OFTEN | - android::GraphicBuffer::USAGE_SW_WRITE_OFTEN | - android::GraphicBuffer::USAGE_HW_TEXTURE; - auto data = GrallocTextureData::Create(aSize, GetAndroidFormat(aFormat), - aMoz2dBackend, usage, aAllocator); - - if (!data) { - return nullptr; - } - - DebugOnly grallocFormat = - SurfaceFormatForPixelFormat(data->mGraphicBuffer->getPixelFormat()); - // mFormat may be different from the format the graphic buffer reports if we - // swap the R and B channels but we should always have at least the same bytes - // per pixel! - MOZ_ASSERT(BytesPerPixel(data->mFormat) == BytesPerPixel(grallocFormat)); - - return data; -} - -TextureFlags -GrallocTextureData::GetTextureFlags() const -{ - if (IsGrallocRBSwapped(mFormat)) { - return TextureFlags::RB_SWAPPED; - } - return TextureFlags::NO_FLAGS; -} - - -// static -GrallocTextureData* -GrallocTextureData::CreateForYCbCr(gfx::IntSize aYSize, gfx::IntSize aCbCrSize, - LayersIPCChannel* aAllocator) -{ - MOZ_ASSERT(aYSize.width == aCbCrSize.width * 2); - MOZ_ASSERT(aYSize.height == aCbCrSize.height * 2); - return GrallocTextureData::Create(aYSize, HAL_PIXEL_FORMAT_YV12, - gfx::BackendType::NONE, - android::GraphicBuffer::USAGE_SW_READ_OFTEN, - aAllocator); -} - -// static -GrallocTextureData* -GrallocTextureData::CreateForGLRendering(gfx::IntSize aSize, gfx::SurfaceFormat aFormat, - LayersIPCChannel* aAllocator) -{ - if (aFormat == gfx::SurfaceFormat::YUV) { - return nullptr; - } - uint32_t usage = android::GraphicBuffer::USAGE_HW_RENDER | - android::GraphicBuffer::USAGE_HW_TEXTURE; - return GrallocTextureData::Create(aSize, GetAndroidFormat(aFormat), - gfx::BackendType::NONE, usage, aAllocator); -} - -// static -already_AddRefed -GrallocTextureData::TextureClientFromSharedSurface(gl::SharedSurface* abstractSurf, - TextureFlags flags) -{ - auto surf = gl::SharedSurface_Gralloc::Cast(abstractSurf); - - RefPtr ret = surf->GetTextureClient(); - - TextureFlags mask = TextureFlags::ORIGIN_BOTTOM_LEFT | - TextureFlags::RB_SWAPPED | - TextureFlags::NON_PREMULTIPLIED; - TextureFlags required = flags & mask; - TextureFlags present = ret->GetFlags() & mask; - - if (present != required) { - printf_stderr("Present flags: 0x%x. Required: 0x%x.\n", - (uint32_t)present, - (uint32_t)required); - MOZ_CRASH("Flag requirement mismatch."); - } - return ret.forget(); -} - -TextureData* -GrallocTextureData::CreateSimilar(LayersIPCChannel* aAllocator, - LayersBackend aLayersBackend, - TextureFlags aFlags, - TextureAllocationFlags aAllocFlags) const -{ - if (mFormat == gfx::SurfaceFormat::YUV) { - return GrallocTextureData::CreateForYCbCr(mSize, mSize*2, aAllocator); - } else { - return GrallocTextureData::CreateForDrawing(mSize, mFormat, mMoz2DBackend, aAllocator); - } -} - -} // namesapace layers -} // namesapace mozilla - -#endif // MOZ_WIDGET_GONK diff --git a/gfx/layers/opengl/GrallocTextureClient.h b/gfx/layers/opengl/GrallocTextureClient.h deleted file mode 100644 index f728e560ff45..000000000000 --- a/gfx/layers/opengl/GrallocTextureClient.h +++ /dev/null @@ -1,129 +0,0 @@ -/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- -// * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef MOZILLA_GFX_GRALLOCTEXTURECLIENT_H -#define MOZILLA_GFX_GRALLOCTEXTURECLIENT_H -#ifdef MOZ_WIDGET_GONK - -#include "mozilla/layers/TextureClient.h" -#include "mozilla/layers/FenceUtils.h" // for FenceHandle -#include "mozilla/layers/ShadowLayerUtilsGralloc.h" -#include - - -namespace android { -class MediaBuffer; -}; - -namespace mozilla { -namespace gl { -class SharedSurface; -} - -namespace layers { - -/// A TextureData implementation based on android::GraphicBuffer (also referred to -/// as "gralloc"). -/// -/// Gralloc lets us map texture data in memory (accessible through pointers) -/// and also use it directly as an OpenGL texture without the cost of texture -/// uploads. -/// Gralloc buffers can also be shared accros processes. -/// -/// More info about Gralloc here: https://wiki.mozilla.org/Platform/GFX/Gralloc -/// -/// This is only used in Firefox OS -class GrallocTextureData : public TextureData { -public: - typedef uint32_t AndroidFormat; - - virtual bool Serialize(SurfaceDescriptor& aOutDescriptor) override; - - virtual bool Lock(OpenMode aMode, FenceHandle* aFence) override; - - virtual void Unlock() override; - - virtual void FillInfo(TextureData::Info& aInfo) const override; - - virtual already_AddRefed BorrowDrawTarget() override; - - virtual bool BorrowMappedData(MappedTextureData& aMap) override; - - virtual void Deallocate(LayersIPCChannel*) override; - - virtual void Forget(LayersIPCChannel*) override; - - static GrallocTextureData* CreateForDrawing(gfx::IntSize aSize, gfx::SurfaceFormat aFormat, - gfx::BackendType aMoz2dBackend, - LayersIPCChannel* aAllocator); - - static GrallocTextureData* CreateForYCbCr(gfx::IntSize aYSize, gfx::IntSize aCbCrSize, - LayersIPCChannel* aAllocator); - - static GrallocTextureData* CreateForGLRendering(gfx::IntSize aSize, gfx::SurfaceFormat aFormat, - LayersIPCChannel* aAllocator); - - static GrallocTextureData* Create(gfx::IntSize aSize, AndroidFormat aFormat, - gfx::BackendType aMoz2DBackend, uint32_t aUsage, - LayersIPCChannel* aAllocator); - - - static already_AddRefed - TextureClientFromSharedSurface(gl::SharedSurface* abstractSurf, TextureFlags flags); - - virtual TextureData* - CreateSimilar(LayersIPCChannel* aAllocator, - LayersBackend aLayersBackend, - TextureFlags aFlags = TextureFlags::DEFAULT, - TextureAllocationFlags aAllocFlags = ALLOC_DEFAULT) const override; - - // use TextureClient's default implementation - virtual bool UpdateFromSurface(gfx::SourceSurface* aSurface) override; - - /// Hold android::MediaBuffer. - /// MediaBuffer needs to be add refed to keep MediaBuffer alive while the texture - /// is in use. - /// - /// TODO - ideally we should be able to put the MediaBuffer in the texture's - /// constructor and not expose these methods. - void SetMediaBuffer(android::MediaBuffer* aMediaBuffer) { mMediaBuffer = aMediaBuffer; } - android::MediaBuffer* GetMediaBuffer() { return mMediaBuffer; } - - android::sp GetGraphicBuffer() { return mGraphicBuffer; } - - virtual void WaitForFence(FenceHandle* aFence) override; - - ~GrallocTextureData(); - - virtual TextureFlags GetTextureFlags() const override; - - virtual GrallocTextureData* AsGrallocTextureData() { return this; } - -protected: - GrallocTextureData(MaybeMagicGrallocBufferHandle aGrallocHandle, - gfx::IntSize aSize, gfx::SurfaceFormat aFormat, - gfx::BackendType aMoz2DBackend); - - gfx::IntSize mSize; - gfx::SurfaceFormat mFormat; - gfx::BackendType mMoz2DBackend; - - MaybeMagicGrallocBufferHandle mGrallocHandle; - android::sp mGraphicBuffer; - - // Points to a mapped gralloc buffer between calls to lock and unlock. - // Should be null outside of the lock-unlock pair. - uint8_t* mMappedBuffer; - - android::MediaBuffer* mMediaBuffer; -}; - -gfx::SurfaceFormat SurfaceFormatForPixelFormat(android::PixelFormat aFormat); - -} // namespace layers -} // namespace mozilla - -#endif // MOZ_WIDGET_GONK -#endif diff --git a/gfx/layers/opengl/GrallocTextureHost.cpp b/gfx/layers/opengl/GrallocTextureHost.cpp deleted file mode 100644 index 6d5f9158b66e..000000000000 --- a/gfx/layers/opengl/GrallocTextureHost.cpp +++ /dev/null @@ -1,480 +0,0 @@ -/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- -// * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "base/process.h" -#include "GLContext.h" -#include "gfx2DGlue.h" -#include -#include "GrallocImages.h" // for GrallocImage -#include "GLLibraryEGL.h" // for GLLibraryEGL -#include "mozilla/gfx/2D.h" -#include "mozilla/gfx/DataSurfaceHelpers.h" -#include "mozilla/layers/GrallocTextureHost.h" -#include "mozilla/layers/SharedBufferManagerParent.h" -#include "EGLImageHelpers.h" -#include "GLReadTexImageHelper.h" - -namespace mozilla { -namespace layers { - -using namespace android; -using namespace mozilla::gl; - -static gfx::SurfaceFormat -SurfaceFormatForAndroidPixelFormat(android::PixelFormat aFormat, - TextureFlags aFlags) -{ - bool swapRB = bool(aFlags & TextureFlags::RB_SWAPPED); - switch (aFormat) { - case android::PIXEL_FORMAT_BGRA_8888: - return swapRB ? gfx::SurfaceFormat::R8G8B8A8 : gfx::SurfaceFormat::B8G8R8A8; - case android::PIXEL_FORMAT_RGBA_8888: - return swapRB ? gfx::SurfaceFormat::B8G8R8A8 : gfx::SurfaceFormat::R8G8B8A8; - case android::PIXEL_FORMAT_RGBX_8888: - return swapRB ? gfx::SurfaceFormat::B8G8R8X8 : gfx::SurfaceFormat::R8G8B8X8; - case android::PIXEL_FORMAT_RGB_565: - return gfx::SurfaceFormat::R5G6B5_UINT16; - case HAL_PIXEL_FORMAT_YCbCr_422_SP: - case HAL_PIXEL_FORMAT_YCrCb_420_SP: - case HAL_PIXEL_FORMAT_YCbCr_422_I: - case GrallocImage::HAL_PIXEL_FORMAT_YCbCr_420_SP_TILED: - case GrallocImage::HAL_PIXEL_FORMAT_YCbCr_420_SP_VENUS: - case HAL_PIXEL_FORMAT_YV12: -#if defined(MOZ_WIDGET_GONK) && ANDROID_VERSION >= 17 - case HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED: -#endif - return gfx::SurfaceFormat::R8G8B8A8; // yup, use SurfaceFormat::R8G8B8A8 even though it's a YUV texture. This is an external texture. - default: - if (aFormat >= 0x100 && aFormat <= 0x1FF) { - // Reserved range for HAL specific formats. - return gfx::SurfaceFormat::R8G8B8A8; - } else { - // This is not super-unreachable, there's a bunch of hypothetical pixel - // formats we don't deal with. - // We only want to abort in debug builds here, since if we crash here - // we'll take down the compositor process and thus the phone. This seems - // like undesirable behaviour. We'd rather have a subtle artifact. - printf_stderr(" xxxxx unknow android format %i\n", (int)aFormat); - MOZ_ASSERT(false, "Unknown Android pixel format."); - return gfx::SurfaceFormat::UNKNOWN; - } - } -} - -static GLenum -TextureTargetForAndroidPixelFormat(android::PixelFormat aFormat) -{ - switch (aFormat) { - case HAL_PIXEL_FORMAT_YCbCr_422_SP: - case HAL_PIXEL_FORMAT_YCrCb_420_SP: - case HAL_PIXEL_FORMAT_YCbCr_422_I: - case GrallocImage::HAL_PIXEL_FORMAT_YCbCr_420_SP_TILED: - case GrallocImage::HAL_PIXEL_FORMAT_YCbCr_420_SP_VENUS: - case HAL_PIXEL_FORMAT_YV12: -#if defined(MOZ_WIDGET_GONK) && ANDROID_VERSION >= 17 - case HAL_PIXEL_FORMAT_IMPLEMENTATION_DEFINED: -#endif - return LOCAL_GL_TEXTURE_EXTERNAL; - case android::PIXEL_FORMAT_BGRA_8888: - case android::PIXEL_FORMAT_RGBA_8888: - case android::PIXEL_FORMAT_RGBX_8888: - case android::PIXEL_FORMAT_RGB_565: - return LOCAL_GL_TEXTURE_2D; - default: - if (aFormat >= 0x100 && aFormat <= 0x1FF) { - // Reserved range for HAL specific formats. - return LOCAL_GL_TEXTURE_EXTERNAL; - } else { - // This is not super-unreachable, there's a bunch of hypothetical pixel - // formats we don't deal with. - // We only want to abort in debug builds here, since if we crash here - // we'll take down the compositor process and thus the phone. This seems - // like undesirable behaviour. We'd rather have a subtle artifact. - MOZ_ASSERT(false, "Unknown Android pixel format."); - return LOCAL_GL_TEXTURE_EXTERNAL; - } - } -} - -GrallocTextureHostOGL::GrallocTextureHostOGL(TextureFlags aFlags, - const SurfaceDescriptorGralloc& aDescriptor) - : TextureHost(aFlags) - , mGrallocHandle(aDescriptor) - , mSize(0, 0) - , mCropSize(0, 0) - , mFormat(gfx::SurfaceFormat::UNKNOWN) - , mEGLImage(EGL_NO_IMAGE) - , mIsOpaque(aDescriptor.isOpaque()) -{ - android::GraphicBuffer* graphicBuffer = GetGraphicBufferFromDesc(mGrallocHandle).get(); - MOZ_ASSERT(graphicBuffer); - - if (graphicBuffer) { - mFormat = - SurfaceFormatForAndroidPixelFormat(graphicBuffer->getPixelFormat(), - aFlags & TextureFlags::RB_SWAPPED); - mSize = gfx::IntSize(graphicBuffer->getWidth(), graphicBuffer->getHeight()); - mCropSize = mSize; - } else { - printf_stderr("gralloc buffer is nullptr\n"); - } -} - -GrallocTextureHostOGL::~GrallocTextureHostOGL() -{ - DestroyEGLImage(); -} - -void -GrallocTextureHostOGL::SetCompositor(Compositor* aCompositor) -{ - mCompositor = AssertGLCompositor(aCompositor); - if (mGLTextureSource) { - mGLTextureSource->SetCompositor(mCompositor); - } - - if (mCompositor && aCompositor != mCompositor) { - DestroyEGLImage(); - } -} - -bool -GrallocTextureHostOGL::Lock() -{ - return IsValid(); -} - -void -GrallocTextureHostOGL::Unlock() -{ - // Unlock is done internally by binding the texture to another gralloc buffer -} - -bool -GrallocTextureHostOGL::IsValid() const -{ - android::GraphicBuffer* graphicBuffer = GetGraphicBufferFromDesc(mGrallocHandle).get(); - return graphicBuffer != nullptr; -} - -gfx::SurfaceFormat -GrallocTextureHostOGL::GetFormat() const -{ - return mFormat; -} - -void -GrallocTextureHostOGL::DeallocateSharedData() -{ - if (mGLTextureSource) { - mGLTextureSource = nullptr; - } - - DestroyEGLImage(); - - if (mGrallocHandle.buffer().type() != MaybeMagicGrallocBufferHandle::Tnull_t) { - MaybeMagicGrallocBufferHandle handle = mGrallocHandle.buffer(); - base::ProcessId owner; - if (handle.type() == MaybeMagicGrallocBufferHandle::TGrallocBufferRef) { - owner = handle.get_GrallocBufferRef().mOwner; - } - else { - owner = handle.get_MagicGrallocBufferHandle().mRef.mOwner; - } - - SharedBufferManagerParent::DropGrallocBuffer(owner, mGrallocHandle); - } -} - -void -GrallocTextureHostOGL::ForgetSharedData() -{ - if (mGLTextureSource) { - mGLTextureSource = nullptr; - } -} - -void -GrallocTextureHostOGL::DeallocateDeviceData() -{ - if (mGLTextureSource) { - mGLTextureSource = nullptr; - } - DestroyEGLImage(); -} - -LayerRenderState -GrallocTextureHostOGL::GetRenderState() -{ - android::GraphicBuffer* graphicBuffer = GetGraphicBufferFromDesc(mGrallocHandle).get(); - - if (graphicBuffer) { - LayerRenderStateFlags flags = LayerRenderStateFlags::LAYER_RENDER_STATE_DEFAULT; - if (mIsOpaque) { - flags |= LayerRenderStateFlags::OPAQUE; - } - if (mFlags & TextureFlags::ORIGIN_BOTTOM_LEFT) { - flags |= LayerRenderStateFlags::ORIGIN_BOTTOM_LEFT; - } - if (mFlags & TextureFlags::RB_SWAPPED) { - flags |= LayerRenderStateFlags::FORMAT_RB_SWAP; - } - return LayerRenderState(graphicBuffer, - mCropSize, - flags, - this); - } - - return LayerRenderState(); -} - -already_AddRefed -GrallocTextureHostOGL::GetAsSurface() { - android::GraphicBuffer* graphicBuffer = GetGraphicBufferFromDesc(mGrallocHandle).get(); - if (!graphicBuffer) { - return nullptr; - } - uint8_t* grallocData; - int32_t rv = graphicBuffer->lock(GRALLOC_USAGE_SW_READ_OFTEN, reinterpret_cast(&grallocData)); - if (rv) { - return nullptr; - } - RefPtr grallocTempSurf = - gfx::Factory::CreateWrappingDataSourceSurface(grallocData, - graphicBuffer->getStride() * android::bytesPerPixel(graphicBuffer->getPixelFormat()), - GetSize(), GetFormat()); - if (!grallocTempSurf) { - graphicBuffer->unlock(); - return nullptr; - } - RefPtr surf = CreateDataSourceSurfaceByCloning(grallocTempSurf); - - graphicBuffer->unlock(); - - return surf.forget(); -} - -void -GrallocTextureHostOGL::UnbindTextureSource() -{ - TextureHost::UnbindTextureSource(); - // Clear the reference to the TextureSource (if any), because we know that - // another TextureHost is being bound to the TextureSource. This means that - // we will have to re-do gl->fEGLImageTargetTexture2D next time we go through - // BindTextureSource (otherwise we would have skipped it). - // Note that this doesn't "unlock" the gralloc buffer or force it to be - // detached, Although decreasing the refcount of the TextureSource may lead - // to the gl handle being destroyed, which would unlock the gralloc buffer. - // That said, this method is called before another TextureHost attaches to the - // TextureSource, which has the effect of unlocking the gralloc buffer. So when - // this is called we know we are going to be unlocked soon. - mGLTextureSource = nullptr; -} - -GLenum GetTextureTarget(gl::GLContext* aGL, android::PixelFormat aFormat) { - MOZ_ASSERT(aGL); - if (aGL->Renderer() == gl::GLRenderer::SGX530 || - aGL->Renderer() == gl::GLRenderer::SGX540) { - // SGX has a quirk that only TEXTURE_EXTERNAL works and any other value will - // result in black pixels when trying to draw from bound textures. - // Unfortunately, using TEXTURE_EXTERNAL on Adreno has a terrible effect on - // performance. - // See Bug 950050. - return LOCAL_GL_TEXTURE_EXTERNAL; - } else { - return TextureTargetForAndroidPixelFormat(aFormat); - } -} - -void -GrallocTextureHostOGL::DestroyEGLImage() -{ - // Only called when we want to get rid of the gralloc buffer, usually - // around the end of life of the TextureHost. - if (mEGLImage != EGL_NO_IMAGE && GetGLContext()) { - EGLImageDestroy(GetGLContext(), mEGLImage); - mEGLImage = EGL_NO_IMAGE; - } -} - -void -GrallocTextureHostOGL::PrepareTextureSource(CompositableTextureSourceRef& aTextureSource) -{ - // This happens during the layers transaction. - // All of the gralloc magic goes here. The only thing that happens externally - // and that is good to keep in mind is that when the TextureSource is deleted, - // it destroys its gl texture handle which is important for genlock. - - // If this TextureHost's mGLTextureSource member is non-null, it means we are - // still bound to the TextureSource, in which case we can skip the driver - // overhead of binding the texture again (fEGLImageTargetTexture2D) - // As a result, if the TextureHost is used with several CompositableHosts, - // it will be bound to only one TextureSource, and we'll do the driver work - // only once, which is great. This means that all of the compositables that - // use this TextureHost will keep a reference to this TextureSource at least - // for the duration of this frame. - - // If the compositable already has a TextureSource (the aTextureSource parameter), - // that is compatible and is not in use by several compositable, we try to - // attach to it. This has the effect of unlocking the previous TextureHost that - // we attached to the TextureSource (the previous frame) - - // If the TextureSource used by the compositable is also used by other - // compositables (see NumCompositableRefs), we have to create a new TextureSource, - // because otherwise we would be modifying the content of every layer that uses - // the TextureSource in question, even thoug they don't use this TextureHost. - - android::GraphicBuffer* graphicBuffer = GetGraphicBufferFromDesc(mGrallocHandle).get(); - - MOZ_ASSERT(graphicBuffer); - if (!graphicBuffer) { - mGLTextureSource = nullptr; - return; - } - - if (mGLTextureSource && !mGLTextureSource->IsValid()) { - mGLTextureSource = nullptr; - } - - if (mGLTextureSource) { - // We are already attached to a TextureSource, nothing to do except tell - // the compositable to use it. - aTextureSource = mGLTextureSource.get(); - return; - } - - gl::GLContext* gl = GetGLContext(); - if (!gl || !gl->MakeCurrent()) { - mGLTextureSource = nullptr; - return; - } - - if (mEGLImage == EGL_NO_IMAGE) { - gfx::IntSize cropSize(0, 0); - if (mCropSize != mSize) { - cropSize = mCropSize; - } - // Should only happen the first time. - mEGLImage = EGLImageCreateFromNativeBuffer(gl, graphicBuffer->getNativeBuffer(), cropSize); - } - - GLenum textureTarget = GetTextureTarget(gl, graphicBuffer->getPixelFormat()); - - GLTextureSource* glSource = aTextureSource.get() ? - aTextureSource->AsSourceOGL()->AsGLTextureSource() : nullptr; - - bool shouldCreateTextureSource = !glSource || !glSource->IsValid() - || glSource->NumCompositableRefs() > 1 - || glSource->GetTextureTarget() != textureTarget; - - if (shouldCreateTextureSource) { - GLuint textureHandle; - gl->fGenTextures(1, &textureHandle); - gl->fBindTexture(textureTarget, textureHandle); - gl->fTexParameteri(textureTarget, LOCAL_GL_TEXTURE_WRAP_T, LOCAL_GL_CLAMP_TO_EDGE); - gl->fTexParameteri(textureTarget, LOCAL_GL_TEXTURE_WRAP_S, LOCAL_GL_CLAMP_TO_EDGE); - gl->fEGLImageTargetTexture2D(textureTarget, mEGLImage); - - mGLTextureSource = new GLTextureSource(mCompositor, textureHandle, textureTarget, - mSize, mFormat); - aTextureSource = mGLTextureSource.get(); - } else { - gl->fBindTexture(textureTarget, glSource->GetTextureHandle()); - - gl->fEGLImageTargetTexture2D(textureTarget, mEGLImage); - glSource->SetSize(mSize); - glSource->SetFormat(mFormat); - mGLTextureSource = glSource; - } -} - -void -GrallocTextureHostOGL::WaitAcquireFenceHandleSyncComplete() -{ - if (!mAcquireFenceHandle.IsValid()) { - return; - } - - RefPtr fence = mAcquireFenceHandle.GetAndResetFdObj(); - int fenceFd = fence->GetAndResetFd(); - - EGLint attribs[] = { - LOCAL_EGL_SYNC_NATIVE_FENCE_FD_ANDROID, fenceFd, - LOCAL_EGL_NONE - }; - - EGLSync sync = sEGLLibrary.fCreateSync(EGL_DISPLAY(), - LOCAL_EGL_SYNC_NATIVE_FENCE_ANDROID, - attribs); - if (!sync) { - NS_WARNING("failed to create native fence sync"); - return; - } - - // Wait sync complete with timeout. - // If a source of the fence becomes invalid because of error, - // fene complete is not signaled. See Bug 1061435. - EGLint status = sEGLLibrary.fClientWaitSync(EGL_DISPLAY(), - sync, - 0, - 400000000 /*400 msec*/); - if (status != LOCAL_EGL_CONDITION_SATISFIED) { - NS_ERROR("failed to wait native fence sync"); - } - MOZ_ALWAYS_TRUE( sEGLLibrary.fDestroySync(EGL_DISPLAY(), sync) ); -} - -void -GrallocTextureHostOGL::SetCropRect(nsIntRect aCropRect) -{ - MOZ_ASSERT(aCropRect.TopLeft() == gfx::IntPoint(0, 0)); - MOZ_ASSERT(!aCropRect.IsEmpty()); - MOZ_ASSERT(aCropRect.width <= mSize.width); - MOZ_ASSERT(aCropRect.height <= mSize.height); - - gfx::IntSize cropSize(aCropRect.width, aCropRect.height); - if (mCropSize == cropSize) { - return; - } - - mCropSize = cropSize; - mGLTextureSource = nullptr; -} - -bool -GrallocTextureHostOGL::BindTextureSource(CompositableTextureSourceRef& aTextureSource) -{ - // This happens at composition time. - - // If mGLTextureSource is null it means PrepareTextureSource failed. - if (!mGLTextureSource) { - return false; - } - - // If Prepare didn't fail, we expect our TextureSource to be the same as aTextureSource, - // otherwise it means something has fiddled with the TextureSource between Prepare and - // now. - MOZ_ASSERT(mGLTextureSource == aTextureSource); - aTextureSource = mGLTextureSource.get(); - -#if defined(MOZ_WIDGET_GONK) && ANDROID_VERSION >= 17 - // Wait until it's ready. - WaitAcquireFenceHandleSyncComplete(); -#endif - return true; -} - -FenceHandle -GrallocTextureHostOGL::GetCompositorReleaseFence() -{ - if (!mCompositor) { - return FenceHandle(); - } - return mCompositor->GetReleaseFence(); -} - - -} // namepsace layers -} // namepsace mozilla diff --git a/gfx/layers/opengl/GrallocTextureHost.h b/gfx/layers/opengl/GrallocTextureHost.h deleted file mode 100644 index 943e957d83ef..000000000000 --- a/gfx/layers/opengl/GrallocTextureHost.h +++ /dev/null @@ -1,98 +0,0 @@ -/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*- -// * This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef MOZILLA_GFX_GRALLOCTEXTUREHOST_H -#define MOZILLA_GFX_GRALLOCTEXTUREHOST_H -#ifdef MOZ_WIDGET_GONK - -#include "mozilla/layers/CompositorOGL.h" -#include "mozilla/layers/TextureHostOGL.h" -#include "mozilla/layers/ShadowLayerUtilsGralloc.h" -#include - -namespace mozilla { -namespace layers { - -class GrallocTextureHostOGL : public TextureHost -{ - friend class GrallocBufferActor; -public: - GrallocTextureHostOGL(TextureFlags aFlags, - const SurfaceDescriptorGralloc& aDescriptor); - - virtual ~GrallocTextureHostOGL(); - - virtual bool Lock() override; - - virtual void Unlock() override; - - virtual void SetCompositor(Compositor* aCompositor) override; - - virtual Compositor* GetCompositor() override { return mCompositor; } - - virtual void DeallocateSharedData() override; - - virtual void ForgetSharedData() override; - - virtual void DeallocateDeviceData() override; - - virtual gfx::SurfaceFormat GetFormat() const; - - virtual gfx::IntSize GetSize() const override { return mCropSize; } - - virtual LayerRenderState GetRenderState() override; - - virtual void PrepareTextureSource(CompositableTextureSourceRef& aTextureSource) override; - - virtual bool BindTextureSource(CompositableTextureSourceRef& aTextureSource) override; - - virtual void UnbindTextureSource() override; - - virtual already_AddRefed GetAsSurface() override; - - virtual void WaitAcquireFenceHandleSyncComplete() override; - - virtual void SetCropRect(nsIntRect aCropRect) override; - - bool IsValid() const; - - virtual const char* Name() override { return "GrallocTextureHostOGL"; } - - gl::GLContext* GetGLContext() const { return mCompositor ? mCompositor->gl() : nullptr; } - - virtual bool NeedsFenceHandle() override - { -#if defined(MOZ_WIDGET_GONK) && ANDROID_VERSION >= 17 - return true; -#else - return false; -#endif - } - - virtual FenceHandle GetCompositorReleaseFence() override; - - virtual GrallocTextureHostOGL* AsGrallocTextureHostOGL() override { return this; } - -private: - void DestroyEGLImage(); - - SurfaceDescriptorGralloc mGrallocHandle; - RefPtr mGLTextureSource; - RefPtr mCompositor; - // Size reported by the GraphicBuffer - gfx::IntSize mSize; - // Size reported by TextureClient, can be different in some cases (video?), - // used by LayerRenderState. - gfx::IntSize mCropSize; - gfx::SurfaceFormat mFormat; - EGLImage mEGLImage; - bool mIsOpaque; -}; - -} // namespace layers -} // namespace mozilla - -#endif -#endif diff --git a/gfx/layers/opengl/TextureHostOGL.cpp b/gfx/layers/opengl/TextureHostOGL.cpp index 951c6474a02d..854160bc6724 100644 --- a/gfx/layers/opengl/TextureHostOGL.cpp +++ b/gfx/layers/opengl/TextureHostOGL.cpp @@ -15,18 +15,12 @@ #include "mozilla/gfx/BaseSize.h" // for BaseSize #include "mozilla/gfx/Logging.h" // for gfxCriticalError #include "mozilla/layers/ISurfaceAllocator.h" -#include "mozilla/layers/GrallocTextureHost.h" #include "nsRegion.h" // for nsIntRegion #include "AndroidSurfaceTexture.h" #include "GfxTexturesReporter.h" // for GfxTexturesReporter #include "GLBlitTextureImageHelper.h" #include "GeckoProfiler.h" -#ifdef MOZ_WIDGET_GONK -# include "GrallocImages.h" // for GrallocImage -# include "EGLImageHelpers.h" -#endif - #ifdef XP_MACOSX #include "mozilla/layers/MacIOSurfaceTextureHostOGL.h" #endif @@ -85,15 +79,6 @@ CreateTextureHostOGL(const SurfaceDescriptor& aDesc, } #endif -#ifdef MOZ_WIDGET_GONK - case SurfaceDescriptor::TSurfaceDescriptorGralloc: { - const SurfaceDescriptorGralloc& desc = - aDesc.get_SurfaceDescriptorGralloc(); - result = new GrallocTextureHostOGL(aFlags, desc); - break; - } -#endif - #ifdef GL_PROVIDER_GLX case SurfaceDescriptor::TSurfaceDescriptorX11: { const auto& desc = aDesc.get_SurfaceDescriptorX11(); diff --git a/gfx/skia/moz.build b/gfx/skia/moz.build index 882bcf9fd760..3f4b652bd497 100644 --- a/gfx/skia/moz.build +++ b/gfx/skia/moz.build @@ -492,7 +492,7 @@ if CONFIG['MOZ_ENABLE_SKIA_GPU']: 'skia/src/gpu/GrResourceCache.cpp', 'skia/src/image/SkImage_Gpu.cpp', ] -if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('android', 'gonk'): +if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('android'): UNIFIED_SOURCES += [ 'skia/src/ports/SkDebug_android.cpp', 'skia/src/ports/SkOSFile_posix.cpp', @@ -650,7 +650,7 @@ LOCAL_INCLUDES += [ 'skia/src/utils/win', ] -if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('android', 'gonk'): +if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('android'): DEFINES['SK_FONTHOST_CAIRO_STANDALONE'] = 0 if CONFIG['MOZ_WIDGET_TOOLKIT'] in { @@ -659,7 +659,6 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] in { 'gtk2', 'gtk3', 'uikit', - 'gonk', }: DEFINES['SK_FONTHOST_DOES_NOT_USE_FONTMGR'] = 1 @@ -730,7 +729,7 @@ if CONFIG['CLANG_CXX'] or CONFIG['CLANG_CL']: '-Wno-unused-private-field', ] -if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3', 'android', 'gonk'): +if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3', 'android'): CXXFLAGS += CONFIG['MOZ_CAIRO_CFLAGS'] CXXFLAGS += CONFIG['CAIRO_FT_CFLAGS'] diff --git a/gfx/thebes/gfxAndroidPlatform.cpp b/gfx/thebes/gfxAndroidPlatform.cpp index d2ed3f93adf5..f587737b5716 100644 --- a/gfx/thebes/gfxAndroidPlatform.cpp +++ b/gfx/thebes/gfxAndroidPlatform.cpp @@ -25,12 +25,6 @@ #include "cairo.h" #include "VsyncSource.h" -#ifdef MOZ_WIDGET_GONK -#include -#include "mozilla/layers/CompositorBridgeParent.h" -#include "HwcComposer2D.h" -#endif - #include "ft2build.h" #include FT_FREETYPE_H #include FT_MODULE_H @@ -105,12 +99,6 @@ gfxAndroidPlatform::gfxAndroidPlatform() if (gfxPrefs::AndroidRGB16Force()) { mOffscreenFormat = SurfaceFormat::R5G6B5_UINT16; } - -#ifdef MOZ_WIDGET_GONK - char propQemu[PROPERTY_VALUE_MAX]; - property_get("ro.kernel.qemu", propQemu, ""); - mIsInGonkEmulator = !strncmp(propQemu, "1", 1); -#endif } gfxAndroidPlatform::~gfxAndroidPlatform() @@ -179,15 +167,9 @@ gfxAndroidPlatform::GetCommonFallbackFonts(uint32_t aCh, uint32_t aNextCh, static const char kMotoyaLMaru[] = "MotoyaLMaru"; static const char kNotoSansCJKJP[] = "Noto Sans CJK JP"; static const char kNotoColorEmoji[] = "Noto Color Emoji"; -#ifdef MOZ_WIDGET_GONK - static const char kFirefoxEmoji[] = "Firefox Emoji"; -#endif if (aNextCh == 0xfe0fu) { // if char is followed by VS16, try for a color emoji glyph -#ifdef MOZ_WIDGET_GONK - aFontList.AppendElement(kFirefoxEmoji); -#endif aFontList.AppendElement(kNotoColorEmoji); } @@ -195,9 +177,6 @@ gfxAndroidPlatform::GetCommonFallbackFonts(uint32_t aCh, uint32_t aNextCh, uint32_t p = aCh >> 16; if (p == 1) { // try color emoji font, unless VS15 (text style) present if (aNextCh != 0xfe0fu && aNextCh != 0xfe0eu) { -#ifdef MOZ_WIDGET_GONK - aFontList.AppendElement(kFirefoxEmoji); -#endif aFontList.AppendElement(kNotoColorEmoji); } } @@ -328,12 +307,6 @@ gfxAndroidPlatform::FontHintingEnabled() return false; #endif // MOZ_WIDGET_ANDROID -#ifdef MOZ_WIDGET_GONK - // On B2G, the UX preference is currently to keep hinting disabled - // for all text (see bug 829523). - return false; -#endif - // Currently, we don't have any other targets, but if/when we do, // decide how to handle them here. @@ -354,104 +327,12 @@ gfxAndroidPlatform::RequiresLinearZoom() return true; #endif -#ifdef MOZ_WIDGET_GONK - // On B2G, we need linear zoom for the browser, but otherwise prefer - // the improved glyph spacing that results from respecting the device - // pixel resolution for glyph layout (see bug 816614). - return XRE_IsContentProcess() && - ContentChild::GetSingleton()->IsForBrowser(); -#endif - NS_NOTREACHED("oops, what platform is this?"); return gfxPlatform::RequiresLinearZoom(); } -#ifdef MOZ_WIDGET_GONK -class GonkVsyncSource final : public VsyncSource -{ -public: - GonkVsyncSource() - { - } - - virtual Display& GetGlobalDisplay() override - { - return mGlobalDisplay; - } - - class GonkDisplay final : public VsyncSource::Display - { - public: - GonkDisplay() : mVsyncEnabled(false) - { - } - - ~GonkDisplay() - { - MOZ_ASSERT(NS_IsMainThread()); - } - - virtual void Shutdown() override - { - MOZ_ASSERT(NS_IsMainThread()); - DisableVsync(); - } - - virtual void EnableVsync() override - { - MOZ_ASSERT(NS_IsMainThread()); - if (IsVsyncEnabled()) { - return; - } - mVsyncEnabled = HwcComposer2D::GetInstance()->EnableVsync(true); - } - - virtual void DisableVsync() override - { - MOZ_ASSERT(NS_IsMainThread()); - if (!IsVsyncEnabled()) { - return; - } - mVsyncEnabled = HwcComposer2D::GetInstance()->EnableVsync(false); - } - - virtual bool IsVsyncEnabled() override - { - MOZ_ASSERT(NS_IsMainThread()); - return mVsyncEnabled; - } - private: - bool mVsyncEnabled; - }; // GonkDisplay - -private: - virtual ~GonkVsyncSource() - { - } - - GonkDisplay mGlobalDisplay; -}; // GonkVsyncSource -#endif - already_AddRefed gfxAndroidPlatform::CreateHardwareVsyncSource() { - // Only enable true hardware vsync on kit-kat and L device. Jelly Bean has - // inaccurate hardware vsync so disable on JB. Android pre-JB doesn't have - // hardware vsync. - // L is android version 21, L-MR1 is 22, kit-kat is 19, 20 is kit-kat for - // wearables. -#if defined(MOZ_WIDGET_GONK) && (ANDROID_VERSION == 19 || ANDROID_VERSION >= 21) - RefPtr vsyncSource = new GonkVsyncSource(); - VsyncSource::Display& display = vsyncSource->GetGlobalDisplay(); - display.EnableVsync(); - if (!display.IsVsyncEnabled()) { - NS_WARNING("Error enabling gonk vsync. Falling back to software vsync"); - return gfxPlatform::CreateHardwareVsyncSource(); - } - display.DisableVsync(); - return vsyncSource.forget(); -#else return gfxPlatform::CreateHardwareVsyncSource(); -#endif } diff --git a/gfx/thebes/gfxAndroidPlatform.h b/gfx/thebes/gfxAndroidPlatform.h index 082c22938be9..30e7c89babeb 100644 --- a/gfx/thebes/gfxAndroidPlatform.h +++ b/gfx/thebes/gfxAndroidPlatform.h @@ -68,10 +68,6 @@ public: virtual already_AddRefed CreateHardwareVsyncSource() override; -#ifdef MOZ_WIDGET_GONK - virtual bool IsInGonkEmulator() const { return mIsInGonkEmulator; } -#endif - virtual bool SupportsApzTouchInput() const override { return true; } @@ -83,10 +79,6 @@ protected: private: gfxImageFormat mOffscreenFormat; - -#ifdef MOZ_WIDGET_GONK - bool mIsInGonkEmulator; -#endif }; #endif /* GFX_PLATFORM_ANDROID_H */ diff --git a/gfx/thebes/gfxFT2FontList.cpp b/gfx/thebes/gfxFT2FontList.cpp index e0c3096ded03..8a652df0dd34 100644 --- a/gfx/thebes/gfxFT2FontList.cpp +++ b/gfx/thebes/gfxFT2FontList.cpp @@ -1234,13 +1234,6 @@ gfxFT2FontList::FindFonts() NS_RUNTIMEABORT("Could not read the system fonts directory"); } -#ifdef MOZ_WIDGET_GONK - // Look for fonts in /system/fonts/hidden and preload them to the - // user-font cache as data: URIs - root.AppendLiteral("/hidden"); - FindFontsInDir(root, mFontNameCache.get(), FT2FontFamily::kHidden); -#endif - // Look for fonts stored in omnijar, unless we're on a low-memory // device where we don't want to spend the RAM to decompress them. // (Prefs may disable this, or force-enable it even with low memory.) @@ -1564,9 +1557,7 @@ gfxFontFamily* gfxFT2FontList::GetDefaultFontForPlatform(const gfxFontStyle* aStyle) { gfxFontFamily *ff = nullptr; -#ifdef MOZ_WIDGET_GONK - ff = FindFamily(NS_LITERAL_STRING("Fira Sans")); -#elif defined(MOZ_WIDGET_ANDROID) +#if defined(MOZ_WIDGET_ANDROID) ff = FindFamily(NS_LITERAL_STRING("Roboto")); if (!ff) { ff = FindFamily(NS_LITERAL_STRING("Droid Sans")); diff --git a/gfx/thebes/gfxPlatform.cpp b/gfx/thebes/gfxPlatform.cpp index 969718dfcf19..40f227b6061d 100644 --- a/gfx/thebes/gfxPlatform.cpp +++ b/gfx/thebes/gfxPlatform.cpp @@ -6,7 +6,6 @@ #include "mozilla/layers/CompositorBridgeChild.h" #include "mozilla/layers/CompositorThread.h" #include "mozilla/layers/ImageBridgeChild.h" -#include "mozilla/layers/SharedBufferManagerChild.h" #include "mozilla/layers/ISurfaceAllocator.h" // for GfxMemoryImageReporter #include "mozilla/gfx/gfxVars.h" #include "mozilla/gfx/GPUProcessManager.h" @@ -97,10 +96,6 @@ #include "TexturePoolOGL.h" #endif -#ifdef MOZ_WIDGET_GONK -#include "mozilla/layers/GrallocTextureHost.h" -#endif - #ifdef USE_SKIA # ifdef __GNUC__ # pragma GCC diagnostic push @@ -147,9 +142,6 @@ class mozilla::gl::SkiaGLGlue : public GenericAtomicRefCounted { namespace mozilla { namespace layers { -#ifdef MOZ_WIDGET_GONK -void InitGralloc(); -#endif void ShutdownTileCache(); } // namespace layers } // namespace mozilla @@ -753,10 +745,6 @@ gfxPlatform::Init() TexturePoolOGL::Init(); #endif -#ifdef MOZ_WIDGET_GONK - mozilla::layers::InitGralloc(); -#endif - Preferences::RegisterCallbackAndCall(RecordingPrefChanged, "gfx.2d.recording", nullptr); CreateCMSOutputProfile(); @@ -919,9 +907,6 @@ gfxPlatform::InitLayersIPC() if (XRE_IsParentProcess()) { layers::CompositorThreadHolder::Start(); -#ifdef MOZ_WIDGET_GONK - SharedBufferManagerChild::StartUp(); -#endif } } @@ -945,10 +930,6 @@ gfxPlatform::ShutdownLayersIPC() layers::CompositorBridgeChild::ShutDown(); layers::ImageBridgeChild::ShutDown(); -#ifdef MOZ_WIDGET_GONK - layers::SharedBufferManagerChild::ShutDown(); -#endif - // This has to happen after shutting down the child protocols. layers::CompositorThreadHolder::Shutdown(); } else { @@ -1216,18 +1197,6 @@ gfxPlatform::ComputeTileSize() // but I think everything should at least support 1024 w = h = clamped(int32_t(RoundUpPow2(screenSize.width)) / 4, 256, 1024); } - -#ifdef MOZ_WIDGET_GONK - android::sp alloc = - new android::GraphicBuffer(w, h, android::PIXEL_FORMAT_RGBA_8888, - android::GraphicBuffer::USAGE_SW_READ_OFTEN | - android::GraphicBuffer::USAGE_SW_WRITE_OFTEN | - android::GraphicBuffer::USAGE_HW_TEXTURE); - - if (alloc.get()) { - w = alloc->getStride(); // We want the tiles to be gralloc stride aligned. - } -#endif } // Don't allow changing the tile size after we've set it. @@ -1393,11 +1362,6 @@ gfxPlatform::PurgeSkiaGPUCache() bool gfxPlatform::HasEnoughTotalSystemMemoryForSkiaGL() { -#ifdef MOZ_WIDGET_GONK - if (mTotalSystemMemory < 250*1024*1024) { - return false; - } -#endif return true; } diff --git a/gfx/thebes/moz.build b/gfx/thebes/moz.build index 7be61762e3bc..227b2b875b1c 100644 --- a/gfx/thebes/moz.build +++ b/gfx/thebes/moz.build @@ -74,23 +74,6 @@ if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'android': 'gfxFT2Utils.cpp', 'PrintTargetPDF.cpp', ] -elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk': - EXPORTS += [ - 'gfxAndroidPlatform.h', - 'gfxFT2FontBase.h', - 'gfxFT2Fonts.h', - ] - EXPORTS.mozilla.gfx += [ - 'PrintTargetPDF.h', - ] - SOURCES += [ - 'gfxAndroidPlatform.cpp', - 'gfxFT2FontBase.cpp', - 'gfxFT2FontList.cpp', - 'gfxFT2Fonts.cpp', - 'gfxFT2Utils.cpp', - 'PrintTargetPDF.cpp', - ] elif CONFIG['MOZ_WIDGET_TOOLKIT'] == 'cocoa': EXPORTS += [ 'gfxPlatformMac.h', @@ -261,10 +244,7 @@ LOCAL_INCLUDES += [ '/dom/xml', ] -if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'gonk': - LOCAL_INCLUDES += ['/widget/gonk'] - -if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('android', 'gtk2', 'gtk3', 'gonk'): +if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('android', 'gtk2', 'gtk3'): DEFINES['MOZ_ENABLE_FREETYPE'] = True if CONFIG['MOZ_WIDGET_TOOLKIT'] == 'windows': @@ -277,7 +257,7 @@ CXXFLAGS += CONFIG['TK_CFLAGS'] CFLAGS += CONFIG['MOZ_CAIRO_CFLAGS'] CFLAGS += CONFIG['TK_CFLAGS'] -if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('android', 'gonk'): +if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('android'): CXXFLAGS += CONFIG['CAIRO_FT_CFLAGS'] if CONFIG['MOZ_WIDGET_TOOLKIT'] in ('gtk2', 'gtk3'): diff --git a/xpcom/build/XPCOMInit.cpp b/xpcom/build/XPCOMInit.cpp index f037b5bf0f8b..66fa899d7315 100644 --- a/xpcom/build/XPCOMInit.cpp +++ b/xpcom/build/XPCOMInit.cpp @@ -18,7 +18,6 @@ #include "mozilla/layers/ImageBridgeChild.h" #include "mozilla/layers/CompositorBridgeParent.h" -#include "mozilla/layers/SharedBufferManagerChild.h" #include "prlink.h" From 0a299d9f1507c2be46b08e213b218d7a8810b1a2 Mon Sep 17 00:00:00 2001 From: Lin Clark Date: Wed, 26 Oct 2016 09:42:00 -0400 Subject: [PATCH 06/24] Bug 1313050 - Handle invalid dates in reps. r=nchevobbe --- .../shared/components/reps/date-time.js | 12 ++++-- .../test/mochitest/test_reps_date-time.html | 42 +++++++++++++++---- 2 files changed, 42 insertions(+), 12 deletions(-) diff --git a/devtools/client/shared/components/reps/date-time.js b/devtools/client/shared/components/reps/date-time.js index 8df7f7e3b09e..55dfb7d2d6af 100644 --- a/devtools/client/shared/components/reps/date-time.js +++ b/devtools/client/shared/components/reps/date-time.js @@ -37,14 +37,18 @@ define(function (require, exports, module) { render: function () { let grip = this.props.object; - return ( - span({className: "objectBox"}, + let date; + try { + date = span({className: "objectBox"}, this.getTitle(grip), span({className: "Date"}, new Date(grip.preview.timestamp).toISOString() ) - ) - ); + ); + } catch (e) { + date = span({className: "objectBox"}, "Invalid Date"); + } + return date; }, }); diff --git a/devtools/client/shared/components/test/mochitest/test_reps_date-time.html b/devtools/client/shared/components/test/mochitest/test_reps_date-time.html index 06c3b72b785c..e91bd6829e10 100644 --- a/devtools/client/shared/components/test/mochitest/test_reps_date-time.html +++ b/devtools/client/shared/components/test/mochitest/test_reps_date-time.html @@ -15,10 +15,19 @@ Test DateTime rep From 92035ed2423cf2e3ef74a4aaf4fa0b9fff3e2a7c Mon Sep 17 00:00:00 2001 From: Andrea Marchesini Date: Wed, 26 Oct 2016 22:00:17 +0200 Subject: [PATCH 07/24] Bug 1313004 - ServiceWorkerMessageEvent can be generated code, r=qdot --- dom/base/PostMessageEvent.cpp | 11 +- dom/base/StructuredCloneHolder.cpp | 15 ++ dom/base/StructuredCloneHolder.h | 6 + dom/events/MessageEvent.cpp | 7 - dom/events/MessageEvent.h | 2 - dom/messagechannel/MessagePort.cpp | 11 +- dom/webidl/ServiceWorkerMessageEvent.webidl | 1 - dom/webidl/moz.build | 2 +- dom/workers/ServiceWorkerClient.cpp | 10 +- dom/workers/ServiceWorkerEvents.cpp | 7 - dom/workers/ServiceWorkerEvents.h | 2 - dom/workers/ServiceWorkerMessageEvent.cpp | 166 -------------------- dom/workers/ServiceWorkerMessageEvent.h | 85 ---------- dom/workers/WorkerPrivate.cpp | 18 +-- dom/workers/moz.build | 2 - 15 files changed, 49 insertions(+), 296 deletions(-) delete mode 100644 dom/workers/ServiceWorkerMessageEvent.cpp delete mode 100644 dom/workers/ServiceWorkerMessageEvent.h diff --git a/dom/base/PostMessageEvent.cpp b/dom/base/PostMessageEvent.cpp index adc02a1ff607..15a217b7d3bf 100644 --- a/dom/base/PostMessageEvent.cpp +++ b/dom/base/PostMessageEvent.cpp @@ -144,14 +144,15 @@ PostMessageEvent::Run() Nullable source; source.SetValue().SetAsWindowProxy() = mSource ? mSource->AsOuter() : nullptr; + Sequence> ports; + if (!TakeTransferredPortsAsSequence(ports)) { + return NS_ERROR_OUT_OF_MEMORY; + } + event->InitMessageEvent(nullptr, NS_LITERAL_STRING("message"), false /*non-bubbling */, false /*cancelable */, messageData, mCallerOrigin, - EmptyString(), source, - Sequence>()); - - nsTArray> ports = TakeTransferredPorts(); - event->SetPorts(Move(ports)); + EmptyString(), source, ports); // We can't simply call dispatchEvent on the window because doing so ends // up flipping the trusted bit on the event, and we don't want that to diff --git a/dom/base/StructuredCloneHolder.cpp b/dom/base/StructuredCloneHolder.cpp index bdad4df10b86..9e725f0470f7 100644 --- a/dom/base/StructuredCloneHolder.cpp +++ b/dom/base/StructuredCloneHolder.cpp @@ -1279,5 +1279,20 @@ StructuredCloneHolder::CustomFreeTransferHandler(uint32_t aTag, } } +bool +StructuredCloneHolder::TakeTransferredPortsAsSequence(Sequence>& aPorts) +{ + nsTArray> ports = TakeTransferredPorts(); + + aPorts.Clear(); + for (uint32_t i = 0, len = ports.Length(); i < len; ++i) { + if (!aPorts.AppendElement(ports[i].forget(), fallible)) { + return false; + } + } + + return true; +} + } // dom namespace } // mozilla namespace diff --git a/dom/base/StructuredCloneHolder.h b/dom/base/StructuredCloneHolder.h index ae4367c42ec5..2fbb608c7cb9 100644 --- a/dom/base/StructuredCloneHolder.h +++ b/dom/base/StructuredCloneHolder.h @@ -9,6 +9,7 @@ #include "js/StructuredClone.h" #include "mozilla/Move.h" #include "mozilla/UniquePtr.h" +#include "mozilla/dom/BindingDeclarations.h" #include "nsISupports.h" #include "nsTArray.h" @@ -207,6 +208,11 @@ public: return Move(mTransferredPorts); } + // This method uses TakeTransferredPorts() to populate a sequence of + // MessagePorts for WebIDL binding classes. + bool + TakeTransferredPortsAsSequence(Sequence>& aPorts); + nsTArray& PortIdentifiers() const { MOZ_ASSERT(mSupportsTransferring); diff --git a/dom/events/MessageEvent.cpp b/dom/events/MessageEvent.cpp index 9fcaec3f8e07..823920ea7ed7 100644 --- a/dom/events/MessageEvent.cpp +++ b/dom/events/MessageEvent.cpp @@ -175,13 +175,6 @@ MessageEvent::GetPorts(nsTArray>& aPorts) aPorts = mPorts; } -void -MessageEvent::SetPorts(nsTArray>&& aPorts) -{ - MOZ_ASSERT(mPorts.IsEmpty()); - mPorts = Move(aPorts); -} - void MessageEvent::SetSource(mozilla::dom::MessagePort* aPort) { diff --git a/dom/events/MessageEvent.h b/dom/events/MessageEvent.h index 4e67d44a1f5a..b8e4e2823fbb 100644 --- a/dom/events/MessageEvent.h +++ b/dom/events/MessageEvent.h @@ -49,8 +49,6 @@ public: void GetPorts(nsTArray>& aPorts); - void SetPorts(nsTArray>&& aPorts); - // Non WebIDL methods void SetSource(mozilla::dom::MessagePort* aPort); diff --git a/dom/messagechannel/MessagePort.cpp b/dom/messagechannel/MessagePort.cpp index 038ed51476ad..cadab813655b 100644 --- a/dom/messagechannel/MessagePort.cpp +++ b/dom/messagechannel/MessagePort.cpp @@ -134,17 +134,18 @@ private: RefPtr event = new MessageEvent(eventTarget, nullptr, nullptr); + Sequence> ports; + if (!mData->TakeTransferredPortsAsSequence(ports)) { + return NS_ERROR_OUT_OF_MEMORY; + } + event->InitMessageEvent(nullptr, NS_LITERAL_STRING("message"), false /* non-bubbling */, false /* cancelable */, value, EmptyString(), - EmptyString(), nullptr, - Sequence>()); + EmptyString(), nullptr, ports); event->SetTrusted(true); event->SetSource(mPort); - nsTArray> ports = mData->TakeTransferredPorts(); - event->SetPorts(Move(ports)); - bool dummy; mPort->DispatchEvent(static_cast(event.get()), &dummy); diff --git a/dom/webidl/ServiceWorkerMessageEvent.webidl b/dom/webidl/ServiceWorkerMessageEvent.webidl index fd9d448b5126..c05696c1595c 100644 --- a/dom/webidl/ServiceWorkerMessageEvent.webidl +++ b/dom/webidl/ServiceWorkerMessageEvent.webidl @@ -15,7 +15,6 @@ interface ServiceWorkerMessageEvent : Event { /** * Custom data associated with this event. */ - [GetterThrows] readonly attribute any data; /** diff --git a/dom/webidl/moz.build b/dom/webidl/moz.build index a3806aadeb87..b688d0392401 100644 --- a/dom/webidl/moz.build +++ b/dom/webidl/moz.build @@ -410,7 +410,6 @@ WEBIDL_FILES = [ 'ServiceWorker.webidl', 'ServiceWorkerContainer.webidl', 'ServiceWorkerGlobalScope.webidl', - 'ServiceWorkerMessageEvent.webidl', 'ServiceWorkerRegistration.webidl', 'SettingChangeNotification.webidl', 'SettingsManager.webidl', @@ -771,6 +770,7 @@ GENERATED_EVENTS_WEBIDL_FILES = [ 'ProgressEvent.webidl', 'RecordErrorEvent.webidl', 'ScrollViewChangeEvent.webidl', + 'ServiceWorkerMessageEvent.webidl', 'StyleRuleChangeEvent.webidl', 'StyleSheetApplicableStateChangeEvent.webidl', 'StyleSheetChangeEvent.webidl', diff --git a/dom/workers/ServiceWorkerClient.cpp b/dom/workers/ServiceWorkerClient.cpp index 323ca272ba80..660512a5f185 100644 --- a/dom/workers/ServiceWorkerClient.cpp +++ b/dom/workers/ServiceWorkerClient.cpp @@ -165,12 +165,14 @@ private: init.mSource.SetValue().SetAsServiceWorker() = serviceWorker; } + if (!TakeTransferredPortsAsSequence(init.mPorts)) { + return NS_ERROR_OUT_OF_MEMORY; + } + RefPtr event = ServiceWorkerMessageEvent::Constructor(aTargetContainer, - NS_LITERAL_STRING("message"), init, rv); - - nsTArray> ports = TakeTransferredPorts(); - event->SetPorts(Move(ports)); + NS_LITERAL_STRING("message"), + init); event->SetTrusted(true); bool status = false; diff --git a/dom/workers/ServiceWorkerEvents.cpp b/dom/workers/ServiceWorkerEvents.cpp index bdd50024f356..9656ad01c7be 100644 --- a/dom/workers/ServiceWorkerEvents.cpp +++ b/dom/workers/ServiceWorkerEvents.cpp @@ -1252,13 +1252,6 @@ ExtendableMessageEvent::GetPorts(nsTArray>& aPorts) aPorts = mPorts; } -void -ExtendableMessageEvent::SetPorts(nsTArray>&& aPorts) -{ - MOZ_ASSERT(mPorts.IsEmpty()); - mPorts = Move(aPorts); -} - void ExtendableMessageEvent::SetSource(ServiceWorkerClient* aClient) { diff --git a/dom/workers/ServiceWorkerEvents.h b/dom/workers/ServiceWorkerEvents.h index cf7b4a4e4c46..4fd1c80fd558 100644 --- a/dom/workers/ServiceWorkerEvents.h +++ b/dom/workers/ServiceWorkerEvents.h @@ -309,8 +309,6 @@ public: void GetPorts(nsTArray>& aPorts); - void SetPorts(nsTArray>&& aPorts); - void SetSource(ServiceWorkerClient* aClient); void SetSource(ServiceWorker* aServiceWorker); diff --git a/dom/workers/ServiceWorkerMessageEvent.cpp b/dom/workers/ServiceWorkerMessageEvent.cpp deleted file mode 100644 index 2c7697d7f2bd..000000000000 --- a/dom/workers/ServiceWorkerMessageEvent.cpp +++ /dev/null @@ -1,166 +0,0 @@ -/* vim: set ts=8 sts=2 et sw=2 tw=80: */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "mozilla/dom/ServiceWorkerMessageEvent.h" -#include "mozilla/dom/ServiceWorkerMessageEventBinding.h" -#include "mozilla/dom/MessagePort.h" -#include "mozilla/dom/MessagePortBinding.h" - -#include "mozilla/HoldDropJSObjects.h" -#include "jsapi.h" - -#include "ServiceWorker.h" - -namespace mozilla { -namespace dom { - -NS_IMPL_CYCLE_COLLECTION_CLASS(ServiceWorkerMessageEvent) - -NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(ServiceWorkerMessageEvent, Event) - tmp->mData.setUndefined(); - NS_IMPL_CYCLE_COLLECTION_UNLINK(mServiceWorker) - NS_IMPL_CYCLE_COLLECTION_UNLINK(mMessagePort) - NS_IMPL_CYCLE_COLLECTION_UNLINK(mPorts) -NS_IMPL_CYCLE_COLLECTION_UNLINK_END - -NS_IMPL_CYCLE_COLLECTION_TRAVERSE_BEGIN_INHERITED(ServiceWorkerMessageEvent, Event) - NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mServiceWorker) - NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mMessagePort) - NS_IMPL_CYCLE_COLLECTION_TRAVERSE(mPorts) -NS_IMPL_CYCLE_COLLECTION_TRAVERSE_END - -NS_IMPL_CYCLE_COLLECTION_TRACE_BEGIN_INHERITED(ServiceWorkerMessageEvent, Event) - NS_IMPL_CYCLE_COLLECTION_TRACE_JS_MEMBER_CALLBACK(mData) -NS_IMPL_CYCLE_COLLECTION_TRACE_END - -NS_INTERFACE_MAP_BEGIN_CYCLE_COLLECTION_INHERITED(ServiceWorkerMessageEvent) -NS_INTERFACE_MAP_END_INHERITING(Event) - -NS_IMPL_ADDREF_INHERITED(ServiceWorkerMessageEvent, Event) -NS_IMPL_RELEASE_INHERITED(ServiceWorkerMessageEvent, Event) - -ServiceWorkerMessageEvent::ServiceWorkerMessageEvent(EventTarget* aOwner, - nsPresContext* aPresContext, - WidgetEvent* aEvent) - : Event(aOwner, aPresContext, aEvent) - , mData(JS::UndefinedValue()) -{ - mozilla::HoldJSObjects(this); -} - -ServiceWorkerMessageEvent::~ServiceWorkerMessageEvent() -{ - mData.setUndefined(); - DropJSObjects(this); -} - -JSObject* -ServiceWorkerMessageEvent::WrapObjectInternal(JSContext* aCx, - JS::Handle aGivenProto) -{ - return mozilla::dom::ServiceWorkerMessageEventBinding::Wrap(aCx, this, aGivenProto); -} - - -void -ServiceWorkerMessageEvent::GetData(JSContext* aCx, JS::MutableHandle aData, - ErrorResult& aRv) const -{ - aData.set(mData); - if (!JS_WrapValue(aCx, aData)) { - aRv.Throw(NS_ERROR_FAILURE); - } -} - -void -ServiceWorkerMessageEvent::GetOrigin(nsAString& aOrigin) const -{ - aOrigin = mOrigin; -} - -void -ServiceWorkerMessageEvent::GetLastEventId(nsAString& aLastEventId) const -{ - aLastEventId = mLastEventId; -} - -void -ServiceWorkerMessageEvent::GetSource(Nullable& aValue) const -{ - if (mServiceWorker) { - aValue.SetValue().SetAsServiceWorker() = mServiceWorker; - } else if (mMessagePort) { - aValue.SetValue().SetAsMessagePort() = mMessagePort; - } -} - -void -ServiceWorkerMessageEvent::SetSource(mozilla::dom::MessagePort* aPort) -{ - mMessagePort = aPort; -} - -void -ServiceWorkerMessageEvent::SetSource(workers::ServiceWorker* aServiceWorker) -{ - mServiceWorker = aServiceWorker; -} - -void -ServiceWorkerMessageEvent::GetPorts(nsTArray>& aPorts) -{ - aPorts = mPorts; -} - -void -ServiceWorkerMessageEvent::SetPorts(nsTArray>&& aPorts) -{ - MOZ_ASSERT(mPorts.IsEmpty()); - mPorts = Move(aPorts); -} - -/* static */ already_AddRefed -ServiceWorkerMessageEvent::Constructor(const GlobalObject& aGlobal, - const nsAString& aType, - const ServiceWorkerMessageEventInit& aParam, - ErrorResult& aRv) -{ - nsCOMPtr t = do_QueryInterface(aGlobal.GetAsSupports()); - return Constructor(t, aType, aParam, aRv); -} - -/* static */ already_AddRefed -ServiceWorkerMessageEvent::Constructor(EventTarget* aEventTarget, - const nsAString& aType, - const ServiceWorkerMessageEventInit& aParam, - ErrorResult& aRv) -{ - RefPtr event = - new ServiceWorkerMessageEvent(aEventTarget, nullptr, nullptr); - - event->InitEvent(aType, aParam.mBubbles, aParam.mCancelable); - - bool trusted = event->Init(aEventTarget); - event->SetTrusted(trusted); - - event->mData = aParam.mData; - event->mOrigin = aParam.mOrigin; - event->mLastEventId = aParam.mLastEventId; - - if (!aParam.mSource.IsNull()) { - if (aParam.mSource.Value().IsServiceWorker()) { - event->mServiceWorker = aParam.mSource.Value().GetAsServiceWorker(); - } else if (aParam.mSource.Value().IsMessagePort()) { - event->mMessagePort = aParam.mSource.Value().GetAsMessagePort(); - } - } - - event->mPorts.AppendElements(aParam.mPorts); - - return event.forget(); -} - -} // namespace dom -} // namespace mozilla diff --git a/dom/workers/ServiceWorkerMessageEvent.h b/dom/workers/ServiceWorkerMessageEvent.h deleted file mode 100644 index bd371bd2d345..000000000000 --- a/dom/workers/ServiceWorkerMessageEvent.h +++ /dev/null @@ -1,85 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ -/* vim: set ts=8 sts=2 et sw=2 tw=80: */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef mozilla_dom_serviceworkermessageevent_h__ -#define mozilla_dom_serviceworkermessageevent_h__ - -#include "mozilla/dom/Event.h" - -namespace mozilla { -namespace dom { - -struct ServiceWorkerMessageEventInit; -class MessagePort; -class OwningServiceWorkerOrMessagePort; - -namespace workers { - -class ServiceWorker; - -} - -class ServiceWorkerMessageEvent final : public Event -{ -public: - ServiceWorkerMessageEvent(EventTarget* aOwner, - nsPresContext* aPresContext, - WidgetEvent* aEvent); - - NS_DECL_ISUPPORTS_INHERITED - NS_DECL_CYCLE_COLLECTION_SCRIPT_HOLDER_CLASS_INHERITED(ServiceWorkerMessageEvent, Event) - - // Forward to base class - NS_FORWARD_TO_EVENT - - virtual JSObject* WrapObjectInternal(JSContext* aCx, JS::Handle aGivenProto) override; - - void GetData(JSContext* aCx, JS::MutableHandle aData, - ErrorResult& aRv) const; - - void GetOrigin(nsAString& aOrigin) const; - - void GetLastEventId(nsAString& aLastEventId) const; - - void GetSource(Nullable& aValue) const; - - void GetPorts(nsTArray>& aPorts); - - void SetSource(mozilla::dom::MessagePort* aPort); - - void SetSource(workers::ServiceWorker* aServiceWorker); - - void SetPorts(nsTArray>&& aPorts); - - static already_AddRefed - Constructor(const GlobalObject& aGlobal, - const nsAString& aType, - const ServiceWorkerMessageEventInit& aEventInit, - ErrorResult& aRv); - - static already_AddRefed - Constructor(EventTarget* aEventTarget, - const nsAString& aType, - const ServiceWorkerMessageEventInit& aEventInit, - ErrorResult& aRv); - -protected: - ~ServiceWorkerMessageEvent(); - -private: - JS::Heap mData; - nsString mOrigin; - nsString mLastEventId; - RefPtr mServiceWorker; - RefPtr mMessagePort; - nsTArray> mPorts; -}; - -} // namespace dom -} // namespace mozilla - -#endif /* mozilla_dom_workers_serviceworkermessageevent_h__ */ - diff --git a/dom/workers/WorkerPrivate.cpp b/dom/workers/WorkerPrivate.cpp index 00086f46e531..dcde10a2b11a 100644 --- a/dom/workers/WorkerPrivate.cpp +++ b/dom/workers/WorkerPrivate.cpp @@ -683,7 +683,10 @@ public: return false; } - nsTArray> ports = TakeTransferredPorts(); + Sequence> ports; + if (!TakeTransferredPortsAsSequence(ports)) { + return false; + } nsCOMPtr domEvent; RefPtr extendableEvent; @@ -699,6 +702,7 @@ public: init.mCancelable = false; init.mData = messageData; + init.mPorts = ports; ErrorResult rv; extendableEvent = ExtendableMessageEvent::Constructor( @@ -708,7 +712,6 @@ public: return false; } extendableEvent->SetSource(client); - extendableEvent->SetPorts(Move(ports)); domEvent = do_QueryObject(extendableEvent); } else { @@ -721,8 +724,7 @@ public: EmptyString(), EmptyString(), nullptr, - Sequence>()); - event->SetPorts(Move(ports)); + ports); domEvent = do_QueryObject(event); } @@ -6489,6 +6491,9 @@ WorkerPrivate::ConnectMessagePort(JSContext* aCx, init.mBubbles = false; init.mCancelable = false; init.mSource.SetValue().SetAsMessagePort() = port; + if (!init.mPorts.AppendElement(port.forget(), fallible)) { + return false; + } RefPtr event = MessageEvent::Constructor(globalObject, @@ -6496,11 +6501,6 @@ WorkerPrivate::ConnectMessagePort(JSContext* aCx, event->SetTrusted(true); - nsTArray> ports; - ports.AppendElement(port); - - event->SetPorts(Move(ports)); - nsCOMPtr domEvent = do_QueryObject(event); nsEventStatus dummy = nsEventStatus_eIgnore; diff --git a/dom/workers/moz.build b/dom/workers/moz.build index 4f88f7f2f7b3..4f4b52e4a9fb 100644 --- a/dom/workers/moz.build +++ b/dom/workers/moz.build @@ -10,7 +10,6 @@ EXPORTS.mozilla.dom += [ 'ServiceWorkerCommon.h', 'ServiceWorkerContainer.h', 'ServiceWorkerEvents.h', - 'ServiceWorkerMessageEvent.h', 'ServiceWorkerRegistrar.h', 'ServiceWorkerRegistration.h', 'WorkerLocation.h', @@ -66,7 +65,6 @@ UNIFIED_SOURCES += [ 'ServiceWorkerManagerChild.cpp', 'ServiceWorkerManagerParent.cpp', 'ServiceWorkerManagerService.cpp', - 'ServiceWorkerMessageEvent.cpp', 'ServiceWorkerPrivate.cpp', 'ServiceWorkerRegisterJob.cpp', 'ServiceWorkerRegistrar.cpp', From c73c377b2d25945320c53ecba817de5cdfdb6529 Mon Sep 17 00:00:00 2001 From: Andrea Marchesini Date: Wed, 26 Oct 2016 22:00:43 +0200 Subject: [PATCH 08/24] Bug 1313006 - Remove of MessageEvent.setSource, r=qdot --- dom/events/MessageEvent.cpp | 6 ------ dom/events/MessageEvent.h | 8 -------- dom/messagechannel/MessagePort.cpp | 6 ++++-- 3 files changed, 4 insertions(+), 16 deletions(-) diff --git a/dom/events/MessageEvent.cpp b/dom/events/MessageEvent.cpp index 823920ea7ed7..b7070c008400 100644 --- a/dom/events/MessageEvent.cpp +++ b/dom/events/MessageEvent.cpp @@ -175,11 +175,5 @@ MessageEvent::GetPorts(nsTArray>& aPorts) aPorts = mPorts; } -void -MessageEvent::SetSource(mozilla::dom::MessagePort* aPort) -{ - mPortSource = aPort; -} - } // namespace dom } // namespace mozilla diff --git a/dom/events/MessageEvent.h b/dom/events/MessageEvent.h index b8e4e2823fbb..4419b7927636 100644 --- a/dom/events/MessageEvent.h +++ b/dom/events/MessageEvent.h @@ -49,14 +49,6 @@ public: void GetPorts(nsTArray>& aPorts); - // Non WebIDL methods - void SetSource(mozilla::dom::MessagePort* aPort); - - void SetSource(nsPIDOMWindowInner* aWindow) - { - mWindowSource = aWindow; - } - static already_AddRefed Constructor(const GlobalObject& aGlobal, const nsAString& aType, diff --git a/dom/messagechannel/MessagePort.cpp b/dom/messagechannel/MessagePort.cpp index cadab813655b..c9b996b052a0 100644 --- a/dom/messagechannel/MessagePort.cpp +++ b/dom/messagechannel/MessagePort.cpp @@ -139,12 +139,14 @@ private: return NS_ERROR_OUT_OF_MEMORY; } + Nullable source; + source.SetValue().SetAsMessagePort() = mPort; + event->InitMessageEvent(nullptr, NS_LITERAL_STRING("message"), false /* non-bubbling */, false /* cancelable */, value, EmptyString(), - EmptyString(), nullptr, ports); + EmptyString(), source, ports); event->SetTrusted(true); - event->SetSource(mPort); bool dummy; mPort->DispatchEvent(static_cast(event.get()), &dummy); From 65ae873c8a3712419321ca8310923dc63ae2ea58 Mon Sep 17 00:00:00 2001 From: Andrea Marchesini Date: Wed, 26 Oct 2016 22:02:54 +0200 Subject: [PATCH 09/24] Bug 1313007 - Remove ExtendableMessageEvent::SetSource, r=qdot --- dom/workers/ServiceWorkerEvents.cpp | 12 ------------ dom/workers/ServiceWorkerEvents.h | 4 ---- dom/workers/WorkerPrivate.cpp | 2 +- 3 files changed, 1 insertion(+), 17 deletions(-) diff --git a/dom/workers/ServiceWorkerEvents.cpp b/dom/workers/ServiceWorkerEvents.cpp index 9656ad01c7be..2542473c4aa0 100644 --- a/dom/workers/ServiceWorkerEvents.cpp +++ b/dom/workers/ServiceWorkerEvents.cpp @@ -1252,18 +1252,6 @@ ExtendableMessageEvent::GetPorts(nsTArray>& aPorts) aPorts = mPorts; } -void -ExtendableMessageEvent::SetSource(ServiceWorkerClient* aClient) -{ - mClient = aClient; -} - -void -ExtendableMessageEvent::SetSource(ServiceWorker* aServiceWorker) -{ - mServiceWorker = aServiceWorker; -} - NS_IMPL_CYCLE_COLLECTION_CLASS(ExtendableMessageEvent) NS_IMPL_CYCLE_COLLECTION_UNLINK_BEGIN_INHERITED(ExtendableMessageEvent, Event) diff --git a/dom/workers/ServiceWorkerEvents.h b/dom/workers/ServiceWorkerEvents.h index 4fd1c80fd558..981a013f1e96 100644 --- a/dom/workers/ServiceWorkerEvents.h +++ b/dom/workers/ServiceWorkerEvents.h @@ -308,10 +308,6 @@ public: } void GetPorts(nsTArray>& aPorts); - - void SetSource(ServiceWorkerClient* aClient); - - void SetSource(ServiceWorker* aServiceWorker); }; END_WORKERS_NAMESPACE diff --git a/dom/workers/WorkerPrivate.cpp b/dom/workers/WorkerPrivate.cpp index dcde10a2b11a..03f8df0a02c5 100644 --- a/dom/workers/WorkerPrivate.cpp +++ b/dom/workers/WorkerPrivate.cpp @@ -703,6 +703,7 @@ public: init.mData = messageData; init.mPorts = ports; + init.mSource.SetValue().SetAsClient() = client; ErrorResult rv; extendableEvent = ExtendableMessageEvent::Constructor( @@ -711,7 +712,6 @@ public: rv.SuppressException(); return false; } - extendableEvent->SetSource(client); domEvent = do_QueryObject(extendableEvent); } else { From fc31e05aaae0ec2a9e4a8fc60ca0f62227fb51d8 Mon Sep 17 00:00:00 2001 From: Kan-Ru Chen Date: Mon, 24 Oct 2016 22:00:03 +0800 Subject: [PATCH 10/24] Bug 1081858 - Part 1. Fix aText off-by-one indexing. r=jfkthame MozReview-Commit-ID: 6LAlEntU6C7 --- layout/generic/nsTextFrameUtils.cpp | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/layout/generic/nsTextFrameUtils.cpp b/layout/generic/nsTextFrameUtils.cpp index d1eedd48abb6..dc5f32e211a0 100644 --- a/layout/generic/nsTextFrameUtils.cpp +++ b/layout/generic/nsTextFrameUtils.cpp @@ -51,7 +51,7 @@ nsTextFrameUtils::TransformText(const char16_t* aText, uint32_t aLength, // Skip discardables. uint32_t i; for (i = 0; i < aLength; ++i) { - char16_t ch = *aText++; + char16_t ch = aText[i]; if (IsDiscardable(ch, &flags)) { aSkipChars->SkipChar(); } else { @@ -82,15 +82,15 @@ nsTextFrameUtils::TransformText(const char16_t* aText, uint32_t aLength, bool inWhitespace = (*aIncomingFlags & INCOMING_WHITESPACE) != 0; uint32_t i; for (i = 0; i < aLength; ++i) { - char16_t ch = *aText++; + char16_t ch = aText[i]; bool nowInWhitespace; if (ch == ' ' && (i + 1 >= aLength || - !IsSpaceCombiningSequenceTail(aText, aLength - (i + 1)))) { + !IsSpaceCombiningSequenceTail(&aText[i + 1], aLength - (i + 1)))) { nowInWhitespace = true; } else if (ch == '\n' && aCompression == COMPRESS_WHITESPACE_NEWLINE) { - if (i > 0 && IS_CJ_CHAR(aText[-1]) && - i + 1 < aLength && IS_CJ_CHAR(aText[1])) { + if (i > 0 && IS_CJ_CHAR(aText[i - 1]) && + i + 1 < aLength && IS_CJ_CHAR(aText[i + 1])) { // Discard newlines between CJK chars. // XXX this really requires more context to get right! aSkipChars->SkipChar(); @@ -158,7 +158,7 @@ nsTextFrameUtils::TransformText(const uint8_t* aText, uint32_t aLength, // Skip discardables. uint32_t i; for (i = 0; i < aLength; ++i) { - uint8_t ch = *aText++; + uint8_t ch = aText[i]; if (IsDiscardable(ch, &flags)) { aSkipChars->SkipChar(); } else { @@ -182,7 +182,7 @@ nsTextFrameUtils::TransformText(const uint8_t* aText, uint32_t aLength, bool inWhitespace = (*aIncomingFlags & INCOMING_WHITESPACE) != 0; uint32_t i; for (i = 0; i < aLength; ++i) { - uint8_t ch = *aText++; + uint8_t ch = aText[i]; bool nowInWhitespace = ch == ' ' || ch == '\t' || (ch == '\n' && aCompression == COMPRESS_WHITESPACE_NEWLINE); if (!nowInWhitespace) { From eb2f3cfed9bdee951a0ee41e0088bd10512a4cc5 Mon Sep 17 00:00:00 2001 From: Kan-Ru Chen Date: Tue, 25 Oct 2016 00:08:06 +0800 Subject: [PATCH 11/24] Bug 1081858 - Part 2. Add EastAsianWidthFWH data from Unicode's EastAsianWidth.txt to nsUnicodeProperties for builds without ICU. r=jfkthame MozReview-Commit-ID: EOtAPx5ZY1U --- .../tools/genUnicodePropertyData.pl | 43 +- intl/unicharutil/util/nsUnicodeProperties.cpp | 1 + .../util/nsUnicodePropertyData.cpp | 2024 +++++++++-------- intl/unicharutil/util/nsUnicodeScriptCodes.h | 8 +- 4 files changed, 1062 insertions(+), 1014 deletions(-) diff --git a/intl/unicharutil/tools/genUnicodePropertyData.pl b/intl/unicharutil/tools/genUnicodePropertyData.pl index fbf6916b30f8..8b247e83c684 100755 --- a/intl/unicharutil/tools/genUnicodePropertyData.pl +++ b/intl/unicharutil/tools/genUnicodePropertyData.pl @@ -22,6 +22,7 @@ # - BidiBrackets.txt # - HangulSyllableType.txt # - LineBreak.txt +# - EastAsianWidth.txt # - ReadMe.txt (to record version/date of the UCD) # - Unihan_Variants.txt (from Unihan.zip) # though this may change if we find a need for additional properties. @@ -231,6 +232,15 @@ my %lineBreakCode = ( # ordering matches ICU's ULineBreak enum "RI" => 39 ); +my %eastAsianWidthCode = ( + "N" => 0, + "A" => 1, + "H" => 2, + "W" => 3, + "F" => 4, + "Na" => 5 +); + # initialize default properties my @script; my @category; @@ -247,6 +257,7 @@ my @fullWidth; my @fullWidthInverse; my @verticalOrientation; my @lineBreak; +my @eastAsianWidthFWH; for (my $i = 0; $i < 0x110000; ++$i) { $script[$i] = $scriptCode{"UNKNOWN"}; $category[$i] = $catCode{"UNASSIGNED"}; @@ -261,6 +272,7 @@ for (my $i = 0; $i < 0x110000; ++$i) { $fullWidthInverse[$i] = 0; $verticalOrientation[$i] = 1; # default for unlisted codepoints is 'R' $lineBreak[$i] = $lineBreakCode{"XX"}; + $eastAsianWidthFWH[$i] = 0; } # blocks where the default for bidi category is not L @@ -522,6 +534,29 @@ while () { } close FH; +# read EastAsianWidth.txt +open FH, "< $UNICODE/EastAsianWidth.txt" or die "can't open UCD file EastAsianWidth.txt\n"; +push @versionInfo, ""; +while () { + chomp; + push @versionInfo, $_; + last if /Date:/; +} +while () { + s/#.*//; + if (m/([0-9A-F]{4,6})(?:\.\.([0-9A-F]{4,6}))*\s*;\s*([^ ]+)/) { + my $start = hex "0x$1"; + my $end = (defined $2) ? hex "0x$2" : $start; + my $eaw = $3; + warn "unknown EastAsianWidth class" unless exists $eastAsianWidthCode{$eaw}; + my $isFWH = ($eaw =~ m/^[FWH]$/) ? 1 : 0; + for (my $i = $start; $i <= $end; ++$i) { + $eastAsianWidthFWH[$i] = $isFWH; + } + } +} +close FH; + # read xidmodifications.txt open FH, "< $UNICODE/security/xidmodifications.txt" or die "can't open UCD file xidmodifications.txt\n"; push @versionInfo, ""; @@ -719,15 +754,17 @@ struct nsCharProps2 { sub sprintCharProps2_full { my $usv = shift; - return sprintf("{%d,%d,%d,%d,%d,%d,%d,%d},", - $script[$usv], $pairedBracketType[$usv], $category[$usv], + return sprintf("{%d,%d,%d,%d,%d,%d,%d,%d,%d},", + $script[$usv], $pairedBracketType[$usv], + $eastAsianWidthFWH[$usv], $category[$usv], $bidicategory[$usv], $xidmod[$usv], $numericvalue[$usv], $verticalOrientation[$usv], $lineBreak[$usv]); } $type = q| struct nsCharProps2 { unsigned char mScriptCode:8; - unsigned char mPairedBracketType:3; // only 2 bits actually needed + unsigned char mPairedBracketType:2; + unsigned char mEastAsianWidthFWH:1; unsigned char mCategory:5; unsigned char mBidiCategory:5; unsigned char mXidmod:4; diff --git a/intl/unicharutil/util/nsUnicodeProperties.cpp b/intl/unicharutil/util/nsUnicodeProperties.cpp index 7655545701f7..2aeabf1eec07 100644 --- a/intl/unicharutil/util/nsUnicodeProperties.cpp +++ b/intl/unicharutil/util/nsUnicodeProperties.cpp @@ -60,6 +60,7 @@ GetCharProps2(uint32_t aCh) #else uint8_t(Script::UNKNOWN), PAIRED_BRACKET_TYPE_NONE, + 0, // EastAsianWidthFWH HB_UNICODE_GENERAL_CATEGORY_UNASSIGNED, eCharType_LeftToRight, XIDMOD_NOT_CHARS, diff --git a/intl/unicharutil/util/nsUnicodePropertyData.cpp b/intl/unicharutil/util/nsUnicodePropertyData.cpp index bdcf78a92b7e..f8b5a02bcbe6 100644 --- a/intl/unicharutil/util/nsUnicodePropertyData.cpp +++ b/intl/unicharutil/util/nsUnicodePropertyData.cpp @@ -11,7 +11,7 @@ */ /* - * Created on Tue Oct 25 10:05:43 2016 from UCD data files with version info: + * Created on Wed Oct 26 09:12:45 2016 from UCD data files with version info: * # Date: 2015-06-16, 20:24:00 GMT [KW] @@ -47,6 +47,9 @@ Standard. # LineBreak-8.0.0.txt # Date: 2015-02-13, 09:15:00 GMT [KW, LI] +# EastAsianWidth-8.0.0.txt +# Date: 2015-02-10, 21:00:00 GMT [KW, LI] + # File: xidmodifications.txt # Version: 8.0.0 # Generated: 2015-05-17, 03:09:04 GMT @@ -681,1017 +684,1020 @@ static const uint8_t sCharProp2Planes[16] = {1,2,3,4,4,4,4,4,4,4,4,4,4,5,6,6}; static const uint16_t sCharProp2Pages[7][4096] = { {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,16,16,17,18,16,16,19,20,21,22,23,24,25,26,27,16,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,59,59,60,60,60,61,61,62,63,63,63,64,63,63,63,63,63,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,81,82,83,84,85,86,81,81,81,81,87,88,89,90,91,92,93,94,81,81,81,95,95,96,97,98,99,100,101,102,103,104,105,106,107,108,108,108,108,109,110,111,111,112,113,114,115,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,192,193,194,194,195,196,197,198,198,199,200,201,202,203,204,198,198,205,206,207,208,209,210,211,212,213,214,215,216,217,218,198,198,219,219,220,221,222,223,224,225,226,227,228,228,229,230,230,231,232,232,232,232,232,233,234,235,235,235,236,237,237,237,237,237,238,238,238,238,239,240,238,238,239,238,238,241,242,243,238,238,238,242,238,238,238,244,245,246,238,247,248,248,248,248,248,249,250,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,251,252,251,253,254,255,255,255,255,256,257,258,259,260,261,262,263,264,265,266,266,267,268,269,270,271,272,273,274,275,275,276,275,275,277,275,275,278,251,251,251,251,279,280,281,282,283,284,285,286,287,288,288,289,288,290,291,292,292,293,294,295,295,295,296,297,298,299,299,300,301,198,198,198,198,302,303,303,304,305,306,307,308,309,310,311,312,313,313,314,315,316,316,317,318,319,320,321,322,198,198,198,198,323,324,325,326,37,37,327,328,329,330,331,332,37,333,334,335,336,337,338,339,16,16,16,16,16,16,16,16,16,340,16,16,16,16,16,341,342,343,342,342,343,344,342,345,346,346,346,347,348,349,350,351,352,353,354,355,356,357,358,359,360,361,362,363,364,365,366,367,368,369,370,371,372,373,374,375,376,377,378,379,380,381,379,382,383,384,385,386,387,388,389,390,391,392,393,394,390,390,395,390,396,397,398,399,400,400,400,401,402,403,390,404,405,406,407,408,402,402,409,410,411,410,412,413,414,415,416,416,416,416,417,418,419,419,419,419,420,419,419,421,419,422,423,424,425,426,427,428,429,430,402,431,432,402,433,434,402,435,436,437,438,439,440,441,442,402,402,402,402,443,444,445,446,447,379,379,448,390,449,390,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,450,390,390,390,390,390,390,390,390,451,452,390,390,390,453,390,454,455,390,390,390,390,390,390,456,390,390,390,390,390,455,390,390,379,457,402,390,458,459,379,460,379,461,379,462,463,464,465,410,466,466,467,468,468,469,470,471,472,472,472,472,472,472,473,474,475,475,476,477,477,477,478,479,238,480,481,481,481,481,482,482,483,484,485,486,487,198,198,198,488,489,488,488,488,488,488,490,491,491,491,491,491,491,491,491,491,491,491,491,491,492,410,493,494,495,496,497,498,499,500,499,501,502,503,504,505,504,506,507,508,509,510,511,512,512,513,512,514,515,509,516,517,517,518,519,520,521,522,523,524,525,520,526,522,523,523,527,528,529,529,530,531,531,531,531,531,532,523,533,523,523,523,523,523,534,523,535,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,537,402,402,402,402,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,537,538,538,539,540,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,539,541,542,542,542,543,544,544,545,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,546,547,546,548,198,61,61,549,550,61,551,552,552,552,552,553,554,42,555,556,557,558,558,558,559,560,561,562,563,198,198,198,564,565,566,567,568,569,569,569,570,571,572,572,573,574,575,576,577,578,579,580,581,582,583,232,584,585,586,586,587,588,589,590,591,592,592,593,594,595,596,219,597,598,598,598,599,600,601,602,603,604,605,481,606,606,607,608,609,609,609,609,609,610,610,611,612,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,617,615,613,614,615,616,615,618,235,619,237,237,620,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,621,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,624,625,626,623,623,623,627,623,623,623,623,623,623,628,538,538,629,630,631,632,633,634,634,634,634,634,634,635,636,637,634,634,634,634,634,634,634,634,634,634,634,634,634,634,634,634,634,634,634,634,634,638,111,634,634,634,634,639,634,634,640,198,198,641,642,643,644,645,646,647,648,649,634,634,634,634,634,634,634,650,651,652,653,654,655,656,657,658,659,660,661,662,663,664,665,666}, - {667,668,669,670,671,671,198,198,668,668,668,668,668,668,668,672,673,674,674,675,676,676,676,677,678,679,680,198,198,400,400,681,198,198,198,198,198,198,198,198,682,683,684,684,684,685,686,687,688,688,689,690,691,692,692,693,694,695,696,696,697,698,198,198,699,699,700,701,701,702,702,702,703,704,705,198,198,198,198,198,706,706,707,708,708,708,709,198,198,198,198,198,198,198,198,198,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,711,710,712,713,198,198,198,198,198,198,198,198,198,714,715,715,716,717,718,719,720,721,722,723,108,108,108,724,725,726,727,728,729,108,108,108,108,730,730,731,732,733,734,733,733,735,736,737,738,739,740,741,742,743,744,108,108,745,746,747,748,749,749,749,750,751,752,753,754,755,756,757,108,108,108,108,108,758,758,758,758,759,108,108,108,760,760,760,761,762,762,762,763,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,764,765,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,766,767,767,768,769,770,771,772,773,774,774,775,776,777,778,779,780,781,782,783,784,785,785,786,787,788,788,789,790,791,792,793,794,795,796,797,198,198,198,198,798,799,800,801,801,802,803,804,805,806,807,808,809,810,811,812,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,813,813,813,814,815,816,198,198,198,198,198,198,198,198,198,198,817,817,818,819,820,821,410,410,822,822,822,823,824,825,198,198,826,826,827,828,829,198,198,198,830,831,832,833,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,834,834,835,835,836,837,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,838,838,838,839,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,841,198,198,198,198,198,198,842,842,842,842,842,842,843,844,840,840,840,840,840,840,840,840,840,840,840,840,845,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,847,846,846,848,846,846,846,846,846,846,846,846,846,846,846,846,846,846,849,846,846,846,846,846,846,846,846,846,846,850,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,852,851,851,851,851,851,851,851,853,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,854,855,856,857,198,198,198,198,198,198,858,859,860,861,861,861,862,863,864,865,866,861,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,867,867,867,867,868,869,870,871,872,873,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,874,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,875,875,875,875,875,875,876,877,878,879,880,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,882,881,881,883,881,881,884,885,886,887,881,888,889,890,881,891,410,892,892,892,892,893,198,198,198,198,198,198,198,198,198,198,198,402,402,402,402,402,894,895,896,198,198,198,198,198,198,198,198,897,898,899,900,901,902,903,897,904,905,906,907,908,897,898,899,909,910,899,911,912,913,914,897,915,899,897,898,899,900,901,899,903,897,904,914,897,915,899,897,898,899,916,897,917,918,919,920,899,921,897,922,923,924,925,899,926,897,927,899,928,929,930,931,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,933,933,933,934,933,933,935,936,937,938,939,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,940,940,940,940,940,940,940,940,940,940,940,940,941,942,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,943,634,944,945,946,947,948,949,950,951,952,951,111,111,111,953,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,517,517,493,517,517,517,517,517,517,518,954,955,955,955,517,956,957,416,958,416,416,959,960,959,959,961,410,410,410,410,962,963,964,523,523,965,966,967,410,410,410,410,410,410,410,410,410,410,517,517,517,517,517,517,517,517,517,968,517,969,517,517,517,970,517,517,517,517,517,517,517,517,517,517,971,972,517,517,517,517,973,974,975,976,977,517,517,978,517,517,979,517,517,980,517,981,517,517,517,517,517,402,402,982,517,517,517,517,517,983,984,518,402,402,402,402,402,402,402,985,402,402,402,402,402,986,410,410,679,379,379,379,987,988,379,379,987,379,989,198,198,198,198,198,198,990,198,198,198,198,198,198,991,198,198,198,992,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198}, - {536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,993,538,538,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,994,536,536,536,536,536,536,536,536,536,536,536,536,536,995,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,996,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,627,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,997}, - {538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,997}, + {667,668,669,670,671,671,198,198,668,668,668,668,668,668,668,672,673,674,674,675,676,676,676,677,678,679,680,198,198,400,400,681,198,198,198,198,198,198,198,198,682,683,684,684,684,685,686,687,688,688,689,690,691,692,692,693,694,695,696,696,697,698,198,198,699,699,700,701,701,702,702,702,703,704,705,198,198,198,198,198,706,706,707,708,708,708,709,198,198,198,198,198,198,198,198,198,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,710,711,710,712,713,198,198,198,198,198,198,198,198,198,714,715,715,716,717,718,719,720,721,722,723,108,108,108,724,725,726,727,728,729,108,108,108,108,730,730,731,732,733,734,733,733,735,736,737,738,739,740,741,742,743,744,108,108,745,746,747,748,749,749,749,750,751,752,753,754,755,756,757,108,108,108,108,108,758,758,758,758,759,108,108,108,760,760,760,761,762,762,762,763,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,764,765,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,766,767,767,768,769,770,771,772,773,774,774,775,776,777,778,779,780,781,782,783,784,785,785,786,787,788,788,789,790,791,792,793,794,795,796,797,198,198,198,198,798,799,800,801,801,802,803,804,805,806,807,808,809,810,811,812,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,813,813,813,814,815,816,198,198,198,198,198,198,198,198,198,198,817,817,818,819,820,821,410,410,822,822,822,823,824,825,198,198,826,826,827,828,829,198,198,198,830,831,832,833,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,834,834,835,835,836,837,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,838,838,838,839,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,840,841,198,198,198,198,198,198,842,842,842,842,842,842,843,844,840,840,840,840,840,840,840,840,840,840,840,840,845,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,846,847,846,846,848,846,846,846,846,846,846,846,846,846,846,846,846,846,846,849,846,846,846,846,846,846,846,846,846,846,850,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,851,852,851,851,851,851,851,851,851,853,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,552,854,855,856,857,198,198,198,198,198,198,858,859,860,861,861,861,862,863,864,865,866,861,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,867,867,867,867,868,869,870,871,872,873,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,874,410,410,410,410,410,410,410,410,410,410,410,410,410,410,410,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,875,875,875,875,875,875,876,877,878,879,880,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,881,881,881,881,881,881,881,881,881,881,881,881,881,881,881,882,881,881,883,881,881,884,885,886,887,881,888,889,890,881,891,410,892,892,892,892,893,198,198,198,198,198,198,198,198,198,198,198,402,402,402,402,402,894,895,896,198,198,198,198,198,198,198,198,897,898,899,900,901,902,903,897,904,905,906,907,908,897,898,899,909,910,899,911,912,913,914,897,915,899,897,898,899,900,901,899,903,897,904,914,897,915,899,897,898,899,916,897,917,918,919,920,899,921,897,922,923,924,925,899,926,897,927,899,928,929,930,931,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,932,933,933,933,934,933,933,935,936,937,938,939,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,940,940,940,940,940,940,940,940,940,940,940,940,941,942,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,943,634,944,945,946,947,948,949,950,951,952,951,111,111,111,953,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,108,954,954,955,954,954,954,954,954,954,956,957,958,958,958,954,959,960,416,961,416,416,962,963,962,962,964,410,410,410,410,965,966,967,523,523,968,969,970,410,410,410,410,410,410,410,410,410,410,954,954,954,954,954,954,954,954,954,971,954,972,954,954,954,973,954,954,954,954,954,954,954,954,954,954,974,975,954,954,954,954,976,977,978,979,980,954,954,981,954,954,982,954,954,983,954,984,954,954,954,954,954,402,402,985,954,954,954,954,954,986,987,956,402,402,402,402,402,402,402,988,402,402,402,402,402,989,410,410,679,379,379,379,990,991,379,379,990,379,992,198,198,198,198,198,198,993,198,198,198,198,198,198,994,198,198,198,995,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198}, + {536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,996,538,538,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,997,536,536,536,536,536,536,536,536,536,536,536,536,536,998,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,536,999,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,623,627,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,1000}, + {538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,538,1000}, {198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198}, - {998,198,999,999,999,999,999,1000,198,198,198,198,198,198,198,198,642,642,642,642,642,642,642,642,642,642,642,642,642,642,642,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198}, - {622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,1001} + {1001,198,1002,1002,1002,1002,1002,1003,198,198,198,198,198,198,198,198,642,642,642,642,642,642,642,642,642,642,642,642,642,642,642,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198,198}, + {622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,622,1004} }; -static const nsCharProps2 sCharProp2Values[1002][16] = { - {{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,8,8,-1,1,4},{0,0,0,7,8,-1,1,17},{0,0,0,8,8,-1,1,6},{0,0,0,9,8,-1,1,6},{0,0,0,7,8,-1,1,10},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9}}, - {{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,7,12,-1,1,9},{0,0,0,7,12,-1,1,9},{0,0,0,7,12,-1,1,9},{0,0,0,8,12,-1,1,9}}, - {{0,0,29,9,8,-1,1,26},{0,0,21,10,8,-1,1,11},{0,0,21,10,8,-1,1,23},{0,0,21,4,8,-1,1,2},{0,0,23,4,8,-1,1,22},{0,0,21,4,8,-1,1,21},{0,0,21,10,8,-1,1,2},{0,0,21,10,1,-1,1,23},{0,1,22,10,8,-1,1,20},{0,2,18,10,8,-1,1,36},{0,0,21,10,8,-1,1,2},{0,0,25,3,8,-1,1,22},{0,0,21,6,8,-1,1,16},{0,0,17,3,1,-1,1,13},{0,0,21,6,1,-1,1,16},{0,0,21,6,8,-1,1,27}}, - {{0,0,13,2,0,0,1,19},{0,0,13,2,0,1,1,19},{0,0,13,2,0,2,1,19},{0,0,13,2,0,3,1,19},{0,0,13,2,0,4,1,19},{0,0,13,2,0,5,1,19},{0,0,13,2,0,6,1,19},{0,0,13,2,0,7,1,19},{0,0,13,2,0,8,1,19},{0,0,13,2,0,9,1,19},{0,0,21,6,1,-1,1,16},{0,0,21,10,8,-1,1,16},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,21,10,8,-1,1,11}}, - {{0,0,21,10,8,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2}}, - {{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{0,1,22,10,8,-1,1,20},{0,0,21,10,8,-1,1,22},{0,2,18,10,8,-1,1,36},{0,0,24,10,8,-1,1,2},{0,0,16,10,0,-1,1,2}}, - {{0,0,24,10,8,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2}}, - {{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{0,1,22,10,8,-1,1,20},{0,0,25,10,8,-1,1,4},{0,2,18,10,8,-1,1,8},{0,0,25,10,8,-1,1,2},{0,0,0,18,12,-1,1,9}}, - {{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,7,8,-1,1,29},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9}}, - {{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9},{0,0,0,18,12,-1,1,9}}, - {{0,0,29,6,9,-1,1,12},{0,0,21,10,8,-1,1,20},{0,0,23,4,8,-1,1,21},{0,0,23,4,8,-1,1,22},{0,0,23,4,8,-1,1,22},{0,0,23,4,8,-1,1,22},{0,0,26,10,8,-1,1,2},{0,0,21,10,8,-1,0,1},{0,0,24,10,9,-1,1,1},{0,0,26,10,8,-1,0,2},{25,0,7,0,9,-1,1,1},{0,0,20,10,8,-1,1,23},{0,0,25,10,8,-1,1,2},{0,0,1,18,10,-1,1,4},{0,0,26,10,8,-1,0,2},{0,0,24,10,9,-1,1,2}}, - {{0,0,26,4,8,-1,1,21},{0,0,25,4,8,-1,0,22},{0,0,15,2,9,2,1,1},{0,0,15,2,9,3,1,1},{0,0,24,10,9,-1,1,5},{0,0,5,0,9,-1,1,2},{0,0,21,10,8,-1,1,1},{0,0,21,10,1,-1,1,1},{0,0,24,10,9,-1,1,1},{0,0,15,2,9,1,1,1},{25,0,7,0,9,-1,1,1},{0,0,19,10,8,-1,1,23},{0,0,15,10,9,-1,0,1},{0,0,15,10,9,-1,0,1},{0,0,15,10,9,-1,0,1},{0,0,21,10,8,-1,1,20}}, - {{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2}}, - {{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{0,0,25,10,8,-1,0,1},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2}}, - {{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2}}, - {{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{0,0,25,10,8,-1,0,1},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2}}, - {{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2}}, - {{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,9,-1,1,2},{25,0,5,0,9,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,9,-1,1,2}}, - {{25,0,5,0,9,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,11,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2}}, - {{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,9,-1,1,2}}, - {{25,0,5,0,3,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,9,0,0,-1,1,2}}, - {{25,0,9,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,9,0,2,-1,1,2}}, - {{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,9,0,0,-1,1,2}}, - {{25,0,5,0,0,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,7,0,4,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,5,0,4,-1,1,2}}, - {{25,0,7,0,3,-1,1,2},{25,0,7,0,3,-1,1,2},{25,0,7,0,3,-1,1,2},{25,0,7,0,3,-1,1,2},{25,0,9,0,9,-1,1,2},{25,0,8,0,9,-1,1,2},{25,0,5,0,9,-1,1,2},{25,0,9,0,9,-1,1,2},{25,0,8,0,9,-1,1,2},{25,0,5,0,9,-1,1,2},{25,0,9,0,9,-1,1,2},{25,0,8,0,9,-1,1,2},{25,0,5,0,9,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2}}, - {{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2}}, - {{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2}}, - {{25,0,5,0,0,-1,1,2},{25,0,9,0,9,-1,1,2},{25,0,8,0,9,-1,1,2},{25,0,5,0,9,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2}}, - {{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2}}, - {{25,0,9,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2}}, - {{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,5,0,2,-1,1,2}}, - {{25,0,5,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,5,0,2,-1,1,2}}, - {{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,4,-1,1,2}}, - {{25,0,5,0,2,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,2,-1,1,2}}, - {{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2}}, - {{25,0,5,0,2,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2}}, - {{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,7,0,2,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,5,0,3,-1,1,2}}, - {{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2}}, - {{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{0,0,6,10,3,-1,1,2},{0,0,6,10,3,-1,1,2},{0,0,6,0,0,-1,1,2},{0,0,6,0,0,-1,1,2},{0,0,6,0,3,-1,1,2},{0,0,6,0,3,-1,1,2},{0,0,6,0,3,-1,1,2}}, - {{0,0,6,0,3,-1,1,2},{0,0,6,0,3,-1,1,2},{0,0,24,10,8,-1,1,2},{0,0,24,10,8,-1,1,2},{0,0,24,10,8,-1,1,2},{0,0,24,10,8,-1,1,2},{0,0,6,10,3,-1,1,2},{0,0,6,10,3,-1,1,1},{0,0,6,10,3,-1,1,5},{0,0,6,10,3,-1,1,1},{0,0,6,10,3,-1,1,1},{0,0,6,10,3,-1,1,1},{0,0,6,10,3,-1,1,5},{0,0,6,10,3,-1,1,1},{0,0,6,10,3,-1,1,2},{0,0,6,10,3,-1,1,2}}, - {{0,0,6,0,3,-1,1,1},{0,0,6,0,3,-1,1,2},{0,0,24,10,8,-1,1,2},{0,0,24,10,8,-1,1,2},{0,0,24,10,8,-1,1,2},{0,0,24,10,8,-1,1,2},{0,0,24,10,8,-1,1,2},{0,0,24,10,8,-1,1,2},{0,0,24,10,9,-1,1,1},{0,0,24,10,9,-1,1,1},{0,0,24,10,9,-1,1,1},{0,0,24,10,9,-1,1,1},{0,0,24,10,9,-1,1,2},{0,0,24,10,9,-1,1,1},{0,0,24,10,8,-1,1,2},{0,0,24,10,8,-1,1,5}}, - {{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{0,0,24,10,8,-1,1,2},{0,0,24,10,8,-1,1,2},{0,0,24,10,8,-1,1,2},{0,0,24,10,8,-1,1,2},{0,0,24,10,8,-1,1,2},{5,0,24,10,8,-1,0,2},{5,0,24,10,8,-1,0,2},{0,0,6,10,0,-1,1,2},{0,0,24,10,8,-1,1,2},{0,0,6,0,3,-1,1,2},{0,0,24,10,8,-1,1,2}}, - {{0,0,24,10,8,-1,1,2},{0,0,24,10,8,-1,1,2},{0,0,24,10,8,-1,1,2},{0,0,24,10,8,-1,1,2},{0,0,24,10,8,-1,1,2},{0,0,24,10,8,-1,1,2},{0,0,24,10,8,-1,1,2},{0,0,24,10,8,-1,1,2},{0,0,24,10,8,-1,1,2},{0,0,24,10,8,-1,1,2},{0,0,24,10,8,-1,1,2},{0,0,24,10,8,-1,1,2},{0,0,24,10,8,-1,1,2},{0,0,24,10,8,-1,1,2},{0,0,24,10,8,-1,1,2},{0,0,24,10,8,-1,1,2}}, - {{1,0,12,17,0,-1,1,9},{1,0,12,17,0,-1,1,9},{1,0,12,17,0,-1,1,9},{1,0,12,17,0,-1,1,9},{1,0,12,17,0,-1,1,9},{1,0,12,17,2,-1,1,9},{1,0,12,17,0,-1,1,9},{1,0,12,17,0,-1,1,9},{1,0,12,17,0,-1,1,9},{1,0,12,17,0,-1,1,9},{1,0,12,17,0,-1,1,9},{1,0,12,17,0,-1,1,9},{1,0,12,17,0,-1,1,9},{1,0,12,17,2,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,0,-1,1,9}}, - {{1,0,12,17,0,-1,1,9},{1,0,12,17,0,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,0,-1,1,9},{1,0,12,17,0,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,2,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,0,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9}}, - {{1,0,12,17,3,-1,1,9},{1,0,12,17,2,-1,1,9},{1,0,12,17,2,-1,1,9},{1,0,12,17,0,-1,1,9},{1,0,12,17,0,-1,1,9},{1,0,12,17,0,-1,1,9},{1,0,12,17,0,-1,1,9},{1,0,12,17,0,-1,1,9},{1,0,12,17,0,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,0,-1,1,9},{1,0,12,17,0,-1,1,9},{1,0,12,17,3,-1,1,9}}, - {{1,0,12,17,0,-1,1,9},{1,0,12,17,0,-1,1,9},{1,0,12,17,2,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,2,-1,1,9},{1,0,12,17,0,-1,1,9},{1,0,12,17,2,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,0,-1,1,9},{1,0,12,17,0,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9}}, - {{1,0,12,17,9,-1,1,9},{1,0,12,17,9,-1,1,9},{1,0,12,17,0,-1,1,9},{1,0,12,17,9,-1,1,9},{1,0,12,17,9,-1,1,9},{1,0,12,17,0,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,10,-1,1,12}}, - {{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,2,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,12},{1,0,12,17,3,-1,1,12},{1,0,12,17,3,-1,1,12},{1,0,12,17,3,-1,1,12}}, - {{1,0,12,17,3,-1,1,12},{1,0,12,17,3,-1,1,12},{1,0,12,17,3,-1,1,12},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9}}, - {{14,0,9,0,4,-1,1,2},{14,0,5,0,4,-1,1,2},{14,0,9,0,4,-1,1,2},{14,0,5,0,4,-1,1,2},{0,0,6,10,9,-1,1,2},{14,0,24,10,1,-1,1,2},{14,0,9,0,4,-1,1,2},{14,0,5,0,4,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{14,0,6,0,9,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{0,0,21,10,9,-1,1,16},{14,0,9,0,4,-1,1,2}}, - {{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{14,0,24,10,9,-1,1,2},{0,0,24,10,9,-1,1,2},{14,0,9,0,0,-1,1,2},{0,0,21,10,9,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{14,0,9,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2}}, - {{14,0,5,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2}}, - {{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2}}, - {{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2}}, - {{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,9,0,3,-1,1,2}}, - {{14,0,5,0,9,-1,1,2},{14,0,5,0,9,-1,1,2},{14,0,9,0,9,-1,1,2},{14,0,9,0,9,-1,1,2},{14,0,9,0,9,-1,1,2},{14,0,5,0,9,-1,1,2},{14,0,5,0,9,-1,1,2},{14,0,5,0,3,-1,1,2},{14,0,9,0,4,-1,1,2},{14,0,5,0,4,-1,1,2},{14,0,9,0,4,-1,1,2},{14,0,5,0,4,-1,1,2},{14,0,9,0,4,-1,1,2},{14,0,5,0,4,-1,1,2},{14,0,9,0,4,-1,1,2},{14,0,5,0,4,-1,1,2}}, - {{14,0,9,0,4,-1,1,2},{14,0,5,0,4,-1,1,2},{7,0,9,0,7,-1,1,2},{7,0,5,0,7,-1,1,2},{7,0,9,0,7,-1,1,2},{7,0,5,0,7,-1,1,2},{7,0,9,0,7,-1,1,2},{7,0,5,0,7,-1,1,2},{7,0,9,0,7,-1,1,2},{7,0,5,0,7,-1,1,2},{7,0,9,0,7,-1,1,2},{7,0,5,0,7,-1,1,2},{7,0,9,0,7,-1,1,2},{7,0,5,0,7,-1,1,2},{7,0,9,0,7,-1,1,2},{7,0,5,0,7,-1,1,2}}, - {{14,0,5,0,9,-1,1,2},{14,0,5,0,9,-1,1,2},{14,0,5,0,9,-1,1,2},{14,0,5,0,4,-1,1,2},{14,0,9,0,9,-1,1,2},{14,0,5,0,9,-1,1,2},{14,0,25,10,8,-1,1,2},{14,0,9,0,4,-1,1,2},{14,0,5,0,4,-1,1,2},{14,0,9,0,9,-1,1,2},{14,0,9,0,4,-1,1,2},{14,0,5,0,4,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2}}, - {{8,0,9,0,0,-1,1,2},{8,0,9,0,0,-1,1,2},{8,0,9,0,0,-1,1,2},{8,0,9,0,0,-1,1,2},{8,0,9,0,0,-1,1,2},{8,0,9,0,0,-1,1,2},{8,0,9,0,0,-1,1,2},{8,0,9,0,0,-1,1,2},{8,0,9,0,0,-1,1,2},{8,0,9,0,0,-1,1,2},{8,0,9,0,0,-1,1,2},{8,0,9,0,0,-1,1,2},{8,0,9,0,0,-1,1,2},{8,0,9,0,0,-1,1,2},{8,0,9,0,0,-1,1,2},{8,0,9,0,0,-1,1,2}}, - {{8,0,5,0,0,-1,1,2},{8,0,5,0,0,-1,1,2},{8,0,5,0,0,-1,1,2},{8,0,5,0,0,-1,1,2},{8,0,5,0,0,-1,1,2},{8,0,5,0,0,-1,1,2},{8,0,5,0,0,-1,1,2},{8,0,5,0,0,-1,1,2},{8,0,5,0,0,-1,1,2},{8,0,5,0,0,-1,1,2},{8,0,5,0,0,-1,1,2},{8,0,5,0,0,-1,1,2},{8,0,5,0,0,-1,1,2},{8,0,5,0,0,-1,1,2},{8,0,5,0,0,-1,1,2},{8,0,5,0,0,-1,1,2}}, - {{8,0,9,0,4,-1,1,2},{8,0,5,0,4,-1,1,2},{8,0,9,0,4,-1,1,2},{8,0,5,0,4,-1,1,2},{8,0,9,0,4,-1,1,2},{8,0,5,0,4,-1,1,2},{8,0,9,0,4,-1,1,2},{8,0,5,0,4,-1,1,2},{8,0,9,0,4,-1,1,2},{8,0,5,0,4,-1,1,2},{8,0,9,0,4,-1,1,2},{8,0,5,0,4,-1,1,2},{8,0,9,0,4,-1,1,2},{8,0,5,0,4,-1,1,2},{8,0,9,0,4,-1,1,2},{8,0,5,0,4,-1,1,2}}, - {{8,0,9,0,4,-1,1,2},{8,0,5,0,4,-1,1,2},{8,0,26,0,8,-1,1,2},{8,0,12,17,4,-1,1,9},{8,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{8,0,12,17,4,-1,1,9},{8,0,11,17,8,-1,1,9},{8,0,11,17,8,-1,1,9},{8,0,9,0,0,-1,1,2},{8,0,5,0,0,-1,1,2},{8,0,9,0,0,-1,1,2},{8,0,5,0,0,-1,1,2},{8,0,9,0,0,-1,1,2},{8,0,5,0,0,-1,1,2}}, - {{8,0,9,0,0,-1,1,2},{8,0,5,0,0,-1,1,2},{8,0,9,0,0,-1,1,2},{8,0,5,0,0,-1,1,2},{8,0,9,0,0,-1,1,2},{8,0,5,0,0,-1,1,2},{8,0,9,0,0,-1,1,2},{8,0,5,0,0,-1,1,2},{8,0,9,0,0,-1,1,2},{8,0,5,0,0,-1,1,2},{8,0,9,0,0,-1,1,2},{8,0,5,0,0,-1,1,2},{8,0,9,0,0,-1,1,2},{8,0,5,0,0,-1,1,2},{8,0,9,0,0,-1,1,2},{8,0,5,0,0,-1,1,2}}, - {{8,0,9,0,0,-1,1,2},{8,0,9,0,0,-1,1,2},{8,0,5,0,0,-1,1,2},{8,0,9,0,0,-1,1,2},{8,0,5,0,0,-1,1,2},{8,0,9,0,0,-1,1,2},{8,0,5,0,0,-1,1,2},{8,0,9,0,0,-1,1,2},{8,0,5,0,0,-1,1,2},{8,0,9,0,0,-1,1,2},{8,0,5,0,0,-1,1,2},{8,0,9,0,0,-1,1,2},{8,0,5,0,0,-1,1,2},{8,0,9,0,0,-1,1,2},{8,0,5,0,0,-1,1,2},{8,0,5,0,0,-1,1,2}}, - {{8,0,9,0,0,-1,1,2},{8,0,5,0,0,-1,1,2},{8,0,9,0,0,-1,1,2},{8,0,5,0,0,-1,1,2},{8,0,9,0,0,-1,1,2},{8,0,5,0,0,-1,1,2},{8,0,9,0,0,-1,1,2},{8,0,5,0,0,-1,1,2},{8,0,9,0,0,-1,1,2},{8,0,5,0,0,-1,1,2},{8,0,9,0,4,-1,1,2},{8,0,5,0,4,-1,1,2},{8,0,9,0,4,-1,1,2},{8,0,5,0,4,-1,1,2},{8,0,9,0,0,-1,1,2},{8,0,5,0,0,-1,1,2}}, - {{103,0,2,0,12,-1,1,0},{3,0,9,0,0,-1,1,2},{3,0,9,0,0,-1,1,2},{3,0,9,0,0,-1,1,2},{3,0,9,0,0,-1,1,2},{3,0,9,0,0,-1,1,2},{3,0,9,0,0,-1,1,2},{3,0,9,0,0,-1,1,2},{3,0,9,0,0,-1,1,2},{3,0,9,0,0,-1,1,2},{3,0,9,0,0,-1,1,2},{3,0,9,0,0,-1,1,2},{3,0,9,0,0,-1,1,2},{3,0,9,0,0,-1,1,2},{3,0,9,0,0,-1,1,2},{3,0,9,0,0,-1,1,2}}, - {{3,0,9,0,0,-1,1,2},{3,0,9,0,0,-1,1,2},{3,0,9,0,0,-1,1,2},{3,0,9,0,0,-1,1,2},{3,0,9,0,0,-1,1,2},{3,0,9,0,0,-1,1,2},{3,0,9,0,0,-1,1,2},{3,0,9,0,0,-1,1,2},{3,0,9,0,0,-1,1,2},{3,0,9,0,0,-1,1,2},{3,0,9,0,0,-1,1,2},{3,0,9,0,0,-1,1,2},{3,0,9,0,0,-1,1,2},{3,0,9,0,0,-1,1,2},{3,0,9,0,0,-1,1,2},{3,0,9,0,0,-1,1,2}}, - {{3,0,9,0,0,-1,1,2},{3,0,9,0,0,-1,1,2},{3,0,9,0,0,-1,1,2},{3,0,9,0,0,-1,1,2},{3,0,9,0,0,-1,1,2},{3,0,9,0,0,-1,1,2},{3,0,9,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{3,0,6,0,0,-1,1,2},{3,0,21,0,8,-1,1,2},{3,0,21,0,8,-1,1,2},{3,0,21,0,8,-1,1,2},{3,0,21,0,8,-1,1,2},{3,0,21,0,8,-1,1,2},{3,0,21,0,8,-1,1,2}}, - {{103,0,2,0,12,-1,1,0},{3,0,5,0,0,-1,1,2},{3,0,5,0,0,-1,1,2},{3,0,5,0,0,-1,1,2},{3,0,5,0,0,-1,1,2},{3,0,5,0,0,-1,1,2},{3,0,5,0,0,-1,1,2},{3,0,5,0,0,-1,1,2},{3,0,5,0,0,-1,1,2},{3,0,5,0,0,-1,1,2},{3,0,5,0,0,-1,1,2},{3,0,5,0,0,-1,1,2},{3,0,5,0,0,-1,1,2},{3,0,5,0,0,-1,1,2},{3,0,5,0,0,-1,1,2},{3,0,5,0,0,-1,1,2}}, - {{3,0,5,0,0,-1,1,2},{3,0,5,0,0,-1,1,2},{3,0,5,0,0,-1,1,2},{3,0,5,0,0,-1,1,2},{3,0,5,0,0,-1,1,2},{3,0,5,0,0,-1,1,2},{3,0,5,0,0,-1,1,2},{3,0,5,0,0,-1,1,2},{3,0,5,0,0,-1,1,2},{3,0,5,0,0,-1,1,2},{3,0,5,0,0,-1,1,2},{3,0,5,0,0,-1,1,2},{3,0,5,0,0,-1,1,2},{3,0,5,0,0,-1,1,2},{3,0,5,0,0,-1,1,2},{3,0,5,0,0,-1,1,2}}, - {{3,0,5,0,0,-1,1,2},{3,0,5,0,0,-1,1,2},{3,0,5,0,0,-1,1,2},{3,0,5,0,0,-1,1,2},{3,0,5,0,0,-1,1,2},{3,0,5,0,0,-1,1,2},{3,0,5,0,0,-1,1,2},{3,0,5,0,9,-1,1,2},{103,0,2,0,12,-1,1,0},{0,0,21,0,8,-1,1,16},{3,0,17,10,1,-1,1,4},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{3,0,26,10,8,-1,1,2},{3,0,26,10,8,-1,1,2},{3,0,23,4,8,-1,1,22}}, - {{103,0,2,1,12,-1,1,0},{19,0,12,17,2,-1,1,9},{19,0,12,17,2,-1,1,9},{19,0,12,17,2,-1,1,9},{19,0,12,17,2,-1,1,9},{19,0,12,17,2,-1,1,9},{19,0,12,17,2,-1,1,9},{19,0,12,17,2,-1,1,9},{19,0,12,17,2,-1,1,9},{19,0,12,17,2,-1,1,9},{19,0,12,17,2,-1,1,9},{19,0,12,17,2,-1,1,9},{19,0,12,17,2,-1,1,9},{19,0,12,17,2,-1,1,9},{19,0,12,17,2,-1,1,9},{19,0,12,17,2,-1,1,9}}, - {{19,0,12,17,2,-1,1,9},{19,0,12,17,2,-1,1,9},{19,0,12,17,4,-1,1,9},{19,0,12,17,2,-1,1,9},{19,0,12,17,2,-1,1,9},{19,0,12,17,2,-1,1,9},{19,0,12,17,2,-1,1,9},{19,0,12,17,2,-1,1,9},{19,0,12,17,2,-1,1,9},{19,0,12,17,2,-1,1,9},{19,0,12,17,2,-1,1,9},{19,0,12,17,2,-1,1,9},{19,0,12,17,2,-1,1,9},{19,0,12,17,2,-1,1,9},{19,0,12,17,2,-1,1,9},{19,0,12,17,2,-1,1,9}}, - {{19,0,12,17,2,-1,1,9},{19,0,12,17,2,-1,1,9},{19,0,12,17,2,-1,1,9},{19,0,12,17,2,-1,1,9},{19,0,12,17,0,-1,1,9},{19,0,12,17,2,-1,1,9},{19,0,12,17,2,-1,1,9},{19,0,12,17,2,-1,1,9},{19,0,12,17,2,-1,1,9},{19,0,12,17,2,-1,1,9},{19,0,12,17,2,-1,1,9},{19,0,12,17,2,-1,1,9},{19,0,12,17,2,-1,1,9},{19,0,12,17,2,-1,1,9},{19,0,17,1,8,-1,1,4},{19,0,12,17,2,-1,1,9}}, - {{19,0,21,1,8,-1,1,2},{19,0,12,17,2,-1,1,9},{19,0,12,17,2,-1,1,9},{19,0,21,1,8,-1,1,2},{19,0,12,17,2,-1,1,9},{19,0,12,17,4,-1,1,9},{19,0,21,1,8,-1,1,11},{19,0,12,17,4,-1,1,9},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0}}, - {{19,0,7,1,0,-1,1,38},{19,0,7,1,0,-1,1,38},{19,0,7,1,0,-1,1,38},{19,0,7,1,0,-1,1,38},{19,0,7,1,0,-1,1,38},{19,0,7,1,0,-1,1,38},{19,0,7,1,0,-1,1,38},{19,0,7,1,0,-1,1,38},{19,0,7,1,0,-1,1,38},{19,0,7,1,0,-1,1,38},{19,0,7,1,0,-1,1,38},{19,0,7,1,0,-1,1,38},{19,0,7,1,0,-1,1,38},{19,0,7,1,0,-1,1,38},{19,0,7,1,0,-1,1,38},{19,0,7,1,0,-1,1,38}}, - {{19,0,7,1,0,-1,1,38},{19,0,7,1,0,-1,1,38},{19,0,7,1,0,-1,1,38},{19,0,7,1,0,-1,1,38},{19,0,7,1,0,-1,1,38},{19,0,7,1,0,-1,1,38},{19,0,7,1,0,-1,1,38},{19,0,7,1,0,-1,1,38},{19,0,7,1,0,-1,1,38},{19,0,7,1,0,-1,1,38},{19,0,7,1,0,-1,1,38},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0}}, - {{19,0,7,1,0,-1,1,38},{19,0,7,1,0,-1,1,38},{19,0,7,1,0,-1,1,38},{19,0,21,1,1,-1,1,2},{19,0,21,1,1,-1,1,2},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0}}, - {{2,0,1,5,8,-1,1,2},{2,0,1,5,8,-1,1,2},{2,0,1,5,8,-1,1,2},{2,0,1,5,8,-1,1,2},{2,0,1,5,8,-1,1,2},{0,0,1,5,8,-1,1,2},{2,0,25,10,8,-1,1,2},{2,0,25,10,8,-1,1,2},{2,0,25,13,8,-1,1,2},{2,0,21,4,8,-1,1,21},{2,0,21,4,8,-1,1,21},{2,0,23,13,8,-1,1,21},{0,0,21,6,8,-1,1,16},{2,0,21,13,8,-1,1,16},{2,0,26,10,8,-1,1,2},{2,0,26,10,8,-1,1,2}}, - {{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{0,0,21,13,8,-1,1,11},{0,0,1,13,10,-1,1,9},{103,0,2,13,12,-1,1,0},{2,0,21,13,8,-1,1,11},{0,0,21,13,8,-1,1,11}}, - {{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2}}, - {{0,0,6,13,7,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{1,0,12,17,0,-1,1,9},{1,0,12,17,0,-1,1,9},{1,0,12,17,0,-1,1,9},{1,0,12,17,0,-1,1,9},{1,0,12,17,0,-1,1,9}}, - {{1,0,12,17,0,-1,1,9},{1,0,12,17,0,-1,1,9},{1,0,12,17,0,-1,1,9},{1,0,12,17,0,-1,1,9},{1,0,12,17,0,-1,1,9},{1,0,12,17,0,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9}}, - {{2,0,13,5,0,0,1,19},{2,0,13,5,0,1,1,19},{2,0,13,5,0,2,1,19},{2,0,13,5,0,3,1,19},{2,0,13,5,0,4,1,19},{2,0,13,5,0,5,1,19},{2,0,13,5,0,6,1,19},{2,0,13,5,0,7,1,19},{2,0,13,5,0,8,1,19},{2,0,13,5,0,9,1,19},{2,0,21,4,8,-1,1,21},{2,0,21,5,8,-1,1,19},{2,0,21,5,8,-1,1,19},{2,0,21,13,8,-1,1,2},{2,0,7,13,4,-1,1,2},{2,0,7,13,4,-1,1,2}}, - {{1,0,12,17,0,-1,1,9},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,11,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2}}, - {{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,4,-1,1,2},{2,0,7,13,0,-1,1,2}}, - {{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,21,13,8,-1,1,11},{2,0,7,13,0,-1,1,2},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{0,0,1,5,8,-1,1,2},{2,0,26,10,8,-1,1,2},{2,0,12,17,2,-1,1,9}}, - {{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,6,13,0,-1,1,2},{2,0,6,13,0,-1,1,2},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,26,10,8,-1,1,2},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2}}, - {{2,0,13,2,0,0,1,19},{2,0,13,2,0,1,1,19},{2,0,13,2,0,2,1,19},{2,0,13,2,0,3,1,19},{2,0,13,2,0,4,1,19},{2,0,13,2,0,5,1,19},{2,0,13,2,0,6,1,19},{2,0,13,2,0,7,1,19},{2,0,13,2,0,8,1,19},{2,0,13,2,0,9,1,19},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,26,13,1,-1,1,2},{2,0,26,13,1,-1,1,2},{2,0,7,13,0,-1,1,2}}, - {{34,0,21,13,8,-1,1,2},{34,0,21,13,8,-1,1,2},{34,0,21,13,8,-1,1,2},{34,0,21,13,8,-1,1,2},{34,0,21,13,8,-1,1,2},{34,0,21,13,8,-1,1,2},{34,0,21,13,8,-1,1,2},{34,0,21,13,8,-1,1,2},{34,0,21,13,8,-1,1,2},{34,0,21,13,8,-1,1,2},{34,0,21,13,8,-1,1,2},{34,0,21,13,8,-1,1,2},{34,0,21,13,8,-1,1,2},{34,0,21,13,8,-1,1,2},{103,0,2,13,12,-1,1,0},{34,0,1,13,8,-1,1,2}}, - {{34,0,7,13,6,-1,1,2},{34,0,12,17,6,-1,1,9},{34,0,7,13,6,-1,1,2},{34,0,7,13,6,-1,1,2},{34,0,7,13,6,-1,1,2},{34,0,7,13,6,-1,1,2},{34,0,7,13,6,-1,1,2},{34,0,7,13,6,-1,1,2},{34,0,7,13,6,-1,1,2},{34,0,7,13,6,-1,1,2},{34,0,7,13,6,-1,1,2},{34,0,7,13,6,-1,1,2},{34,0,7,13,6,-1,1,2},{34,0,7,13,6,-1,1,2},{34,0,7,13,6,-1,1,2},{34,0,7,13,6,-1,1,2}}, - {{34,0,7,13,6,-1,1,2},{34,0,7,13,6,-1,1,2},{34,0,7,13,6,-1,1,2},{34,0,7,13,6,-1,1,2},{34,0,7,13,6,-1,1,2},{34,0,7,13,6,-1,1,2},{34,0,7,13,6,-1,1,2},{34,0,7,13,6,-1,1,2},{34,0,7,13,6,-1,1,2},{34,0,7,13,6,-1,1,2},{34,0,7,13,6,-1,1,2},{34,0,7,13,6,-1,1,2},{34,0,7,13,6,-1,1,2},{34,0,7,13,6,-1,1,2},{34,0,7,13,6,-1,1,2},{34,0,7,13,6,-1,1,2}}, - {{34,0,12,17,6,-1,1,9},{34,0,12,17,6,-1,1,9},{34,0,12,17,6,-1,1,9},{34,0,12,17,6,-1,1,9},{34,0,12,17,6,-1,1,9},{34,0,12,17,6,-1,1,9},{34,0,12,17,6,-1,1,9},{34,0,12,17,6,-1,1,9},{34,0,12,17,6,-1,1,9},{34,0,12,17,6,-1,1,9},{34,0,12,17,6,-1,1,9},{34,0,12,17,6,-1,1,9},{34,0,12,17,6,-1,1,9},{34,0,12,17,6,-1,1,9},{34,0,12,17,6,-1,1,9},{34,0,12,17,6,-1,1,9}}, - {{34,0,12,17,6,-1,1,9},{34,0,12,17,6,-1,1,9},{34,0,12,17,6,-1,1,9},{34,0,12,17,6,-1,1,9},{34,0,12,17,6,-1,1,9},{34,0,12,17,6,-1,1,9},{34,0,12,17,6,-1,1,9},{34,0,12,17,6,-1,1,9},{34,0,12,17,6,-1,1,9},{34,0,12,17,6,-1,1,9},{34,0,12,17,6,-1,1,9},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{34,0,7,13,6,-1,1,2},{34,0,7,13,6,-1,1,2},{34,0,7,13,6,-1,1,2}}, - {{37,0,7,13,0,-1,1,2},{37,0,7,13,0,-1,1,2},{37,0,7,13,0,-1,1,2},{37,0,7,13,0,-1,1,2},{37,0,7,13,0,-1,1,2},{37,0,7,13,0,-1,1,2},{37,0,7,13,0,-1,1,2},{37,0,7,13,0,-1,1,2},{37,0,7,13,0,-1,1,2},{37,0,7,13,0,-1,1,2},{37,0,7,13,0,-1,1,2},{37,0,7,13,0,-1,1,2},{37,0,7,13,0,-1,1,2},{37,0,7,13,0,-1,1,2},{37,0,7,13,0,-1,1,2},{37,0,7,13,0,-1,1,2}}, - {{37,0,7,13,0,-1,1,2},{37,0,7,13,0,-1,1,2},{37,0,7,13,0,-1,1,2},{37,0,7,13,0,-1,1,2},{37,0,7,13,0,-1,1,2},{37,0,7,13,0,-1,1,2},{37,0,12,17,0,-1,1,9},{37,0,12,17,0,-1,1,9},{37,0,12,17,0,-1,1,9},{37,0,12,17,0,-1,1,9},{37,0,12,17,0,-1,1,9},{37,0,12,17,0,-1,1,9},{37,0,12,17,0,-1,1,9},{37,0,12,17,0,-1,1,9},{37,0,12,17,0,-1,1,9},{37,0,12,17,0,-1,1,9}}, - {{37,0,12,17,0,-1,1,9},{37,0,7,13,0,-1,1,2},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0}}, - {{87,0,13,1,6,0,1,19},{87,0,13,1,6,1,1,19},{87,0,13,1,6,2,1,19},{87,0,13,1,6,3,1,19},{87,0,13,1,6,4,1,19},{87,0,13,1,6,5,1,19},{87,0,13,1,6,6,1,19},{87,0,13,1,6,7,1,19},{87,0,13,1,6,8,1,19},{87,0,13,1,6,9,1,19},{87,0,7,1,6,-1,1,2},{87,0,7,1,6,-1,1,2},{87,0,7,1,6,-1,1,2},{87,0,7,1,6,-1,1,2},{87,0,7,1,6,-1,1,2},{87,0,7,1,6,-1,1,2}}, - {{87,0,7,1,6,-1,1,2},{87,0,7,1,6,-1,1,2},{87,0,7,1,6,-1,1,2},{87,0,7,1,6,-1,1,2},{87,0,7,1,6,-1,1,2},{87,0,7,1,6,-1,1,2},{87,0,7,1,6,-1,1,2},{87,0,7,1,6,-1,1,2},{87,0,7,1,6,-1,1,2},{87,0,7,1,6,-1,1,2},{87,0,7,1,6,-1,1,2},{87,0,7,1,6,-1,1,2},{87,0,7,1,6,-1,1,2},{87,0,7,1,6,-1,1,2},{87,0,7,1,6,-1,1,2},{87,0,7,1,6,-1,1,2}}, - {{87,0,7,1,6,-1,1,2},{87,0,7,1,6,-1,1,2},{87,0,7,1,6,-1,1,2},{87,0,7,1,6,-1,1,2},{87,0,7,1,6,-1,1,2},{87,0,7,1,6,-1,1,2},{87,0,7,1,6,-1,1,2},{87,0,7,1,6,-1,1,2},{87,0,7,1,6,-1,1,2},{87,0,7,1,6,-1,1,2},{87,0,7,1,6,-1,1,2},{87,0,12,17,6,-1,1,9},{87,0,12,17,6,-1,1,9},{87,0,12,17,6,-1,1,9},{87,0,12,17,6,-1,1,9},{87,0,12,17,6,-1,1,9}}, - {{87,0,12,17,6,-1,1,9},{87,0,12,17,6,-1,1,9},{87,0,12,17,6,-1,1,9},{87,0,12,17,6,-1,1,9},{87,0,6,1,6,-1,1,2},{87,0,6,1,6,-1,1,2},{87,0,26,10,8,-1,1,2},{87,0,21,10,8,-1,1,2},{87,0,21,10,8,-1,1,16},{87,0,21,10,8,-1,1,11},{87,0,6,1,7,-1,1,2},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0}}, - {{126,0,7,1,7,-1,1,2},{126,0,7,1,7,-1,1,2},{126,0,7,1,7,-1,1,2},{126,0,7,1,7,-1,1,2},{126,0,7,1,7,-1,1,2},{126,0,7,1,7,-1,1,2},{126,0,7,1,7,-1,1,2},{126,0,7,1,7,-1,1,2},{126,0,7,1,7,-1,1,2},{126,0,7,1,7,-1,1,2},{126,0,7,1,7,-1,1,2},{126,0,7,1,7,-1,1,2},{126,0,7,1,7,-1,1,2},{126,0,7,1,7,-1,1,2},{126,0,7,1,7,-1,1,2},{126,0,7,1,7,-1,1,2}}, - {{126,0,7,1,7,-1,1,2},{126,0,7,1,7,-1,1,2},{126,0,7,1,7,-1,1,2},{126,0,7,1,7,-1,1,2},{126,0,7,1,7,-1,1,2},{126,0,7,1,7,-1,1,2},{126,0,12,17,7,-1,1,9},{126,0,12,17,7,-1,1,9},{126,0,12,17,7,-1,1,9},{126,0,12,17,7,-1,1,9},{126,0,6,1,7,-1,1,2},{126,0,12,17,7,-1,1,9},{126,0,12,17,7,-1,1,9},{126,0,12,17,7,-1,1,9},{126,0,12,17,7,-1,1,9},{126,0,12,17,7,-1,1,9}}, - {{126,0,12,17,7,-1,1,9},{126,0,12,17,7,-1,1,9},{126,0,12,17,7,-1,1,9},{126,0,12,17,7,-1,1,9},{126,0,6,1,7,-1,1,2},{126,0,12,17,7,-1,1,9},{126,0,12,17,7,-1,1,9},{126,0,12,17,7,-1,1,9},{126,0,6,1,7,-1,1,2},{126,0,12,17,7,-1,1,9},{126,0,12,17,7,-1,1,9},{126,0,12,17,7,-1,1,9},{126,0,12,17,7,-1,1,9},{126,0,12,17,7,-1,1,9},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0}}, - {{126,0,21,1,8,-1,1,2},{126,0,21,1,8,-1,1,2},{126,0,21,1,8,-1,1,2},{126,0,21,1,8,-1,1,2},{126,0,21,1,8,-1,1,2},{126,0,21,1,8,-1,1,2},{126,0,21,1,8,-1,1,2},{126,0,21,1,8,-1,1,2},{126,0,21,1,8,-1,1,2},{126,0,21,1,8,-1,1,2},{126,0,21,1,8,-1,1,2},{126,0,21,1,8,-1,1,2},{126,0,21,1,8,-1,1,2},{126,0,21,1,8,-1,1,2},{126,0,21,1,8,-1,1,2},{103,0,2,1,12,-1,1,0}}, - {{84,0,7,1,6,-1,1,2},{84,0,7,1,6,-1,1,2},{84,0,7,1,6,-1,1,2},{84,0,7,1,6,-1,1,2},{84,0,7,1,6,-1,1,2},{84,0,7,1,6,-1,1,2},{84,0,7,1,6,-1,1,2},{84,0,7,1,6,-1,1,2},{84,0,7,1,6,-1,1,2},{84,0,7,1,6,-1,1,2},{84,0,7,1,6,-1,1,2},{84,0,7,1,6,-1,1,2},{84,0,7,1,6,-1,1,2},{84,0,7,1,6,-1,1,2},{84,0,7,1,6,-1,1,2},{84,0,7,1,6,-1,1,2}}, - {{84,0,7,1,6,-1,1,2},{84,0,7,1,6,-1,1,2},{84,0,7,1,6,-1,1,2},{84,0,7,1,6,-1,1,2},{84,0,7,1,6,-1,1,2},{84,0,7,1,6,-1,1,2},{84,0,7,1,6,-1,1,2},{84,0,7,1,6,-1,1,2},{84,0,7,1,6,-1,1,2},{84,0,12,17,6,-1,1,9},{84,0,12,17,6,-1,1,9},{84,0,12,17,6,-1,1,9},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{84,0,21,1,8,-1,1,2},{103,0,2,1,12,-1,1,0}}, - {{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0}}, - {{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,4,-1,1,2},{2,0,7,13,4,-1,1,2},{2,0,7,13,4,-1,1,2}}, - {{2,0,7,13,4,-1,1,2},{2,0,7,13,4,-1,1,2},{2,0,7,13,0,-1,1,2},{2,0,7,13,2,-1,1,2},{2,0,7,13,2,-1,1,2},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0}}, - {{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0}}, - {{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9}}, - {{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9},{2,0,12,17,2,-1,1,9}}, - {{10,0,12,17,2,-1,1,9},{10,0,12,17,0,-1,1,9},{10,0,12,17,0,-1,1,9},{10,0,10,0,0,-1,1,9},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2}}, - {{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2}}, - {{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,12,17,0,-1,1,9},{10,0,10,0,0,-1,1,9},{10,0,12,17,0,-1,1,9},{10,0,7,0,0,-1,1,2},{10,0,10,0,0,-1,1,9},{10,0,10,0,0,-1,1,9}}, - {{10,0,10,0,0,-1,1,9},{10,0,12,17,0,-1,1,9},{10,0,12,17,0,-1,1,9},{10,0,12,17,0,-1,1,9},{10,0,12,17,0,-1,1,9},{10,0,12,17,0,-1,1,9},{10,0,12,17,0,-1,1,9},{10,0,12,17,0,-1,1,9},{10,0,12,17,0,-1,1,9},{10,0,10,0,0,-1,1,9},{10,0,10,0,0,-1,1,9},{10,0,10,0,0,-1,1,9},{10,0,10,0,0,-1,1,9},{10,0,12,17,0,-1,1,9},{10,0,10,0,4,-1,1,9},{10,0,10,0,0,-1,1,9}}, - {{10,0,7,0,0,-1,1,2},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{10,0,12,17,3,-1,1,9},{10,0,12,17,3,-1,1,9},{10,0,12,17,2,-1,1,9},{10,0,12,17,0,-1,1,9},{10,0,12,17,0,-1,1,9},{10,0,7,0,9,-1,1,2},{10,0,7,0,9,-1,1,2},{10,0,7,0,9,-1,1,2},{10,0,7,0,9,-1,1,2},{10,0,7,0,9,-1,1,2},{10,0,7,0,9,-1,1,2},{10,0,7,0,9,-1,1,2},{10,0,7,0,9,-1,1,2}}, - {{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,12,17,0,-1,1,9},{10,0,12,17,0,-1,1,9},{0,0,21,0,8,-1,1,4},{0,0,21,0,8,-1,1,4},{10,0,13,0,0,0,1,19},{10,0,13,0,0,1,1,19},{10,0,13,0,0,2,1,19},{10,0,13,0,0,3,1,19},{10,0,13,0,0,4,1,19},{10,0,13,0,0,5,1,19},{10,0,13,0,0,6,1,19},{10,0,13,0,0,7,1,19},{10,0,13,0,0,8,1,19},{10,0,13,0,0,9,1,19}}, - {{10,0,21,0,8,-1,1,2},{10,0,6,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,4,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2},{10,0,7,0,0,-1,1,2}}, - {{4,0,7,0,4,-1,1,2},{4,0,12,17,0,-1,1,9},{4,0,10,0,0,-1,1,9},{4,0,10,0,0,-1,1,9},{103,0,2,0,12,-1,1,0},{4,0,7,0,0,-1,1,2},{4,0,7,0,0,-1,1,2},{4,0,7,0,0,-1,1,2},{4,0,7,0,0,-1,1,2},{4,0,7,0,0,-1,1,2},{4,0,7,0,0,-1,1,2},{4,0,7,0,0,-1,1,2},{4,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{4,0,7,0,0,-1,1,2}}, - {{4,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{4,0,7,0,0,-1,1,2},{4,0,7,0,0,-1,1,2},{4,0,7,0,0,-1,1,2},{4,0,7,0,0,-1,1,2},{4,0,7,0,0,-1,1,2},{4,0,7,0,0,-1,1,2},{4,0,7,0,0,-1,1,2},{4,0,7,0,0,-1,1,2},{4,0,7,0,0,-1,1,2},{4,0,7,0,0,-1,1,2},{4,0,7,0,0,-1,1,2},{4,0,7,0,0,-1,1,2},{4,0,7,0,0,-1,1,2}}, - {{4,0,7,0,0,-1,1,2},{4,0,7,0,0,-1,1,2},{4,0,7,0,0,-1,1,2},{4,0,7,0,0,-1,1,2},{4,0,7,0,0,-1,1,2},{4,0,7,0,0,-1,1,2},{4,0,7,0,0,-1,1,2},{4,0,7,0,0,-1,1,2},{4,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{4,0,7,0,0,-1,1,2},{4,0,7,0,0,-1,1,2},{4,0,7,0,0,-1,1,2},{4,0,7,0,0,-1,1,2},{4,0,7,0,0,-1,1,2},{4,0,7,0,0,-1,1,2}}, - {{4,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{4,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{4,0,7,0,0,-1,1,2},{4,0,7,0,0,-1,1,2},{4,0,7,0,0,-1,1,2},{4,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{4,0,12,17,0,-1,1,9},{4,0,7,0,0,-1,1,2},{4,0,10,0,0,-1,1,9},{4,0,10,0,0,-1,1,9}}, - {{4,0,10,0,0,-1,1,9},{4,0,12,17,0,-1,1,9},{4,0,12,17,0,-1,1,9},{4,0,12,17,0,-1,1,9},{4,0,12,17,0,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{4,0,10,0,0,-1,1,9},{4,0,10,0,0,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{4,0,10,0,0,-1,1,9},{4,0,10,0,0,-1,1,9},{4,0,12,17,0,-1,1,9},{4,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0}}, - {{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{4,0,10,0,0,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{4,0,7,0,9,-1,1,2},{4,0,7,0,9,-1,1,2},{103,0,2,0,12,-1,1,0},{4,0,7,0,9,-1,1,2}}, - {{4,0,7,0,0,-1,1,2},{4,0,7,0,0,-1,1,2},{4,0,12,17,0,-1,1,9},{4,0,12,17,0,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{4,0,13,0,0,0,1,19},{4,0,13,0,0,1,1,19},{4,0,13,0,0,2,1,19},{4,0,13,0,0,3,1,19},{4,0,13,0,0,4,1,19},{4,0,13,0,0,5,1,19},{4,0,13,0,0,6,1,19},{4,0,13,0,0,7,1,19},{4,0,13,0,0,8,1,19},{4,0,13,0,0,9,1,19}}, - {{4,0,7,0,0,-1,1,2},{4,0,7,0,0,-1,1,2},{4,0,23,4,8,-1,1,21},{4,0,23,4,8,-1,1,21},{4,0,15,0,8,-1,1,2},{4,0,15,0,8,-1,1,2},{4,0,15,0,8,-1,1,2},{4,0,15,0,8,-1,1,2},{4,0,15,0,8,-1,1,2},{4,0,15,0,8,-1,1,21},{4,0,26,0,8,-1,1,2},{4,0,23,4,8,-1,1,22},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{103,0,2,0,12,-1,1,0},{16,0,12,17,0,-1,1,9},{16,0,12,17,0,-1,1,9},{16,0,10,0,0,-1,1,9},{103,0,2,0,12,-1,1,0},{16,0,7,0,0,-1,1,2},{16,0,7,0,0,-1,1,2},{16,0,7,0,0,-1,1,2},{16,0,7,0,0,-1,1,2},{16,0,7,0,0,-1,1,2},{16,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{16,0,7,0,0,-1,1,2}}, - {{16,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{16,0,7,0,0,-1,1,2},{16,0,7,0,0,-1,1,2},{16,0,7,0,0,-1,1,2},{16,0,7,0,0,-1,1,2},{16,0,7,0,0,-1,1,2},{16,0,7,0,0,-1,1,2},{16,0,7,0,0,-1,1,2},{16,0,7,0,0,-1,1,2},{16,0,7,0,0,-1,1,2},{16,0,7,0,0,-1,1,2},{16,0,7,0,0,-1,1,2},{16,0,7,0,0,-1,1,2},{16,0,7,0,0,-1,1,2}}, - {{16,0,7,0,0,-1,1,2},{16,0,7,0,0,-1,1,2},{16,0,7,0,0,-1,1,2},{16,0,7,0,0,-1,1,2},{16,0,7,0,0,-1,1,2},{16,0,7,0,0,-1,1,2},{16,0,7,0,0,-1,1,2},{16,0,7,0,0,-1,1,2},{16,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{16,0,7,0,0,-1,1,2},{16,0,7,0,0,-1,1,2},{16,0,7,0,0,-1,1,2},{16,0,7,0,0,-1,1,2},{16,0,7,0,0,-1,1,2},{16,0,7,0,0,-1,1,2}}, - {{16,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{16,0,7,0,0,-1,1,2},{16,0,7,0,9,-1,1,2},{103,0,2,0,12,-1,1,0},{16,0,7,0,0,-1,1,2},{16,0,7,0,9,-1,1,2},{103,0,2,0,12,-1,1,0},{16,0,7,0,0,-1,1,2},{16,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{16,0,12,17,0,-1,1,9},{103,0,2,0,12,-1,1,0},{16,0,10,0,0,-1,1,9},{16,0,10,0,0,-1,1,9}}, - {{16,0,10,0,0,-1,1,9},{16,0,12,17,0,-1,1,9},{16,0,12,17,0,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{16,0,12,17,0,-1,1,9},{16,0,12,17,0,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{16,0,12,17,0,-1,1,9},{16,0,12,17,0,-1,1,9},{16,0,12,17,0,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{103,0,2,0,12,-1,1,0},{16,0,12,17,2,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{16,0,7,0,9,-1,1,2},{16,0,7,0,9,-1,1,2},{16,0,7,0,9,-1,1,2},{16,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{16,0,7,0,9,-1,1,2},{103,0,2,0,12,-1,1,0}}, - {{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{16,0,13,0,0,0,1,19},{16,0,13,0,0,1,1,19},{16,0,13,0,0,2,1,19},{16,0,13,0,0,3,1,19},{16,0,13,0,0,4,1,19},{16,0,13,0,0,5,1,19},{16,0,13,0,0,6,1,19},{16,0,13,0,0,7,1,19},{16,0,13,0,0,8,1,19},{16,0,13,0,0,9,1,19}}, - {{16,0,12,17,0,-1,1,9},{16,0,12,17,0,-1,1,9},{16,0,7,0,0,-1,1,2},{16,0,7,0,0,-1,1,2},{16,0,7,0,0,-1,1,2},{16,0,12,17,2,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{103,0,2,0,12,-1,1,0},{15,0,12,17,0,-1,1,9},{15,0,12,17,0,-1,1,9},{15,0,10,0,0,-1,1,9},{103,0,2,0,12,-1,1,0},{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{15,0,7,0,0,-1,1,2}}, - {{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2}}, - {{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2}}, - {{15,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{15,0,12,17,0,-1,1,9},{15,0,7,0,0,-1,1,2},{15,0,10,0,0,-1,1,9},{15,0,10,0,0,-1,1,9}}, - {{15,0,10,0,0,-1,1,9},{15,0,12,17,0,-1,1,9},{15,0,12,17,0,-1,1,9},{15,0,12,17,0,-1,1,9},{15,0,12,17,0,-1,1,9},{15,0,12,17,0,-1,1,9},{103,0,2,0,12,-1,1,0},{15,0,12,17,0,-1,1,9},{15,0,12,17,0,-1,1,9},{15,0,10,0,0,-1,1,9},{103,0,2,0,12,-1,1,0},{15,0,10,0,0,-1,1,9},{15,0,10,0,0,-1,1,9},{15,0,12,17,0,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{15,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{15,0,7,0,0,-1,1,2},{15,0,7,0,0,-1,1,2},{15,0,12,17,0,-1,1,9},{15,0,12,17,0,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{15,0,13,0,0,0,1,19},{15,0,13,0,0,1,1,19},{15,0,13,0,0,2,1,19},{15,0,13,0,0,3,1,19},{15,0,13,0,0,4,1,19},{15,0,13,0,0,5,1,19},{15,0,13,0,0,6,1,19},{15,0,13,0,0,7,1,19},{15,0,13,0,0,8,1,19},{15,0,13,0,0,9,1,19}}, - {{15,0,21,0,8,-1,1,2},{15,0,23,4,8,-1,1,22},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{15,0,7,0,2,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{103,0,2,0,12,-1,1,0},{31,0,12,17,0,-1,1,9},{31,0,10,0,0,-1,1,9},{31,0,10,0,0,-1,1,9},{103,0,2,0,12,-1,1,0},{31,0,7,0,0,-1,1,2},{31,0,7,0,0,-1,1,2},{31,0,7,0,0,-1,1,2},{31,0,7,0,0,-1,1,2},{31,0,7,0,0,-1,1,2},{31,0,7,0,0,-1,1,2},{31,0,7,0,0,-1,1,2},{31,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{31,0,7,0,0,-1,1,2}}, - {{31,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{31,0,7,0,0,-1,1,2},{31,0,7,0,0,-1,1,2},{31,0,7,0,0,-1,1,2},{31,0,7,0,0,-1,1,2},{31,0,7,0,0,-1,1,2},{31,0,7,0,0,-1,1,2},{31,0,7,0,0,-1,1,2},{31,0,7,0,0,-1,1,2},{31,0,7,0,0,-1,1,2},{31,0,7,0,0,-1,1,2},{31,0,7,0,0,-1,1,2},{31,0,7,0,0,-1,1,2},{31,0,7,0,0,-1,1,2}}, - {{31,0,7,0,0,-1,1,2},{31,0,7,0,0,-1,1,2},{31,0,7,0,0,-1,1,2},{31,0,7,0,0,-1,1,2},{31,0,7,0,0,-1,1,2},{31,0,7,0,0,-1,1,2},{31,0,7,0,0,-1,1,2},{31,0,7,0,0,-1,1,2},{31,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{31,0,7,0,0,-1,1,2},{31,0,7,0,0,-1,1,2},{31,0,7,0,0,-1,1,2},{31,0,7,0,0,-1,1,2},{31,0,7,0,0,-1,1,2},{31,0,7,0,0,-1,1,2}}, - {{31,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{31,0,7,0,0,-1,1,2},{31,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{31,0,7,0,0,-1,1,2},{31,0,7,0,0,-1,1,2},{31,0,7,0,0,-1,1,2},{31,0,7,0,0,-1,1,2},{31,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{31,0,12,17,0,-1,1,9},{31,0,7,0,0,-1,1,2},{31,0,10,0,0,-1,1,9},{31,0,12,17,0,-1,1,9}}, - {{31,0,10,0,0,-1,1,9},{31,0,12,17,0,-1,1,9},{31,0,12,17,0,-1,1,9},{31,0,12,17,0,-1,1,9},{31,0,12,17,2,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{31,0,10,0,0,-1,1,9},{31,0,10,0,0,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{31,0,10,0,0,-1,1,9},{31,0,10,0,0,-1,1,9},{31,0,12,17,0,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{31,0,12,17,0,-1,1,9},{31,0,10,0,0,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{31,0,7,0,9,-1,1,2},{31,0,7,0,9,-1,1,2},{103,0,2,0,12,-1,1,0},{31,0,7,0,0,-1,1,2}}, - {{31,0,7,0,0,-1,1,2},{31,0,7,0,0,-1,1,2},{31,0,12,17,2,-1,1,9},{31,0,12,17,2,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{31,0,13,0,0,0,1,19},{31,0,13,0,0,1,1,19},{31,0,13,0,0,2,1,19},{31,0,13,0,0,3,1,19},{31,0,13,0,0,4,1,19},{31,0,13,0,0,5,1,19},{31,0,13,0,0,6,1,19},{31,0,13,0,0,7,1,19},{31,0,13,0,0,8,1,19},{31,0,13,0,0,9,1,19}}, - {{31,0,26,0,8,-1,1,2},{31,0,7,0,0,-1,1,2},{31,0,15,0,8,-1,1,2},{31,0,15,0,8,-1,1,2},{31,0,15,0,8,-1,1,2},{31,0,15,0,8,-1,1,2},{31,0,15,0,8,-1,1,2},{31,0,15,0,8,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{35,0,12,17,0,-1,1,9},{35,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{35,0,7,0,0,-1,1,2},{35,0,7,0,0,-1,1,2},{35,0,7,0,0,-1,1,2},{35,0,7,0,0,-1,1,2},{35,0,7,0,0,-1,1,2},{35,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{35,0,7,0,0,-1,1,2},{35,0,7,0,0,-1,1,2}}, - {{35,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{35,0,7,0,0,-1,1,2},{35,0,7,0,0,-1,1,2},{35,0,7,0,0,-1,1,2},{35,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{35,0,7,0,0,-1,1,2},{35,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{35,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{35,0,7,0,0,-1,1,2},{35,0,7,0,0,-1,1,2}}, - {{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{35,0,7,0,0,-1,1,2},{35,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{35,0,7,0,0,-1,1,2},{35,0,7,0,0,-1,1,2},{35,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{35,0,7,0,0,-1,1,2},{35,0,7,0,0,-1,1,2}}, - {{35,0,7,0,0,-1,1,2},{35,0,7,0,0,-1,1,2},{35,0,7,0,0,-1,1,2},{35,0,7,0,0,-1,1,2},{35,0,7,0,0,-1,1,2},{35,0,7,0,0,-1,1,2},{35,0,7,0,0,-1,1,2},{35,0,7,0,0,-1,1,2},{35,0,7,0,0,-1,1,2},{35,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{35,0,10,0,0,-1,1,9},{35,0,10,0,0,-1,1,9}}, - {{35,0,12,17,0,-1,1,9},{35,0,10,0,0,-1,1,9},{35,0,10,0,0,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{35,0,10,0,0,-1,1,9},{35,0,10,0,0,-1,1,9},{35,0,10,0,0,-1,1,9},{103,0,2,0,12,-1,1,0},{35,0,10,0,0,-1,1,9},{35,0,10,0,0,-1,1,9},{35,0,10,0,0,-1,1,9},{35,0,12,17,0,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{35,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{35,0,10,0,0,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{35,0,13,0,0,0,1,19},{35,0,13,0,0,1,1,19},{35,0,13,0,0,2,1,19},{35,0,13,0,0,3,1,19},{35,0,13,0,0,4,1,19},{35,0,13,0,0,5,1,19},{35,0,13,0,0,6,1,19},{35,0,13,0,0,7,1,19},{35,0,13,0,0,8,1,19},{35,0,13,0,0,9,1,19}}, - {{35,0,15,0,8,-1,1,2},{35,0,15,0,8,-1,1,2},{35,0,15,0,8,-1,1,2},{35,0,26,10,8,-1,1,2},{35,0,26,10,8,-1,1,2},{35,0,26,10,8,-1,1,2},{35,0,26,10,8,-1,1,2},{35,0,26,10,8,-1,1,2},{35,0,26,10,8,-1,1,2},{35,0,23,4,8,-1,1,22},{35,0,26,10,8,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{36,0,12,17,4,-1,1,9},{36,0,10,0,0,-1,1,9},{36,0,10,0,0,-1,1,9},{36,0,10,0,0,-1,1,9},{103,0,2,0,12,-1,1,0},{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2}}, - {{36,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2}}, - {{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2}}, - {{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2},{36,0,7,0,4,-1,1,2},{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{36,0,7,0,0,-1,1,2},{36,0,12,17,0,-1,1,9},{36,0,12,17,0,-1,1,9}}, - {{36,0,12,17,0,-1,1,9},{36,0,10,0,0,-1,1,9},{36,0,10,0,0,-1,1,9},{36,0,10,0,0,-1,1,9},{36,0,10,0,0,-1,1,9},{103,0,2,0,12,-1,1,0},{36,0,12,17,0,-1,1,9},{36,0,12,17,0,-1,1,9},{36,0,12,17,0,-1,1,9},{103,0,2,0,12,-1,1,0},{36,0,12,17,0,-1,1,9},{36,0,12,17,0,-1,1,9},{36,0,12,17,0,-1,1,9},{36,0,12,17,0,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{36,0,12,17,0,-1,1,9},{36,0,12,17,0,-1,1,9},{103,0,2,0,12,-1,1,0},{36,0,7,0,4,-1,1,2},{36,0,7,0,4,-1,1,2},{36,0,7,0,2,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{36,0,7,0,0,-1,1,2},{36,0,7,0,0,-1,1,2},{36,0,12,17,2,-1,1,9},{36,0,12,17,2,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{36,0,13,0,0,0,1,19},{36,0,13,0,0,1,1,19},{36,0,13,0,0,2,1,19},{36,0,13,0,0,3,1,19},{36,0,13,0,0,4,1,19},{36,0,13,0,0,5,1,19},{36,0,13,0,0,6,1,19},{36,0,13,0,0,7,1,19},{36,0,13,0,0,8,1,19},{36,0,13,0,0,9,1,19}}, - {{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{36,0,15,10,8,-1,1,2},{36,0,15,10,8,-1,1,2},{36,0,15,10,8,-1,1,2},{36,0,15,10,8,-1,1,2},{36,0,15,10,8,-1,1,2},{36,0,15,10,8,-1,1,2},{36,0,15,10,8,-1,1,2},{36,0,26,0,8,-1,1,2}}, - {{103,0,2,0,12,-1,1,0},{21,0,12,17,4,-1,1,9},{21,0,10,0,0,-1,1,9},{21,0,10,0,0,-1,1,9},{103,0,2,0,12,-1,1,0},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2}}, - {{21,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2}}, - {{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2}}, - {{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{21,0,12,17,0,-1,1,9},{21,0,7,0,0,-1,1,2},{21,0,10,0,0,-1,1,9},{21,0,12,0,0,-1,1,9}}, - {{21,0,10,0,0,-1,1,9},{21,0,10,0,0,-1,1,9},{21,0,10,0,0,-1,1,9},{21,0,10,0,0,-1,1,9},{21,0,10,0,0,-1,1,9},{103,0,2,0,12,-1,1,0},{21,0,12,0,0,-1,1,9},{21,0,10,0,0,-1,1,9},{21,0,10,0,0,-1,1,9},{103,0,2,0,12,-1,1,0},{21,0,10,0,0,-1,1,9},{21,0,10,0,0,-1,1,9},{21,0,12,17,0,-1,1,9},{21,0,12,17,0,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{21,0,10,0,0,-1,1,9},{21,0,10,0,0,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{21,0,7,0,4,-1,1,2},{103,0,2,0,12,-1,1,0}}, - {{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{21,0,12,17,0,-1,1,9},{21,0,12,17,0,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{21,0,13,0,0,0,1,19},{21,0,13,0,0,1,1,19},{21,0,13,0,0,2,1,19},{21,0,13,0,0,3,1,19},{21,0,13,0,0,4,1,19},{21,0,13,0,0,5,1,19},{21,0,13,0,0,6,1,19},{21,0,13,0,0,7,1,19},{21,0,13,0,0,8,1,19},{21,0,13,0,0,9,1,19}}, - {{103,0,2,0,12,-1,1,0},{21,0,7,0,0,-1,1,2},{21,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{103,0,2,0,12,-1,1,0},{26,0,12,17,4,-1,1,9},{26,0,10,0,0,-1,1,9},{26,0,10,0,0,-1,1,9},{103,0,2,0,12,-1,1,0},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2}}, - {{26,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2}}, - {{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2}}, - {{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{26,0,7,0,0,-1,1,2},{26,0,10,0,0,-1,1,9},{26,0,10,0,0,-1,1,9}}, - {{26,0,10,0,0,-1,1,9},{26,0,12,17,0,-1,1,9},{26,0,12,17,0,-1,1,9},{26,0,12,17,0,-1,1,9},{26,0,12,17,2,-1,1,9},{103,0,2,0,12,-1,1,0},{26,0,10,0,0,-1,1,9},{26,0,10,0,0,-1,1,9},{26,0,10,0,0,-1,1,9},{103,0,2,0,12,-1,1,0},{26,0,10,0,0,-1,1,9},{26,0,10,0,0,-1,1,9},{26,0,10,0,0,-1,1,9},{26,0,12,17,0,-1,1,9},{26,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0}}, - {{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{26,0,10,0,0,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{26,0,7,0,4,-1,1,2}}, - {{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,12,17,2,-1,1,9},{26,0,12,17,2,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{26,0,13,0,0,0,1,19},{26,0,13,0,0,1,1,19},{26,0,13,0,0,2,1,19},{26,0,13,0,0,3,1,19},{26,0,13,0,0,4,1,19},{26,0,13,0,0,5,1,19},{26,0,13,0,0,6,1,19},{26,0,13,0,0,7,1,19},{26,0,13,0,0,8,1,19},{26,0,13,0,0,9,1,19}}, - {{26,0,15,0,8,-1,1,2},{26,0,15,0,8,-1,1,2},{26,0,15,0,8,-1,1,2},{26,0,15,0,8,-1,1,2},{26,0,15,0,8,-1,1,2},{26,0,15,0,8,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{26,0,26,0,8,-1,1,21},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2},{26,0,7,0,0,-1,1,2}}, - {{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{33,0,10,0,0,-1,1,9},{33,0,10,0,0,-1,1,9},{103,0,2,0,12,-1,1,0},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,3,-1,1,2}}, - {{33,0,7,0,3,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2}}, - {{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,3,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2}}, - {{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{33,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{33,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{33,0,12,17,0,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{33,0,10,0,0,-1,1,9}}, - {{33,0,10,0,0,-1,1,9},{33,0,10,0,0,-1,1,9},{33,0,12,17,0,-1,1,9},{33,0,12,17,0,-1,1,9},{33,0,12,17,0,-1,1,9},{103,0,2,0,12,-1,1,0},{33,0,12,17,0,-1,1,9},{103,0,2,0,12,-1,1,0},{33,0,10,0,0,-1,1,9},{33,0,10,0,0,-1,1,9},{33,0,10,0,0,-1,1,9},{33,0,10,0,0,-1,1,9},{33,0,10,0,0,-1,1,9},{33,0,10,0,0,-1,1,9},{33,0,10,0,0,-1,1,9},{33,0,10,0,3,-1,1,9}}, - {{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{33,0,13,0,4,0,1,19},{33,0,13,0,4,1,1,19},{33,0,13,0,4,2,1,19},{33,0,13,0,4,3,1,19},{33,0,13,0,4,4,1,19},{33,0,13,0,4,5,1,19},{33,0,13,0,4,6,1,19},{33,0,13,0,4,7,1,19},{33,0,13,0,4,8,1,19},{33,0,13,0,4,9,1,19}}, - {{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{33,0,10,0,0,-1,1,9},{33,0,10,0,3,-1,1,9},{33,0,21,0,8,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{103,0,2,0,12,-1,1,0},{38,0,7,0,0,-1,1,24},{38,0,7,0,0,-1,1,24},{38,0,7,0,0,-1,1,24},{38,0,7,0,0,-1,1,24},{38,0,7,0,0,-1,1,24},{38,0,7,0,0,-1,1,24},{38,0,7,0,0,-1,1,24},{38,0,7,0,0,-1,1,24},{38,0,7,0,0,-1,1,24},{38,0,7,0,0,-1,1,24},{38,0,7,0,0,-1,1,24},{38,0,7,0,0,-1,1,24},{38,0,7,0,0,-1,1,24},{38,0,7,0,0,-1,1,24},{38,0,7,0,0,-1,1,24}}, - {{38,0,7,0,0,-1,1,24},{38,0,7,0,0,-1,1,24},{38,0,7,0,0,-1,1,24},{38,0,7,0,0,-1,1,24},{38,0,7,0,0,-1,1,24},{38,0,7,0,0,-1,1,24},{38,0,7,0,0,-1,1,24},{38,0,7,0,0,-1,1,24},{38,0,7,0,0,-1,1,24},{38,0,7,0,0,-1,1,24},{38,0,7,0,0,-1,1,24},{38,0,7,0,0,-1,1,24},{38,0,7,0,0,-1,1,24},{38,0,7,0,0,-1,1,24},{38,0,7,0,0,-1,1,24},{38,0,7,0,0,-1,1,24}}, - {{38,0,7,0,0,-1,1,24},{38,0,12,17,0,-1,1,24},{38,0,7,0,0,-1,1,24},{38,0,7,0,9,-1,1,24},{38,0,12,17,0,-1,1,24},{38,0,12,17,0,-1,1,24},{38,0,12,17,0,-1,1,24},{38,0,12,17,0,-1,1,24},{38,0,12,17,0,-1,1,24},{38,0,12,17,0,-1,1,24},{38,0,12,17,0,-1,1,24},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{0,0,23,4,8,-1,1,22}}, - {{38,0,7,0,0,-1,1,24},{38,0,7,0,0,-1,1,24},{38,0,7,0,0,-1,1,24},{38,0,7,0,0,-1,1,24},{38,0,7,0,0,-1,1,24},{38,0,7,0,0,-1,1,24},{38,0,6,0,0,-1,1,24},{38,0,12,17,0,-1,1,24},{38,0,12,17,0,-1,1,24},{38,0,12,17,0,-1,1,24},{38,0,12,17,0,-1,1,24},{38,0,12,17,0,-1,1,24},{38,0,12,17,0,-1,1,24},{38,0,12,17,0,-1,1,24},{38,0,12,17,0,-1,1,24},{38,0,21,0,8,-1,1,2}}, - {{38,0,13,0,0,0,1,19},{38,0,13,0,0,1,1,19},{38,0,13,0,0,2,1,19},{38,0,13,0,0,3,1,19},{38,0,13,0,0,4,1,19},{38,0,13,0,0,5,1,19},{38,0,13,0,0,6,1,19},{38,0,13,0,0,7,1,19},{38,0,13,0,0,8,1,19},{38,0,13,0,0,9,1,19},{38,0,21,0,8,-1,1,4},{38,0,21,0,8,-1,1,4},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{103,0,2,0,12,-1,1,0},{24,0,7,0,0,-1,1,24},{24,0,7,0,0,-1,1,24},{103,0,2,0,12,-1,1,0},{24,0,7,0,0,-1,1,24},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{24,0,7,0,0,-1,1,24},{24,0,7,0,0,-1,1,24},{103,0,2,0,12,-1,1,0},{24,0,7,0,0,-1,1,24},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{24,0,7,0,0,-1,1,24},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{24,0,7,0,0,-1,1,24},{24,0,7,0,0,-1,1,24},{24,0,7,0,0,-1,1,24},{24,0,7,0,0,-1,1,24},{103,0,2,0,12,-1,1,0},{24,0,7,0,0,-1,1,24},{24,0,7,0,0,-1,1,24},{24,0,7,0,0,-1,1,24},{24,0,7,0,0,-1,1,24},{24,0,7,0,0,-1,1,24},{24,0,7,0,0,-1,1,24},{24,0,7,0,0,-1,1,24}}, - {{103,0,2,0,12,-1,1,0},{24,0,7,0,0,-1,1,24},{24,0,7,0,0,-1,1,24},{24,0,7,0,0,-1,1,24},{103,0,2,0,12,-1,1,0},{24,0,7,0,0,-1,1,24},{103,0,2,0,12,-1,1,0},{24,0,7,0,0,-1,1,24},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{24,0,7,0,0,-1,1,24},{24,0,7,0,0,-1,1,24},{103,0,2,0,12,-1,1,0},{24,0,7,0,0,-1,1,24},{24,0,7,0,0,-1,1,24},{24,0,7,0,0,-1,1,24}}, - {{24,0,7,0,0,-1,1,24},{24,0,12,17,0,-1,1,24},{24,0,7,0,0,-1,1,24},{24,0,7,0,9,-1,1,24},{24,0,12,17,0,-1,1,24},{24,0,12,17,0,-1,1,24},{24,0,12,17,0,-1,1,24},{24,0,12,17,0,-1,1,24},{24,0,12,17,0,-1,1,24},{24,0,12,17,0,-1,1,24},{103,0,2,0,12,-1,1,0},{24,0,12,17,0,-1,1,24},{24,0,12,17,0,-1,1,24},{24,0,7,0,0,-1,1,24},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{24,0,7,0,0,-1,1,24},{24,0,7,0,0,-1,1,24},{24,0,7,0,0,-1,1,24},{24,0,7,0,0,-1,1,24},{24,0,7,0,0,-1,1,24},{103,0,2,0,12,-1,1,0},{24,0,6,0,0,-1,1,24},{103,0,2,0,12,-1,1,0},{24,0,12,17,0,-1,1,24},{24,0,12,17,0,-1,1,24},{24,0,12,17,0,-1,1,24},{24,0,12,17,0,-1,1,24},{24,0,12,17,0,-1,1,24},{24,0,12,17,0,-1,1,24},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{24,0,13,0,0,0,1,19},{24,0,13,0,0,1,1,19},{24,0,13,0,0,2,1,19},{24,0,13,0,0,3,1,19},{24,0,13,0,0,4,1,19},{24,0,13,0,0,5,1,19},{24,0,13,0,0,6,1,19},{24,0,13,0,0,7,1,19},{24,0,13,0,0,8,1,19},{24,0,13,0,0,9,1,19},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{24,0,7,0,9,-1,1,24},{24,0,7,0,9,-1,1,24},{24,0,7,0,0,-1,1,24},{24,0,7,0,0,-1,1,24}}, - {{39,0,7,0,0,-1,1,2},{39,0,26,0,8,-1,1,5},{39,0,26,0,8,-1,1,5},{39,0,26,0,8,-1,1,5},{39,0,21,0,8,-1,1,5},{39,0,21,0,8,-1,1,2},{39,0,21,0,8,-1,1,5},{39,0,21,0,8,-1,1,5},{39,0,21,0,8,-1,1,12},{39,0,21,0,8,-1,1,5},{39,0,21,0,8,-1,1,5},{39,0,21,0,1,-1,1,4},{39,0,21,0,9,-1,1,12},{39,0,21,0,8,-1,1,11},{39,0,21,0,8,-1,1,11},{39,0,21,0,8,-1,1,11}}, - {{39,0,21,0,8,-1,1,11},{39,0,21,0,8,-1,1,11},{39,0,21,0,8,-1,1,12},{39,0,26,0,8,-1,1,2},{39,0,21,0,8,-1,1,11},{39,0,26,0,8,-1,1,2},{39,0,26,0,8,-1,1,2},{39,0,26,0,8,-1,1,2},{39,0,12,17,3,-1,1,9},{39,0,12,17,3,-1,1,9},{39,0,26,0,8,-1,1,2},{39,0,26,0,8,-1,1,2},{39,0,26,0,8,-1,1,2},{39,0,26,0,8,-1,1,2},{39,0,26,0,8,-1,1,2},{39,0,26,0,8,-1,1,2}}, - {{39,0,13,0,0,0,1,19},{39,0,13,0,0,1,1,19},{39,0,13,0,0,2,1,19},{39,0,13,0,0,3,1,19},{39,0,13,0,0,4,1,19},{39,0,13,0,0,5,1,19},{39,0,13,0,0,6,1,19},{39,0,13,0,0,7,1,19},{39,0,13,0,0,8,1,19},{39,0,13,0,0,9,1,19},{39,0,15,0,8,-1,1,2},{39,0,15,0,8,-1,1,2},{39,0,15,0,8,-1,1,2},{39,0,15,0,8,-1,1,2},{39,0,15,0,8,-1,1,2},{39,0,15,0,8,-1,1,2}}, - {{39,0,15,0,8,-1,1,2},{39,0,15,0,8,-1,1,2},{39,0,15,0,8,-1,1,2},{39,0,15,0,8,-1,1,2},{39,0,26,0,8,-1,1,4},{39,0,12,17,0,-1,1,9},{39,0,26,0,8,-1,1,2},{39,0,12,17,0,-1,1,9},{39,0,26,0,8,-1,1,2},{39,0,12,17,2,-1,1,9},{39,1,22,10,8,-1,1,20},{39,2,18,10,8,-1,1,8},{39,1,22,10,8,-1,1,20},{39,2,18,10,8,-1,1,8},{39,0,10,0,0,-1,1,9},{39,0,10,0,0,-1,1,9}}, - {{39,0,7,0,0,-1,1,2},{39,0,7,0,0,-1,1,2},{39,0,7,0,0,-1,1,2},{39,0,7,0,9,-1,1,2},{39,0,7,0,0,-1,1,2},{39,0,7,0,0,-1,1,2},{39,0,7,0,0,-1,1,2},{39,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{39,0,7,0,0,-1,1,2},{39,0,7,0,0,-1,1,2},{39,0,7,0,0,-1,1,2},{39,0,7,0,0,-1,1,2},{39,0,7,0,9,-1,1,2},{39,0,7,0,0,-1,1,2},{39,0,7,0,0,-1,1,2}}, - {{39,0,7,0,0,-1,1,2},{39,0,7,0,0,-1,1,2},{39,0,7,0,9,-1,1,2},{39,0,7,0,0,-1,1,2},{39,0,7,0,0,-1,1,2},{39,0,7,0,0,-1,1,2},{39,0,7,0,0,-1,1,2},{39,0,7,0,9,-1,1,2},{39,0,7,0,0,-1,1,2},{39,0,7,0,0,-1,1,2},{39,0,7,0,0,-1,1,2},{39,0,7,0,0,-1,1,2},{39,0,7,0,9,-1,1,2},{39,0,7,0,0,-1,1,2},{39,0,7,0,0,-1,1,2},{39,0,7,0,0,-1,1,2}}, - {{39,0,7,0,0,-1,1,2},{39,0,7,0,0,-1,1,2},{39,0,7,0,0,-1,1,2},{39,0,7,0,0,-1,1,2},{39,0,7,0,0,-1,1,2},{39,0,7,0,0,-1,1,2},{39,0,7,0,0,-1,1,2},{39,0,7,0,0,-1,1,2},{39,0,7,0,0,-1,1,2},{39,0,7,0,9,-1,1,2},{39,0,7,0,0,-1,1,2},{39,0,7,0,0,-1,1,2},{39,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{103,0,2,0,12,-1,1,0},{39,0,12,17,0,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,12,17,9,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,12,17,9,-1,1,9},{39,0,12,17,9,-1,1,9},{39,0,12,17,11,-1,1,9},{39,0,12,17,9,-1,1,9},{39,0,12,17,11,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,10,0,0,-1,1,4}}, - {{39,0,12,17,0,-1,1,9},{39,0,12,17,9,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,21,0,8,-1,1,4},{39,0,12,17,0,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,7,0,0,-1,1,2},{39,0,7,0,0,-1,1,2},{39,0,7,0,0,-1,1,2},{39,0,7,0,0,-1,1,2},{39,0,7,0,0,-1,1,2},{39,0,12,17,0,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,12,17,0,-1,1,9}}, - {{39,0,12,17,0,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,12,17,9,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,12,17,0,-1,1,9},{103,0,2,0,12,-1,1,0},{39,0,12,17,0,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,12,17,9,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,12,17,0,-1,1,9}}, - {{39,0,12,17,0,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,12,17,9,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,12,17,9,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,12,17,9,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,12,17,0,-1,1,9}}, - {{39,0,12,17,0,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,12,17,9,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,12,17,0,-1,1,9},{39,0,12,17,0,-1,1,9},{103,0,2,0,12,-1,1,0},{39,0,26,0,8,-1,1,4},{39,0,26,0,8,-1,1,4}}, - {{39,0,26,0,8,-1,1,2},{39,0,26,0,8,-1,1,2},{39,0,26,0,8,-1,1,2},{39,0,26,0,8,-1,1,2},{39,0,26,0,8,-1,1,2},{39,0,26,0,8,-1,1,2},{39,0,12,17,0,-1,1,9},{39,0,26,0,8,-1,1,2},{39,0,26,0,8,-1,1,2},{39,0,26,0,8,-1,1,2},{39,0,26,0,8,-1,1,2},{39,0,26,0,8,-1,1,2},{39,0,26,0,8,-1,1,2},{103,0,2,0,12,-1,1,0},{39,0,26,0,8,-1,1,2},{39,0,26,0,8,-1,1,2}}, - {{39,0,21,0,8,-1,1,5},{39,0,21,0,8,-1,1,5},{39,0,21,0,8,-1,1,4},{39,0,21,0,8,-1,1,5},{39,0,21,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{39,0,21,0,8,-1,1,12},{39,0,21,0,8,-1,1,12},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24}}, - {{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,10,0,0,-1,1,24},{28,0,10,0,0,-1,1,24},{28,0,12,17,0,-1,1,24},{28,0,12,17,0,-1,1,24},{28,0,12,17,0,-1,1,24}}, - {{28,0,12,17,0,-1,1,24},{28,0,10,0,0,-1,1,24},{28,0,12,17,0,-1,1,24},{28,0,12,17,0,-1,1,24},{28,0,12,17,0,-1,1,24},{28,0,12,17,0,-1,1,24},{28,0,12,17,0,-1,1,24},{28,0,12,17,0,-1,1,24},{28,0,10,0,0,-1,1,24},{28,0,12,17,0,-1,1,24},{28,0,12,17,0,-1,1,24},{28,0,10,0,0,-1,1,24},{28,0,10,0,0,-1,1,24},{28,0,12,17,0,-1,1,24},{28,0,12,17,0,-1,1,24},{28,0,7,0,0,-1,1,24}}, - {{28,0,13,0,0,0,1,19},{28,0,13,0,0,1,1,19},{28,0,13,0,0,2,1,19},{28,0,13,0,0,3,1,19},{28,0,13,0,0,4,1,19},{28,0,13,0,0,5,1,19},{28,0,13,0,0,6,1,19},{28,0,13,0,0,7,1,19},{28,0,13,0,0,8,1,19},{28,0,13,0,0,9,1,19},{28,0,21,0,8,-1,1,4},{28,0,21,0,8,-1,1,4},{28,0,21,0,8,-1,1,2},{28,0,21,0,8,-1,1,2},{28,0,21,0,8,-1,1,2},{28,0,21,0,8,-1,1,2}}, - {{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,10,0,0,-1,1,24},{28,0,10,0,0,-1,1,24},{28,0,12,17,0,-1,1,24},{28,0,12,17,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,12,17,0,-1,1,24},{28,0,12,17,0,-1,1,24}}, - {{28,0,12,17,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,10,0,0,-1,1,24},{28,0,10,0,0,-1,1,24},{28,0,10,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,10,0,0,-1,1,24},{28,0,10,0,0,-1,1,24},{28,0,10,0,0,-1,1,24},{28,0,10,0,0,-1,1,24},{28,0,10,0,0,-1,1,24},{28,0,10,0,0,-1,1,24},{28,0,10,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24}}, - {{28,0,7,0,0,-1,1,24},{28,0,12,17,0,-1,1,24},{28,0,12,17,0,-1,1,24},{28,0,12,17,0,-1,1,24},{28,0,12,17,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24}}, - {{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,12,17,0,-1,1,24},{28,0,10,0,0,-1,1,24},{28,0,10,0,0,-1,1,24},{28,0,12,17,0,-1,1,24},{28,0,12,17,0,-1,1,24},{28,0,10,0,0,-1,1,24},{28,0,10,0,0,-1,1,24},{28,0,10,0,0,-1,1,24},{28,0,10,0,0,-1,1,24},{28,0,10,0,0,-1,1,24},{28,0,10,0,0,-1,1,24},{28,0,12,17,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,10,0,0,-1,1,24}}, - {{28,0,13,0,0,0,1,19},{28,0,13,0,0,1,1,19},{28,0,13,0,0,2,1,19},{28,0,13,0,0,3,1,19},{28,0,13,0,0,4,1,19},{28,0,13,0,0,5,1,19},{28,0,13,0,0,6,1,19},{28,0,13,0,0,7,1,19},{28,0,13,0,0,8,1,19},{28,0,13,0,0,9,1,19},{28,0,10,0,0,-1,1,24},{28,0,10,0,0,-1,1,24},{28,0,10,0,0,-1,1,24},{28,0,12,17,0,-1,1,24},{28,0,26,0,8,-1,1,24},{28,0,26,0,8,-1,1,24}}, - {{12,0,9,0,4,-1,1,2},{12,0,9,0,4,-1,1,2},{12,0,9,0,4,-1,1,2},{12,0,9,0,4,-1,1,2},{12,0,9,0,4,-1,1,2},{12,0,9,0,4,-1,1,2},{12,0,9,0,4,-1,1,2},{12,0,9,0,4,-1,1,2},{12,0,9,0,4,-1,1,2},{12,0,9,0,4,-1,1,2},{12,0,9,0,4,-1,1,2},{12,0,9,0,4,-1,1,2},{12,0,9,0,4,-1,1,2},{12,0,9,0,4,-1,1,2},{12,0,9,0,4,-1,1,2},{12,0,9,0,4,-1,1,2}}, - {{12,0,9,0,4,-1,1,2},{12,0,9,0,4,-1,1,2},{12,0,9,0,4,-1,1,2},{12,0,9,0,4,-1,1,2},{12,0,9,0,4,-1,1,2},{12,0,9,0,4,-1,1,2},{103,0,2,0,12,-1,1,0},{12,0,9,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{12,0,9,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{12,0,7,0,0,-1,1,2},{12,0,7,0,0,-1,1,2},{12,0,7,0,0,-1,1,2},{12,0,7,0,0,-1,1,2},{12,0,7,0,0,-1,1,2},{12,0,7,0,0,-1,1,2},{12,0,7,0,0,-1,1,2},{12,0,7,0,0,-1,1,2},{12,0,7,0,0,-1,1,2},{12,0,7,0,0,-1,1,2},{12,0,7,0,0,-1,1,2},{12,0,7,0,0,-1,1,2},{12,0,7,0,0,-1,1,2},{12,0,7,0,0,-1,1,2},{12,0,7,0,0,-1,1,2},{12,0,7,0,0,-1,1,2}}, - {{12,0,7,0,0,-1,1,2},{12,0,7,0,4,-1,1,2},{12,0,7,0,4,-1,1,2},{12,0,7,0,4,-1,1,2},{12,0,7,0,4,-1,1,2},{12,0,7,0,4,-1,1,2},{12,0,7,0,4,-1,1,2},{12,0,7,0,0,-1,1,2},{12,0,7,0,0,-1,1,2},{12,0,7,0,0,-1,1,2},{12,0,7,0,0,-1,1,2},{0,0,21,0,8,-1,1,2},{12,0,6,0,9,-1,1,2},{12,0,7,0,0,-1,1,2},{12,0,7,0,0,-1,1,2},{12,0,7,0,0,-1,1,2}}, - {{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33}}, - {{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{18,0,7,0,10,-1,0,33}}, - {{18,0,7,0,10,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35}}, - {{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35}}, - {{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,34},{18,0,7,0,4,-1,0,34},{18,0,7,0,4,-1,0,34},{18,0,7,0,4,-1,0,34},{18,0,7,0,4,-1,0,34},{18,0,7,0,4,-1,0,34},{18,0,7,0,4,-1,0,34},{18,0,7,0,4,-1,0,34}}, - {{18,0,7,0,4,-1,0,34},{18,0,7,0,4,-1,0,34},{18,0,7,0,4,-1,0,34},{18,0,7,0,4,-1,0,34},{18,0,7,0,4,-1,0,34},{18,0,7,0,4,-1,0,34},{18,0,7,0,4,-1,0,34},{18,0,7,0,4,-1,0,34},{18,0,7,0,4,-1,0,34},{18,0,7,0,4,-1,0,34},{18,0,7,0,4,-1,0,34},{18,0,7,0,4,-1,0,34},{18,0,7,0,4,-1,0,34},{18,0,7,0,4,-1,0,34},{18,0,7,0,4,-1,0,34},{18,0,7,0,4,-1,0,34}}, - {{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2}}, - {{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{11,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{11,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0}}, - {{11,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2}}, - {{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2}}, - {{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{11,0,12,17,0,-1,1,9},{11,0,12,17,0,-1,1,9},{11,0,12,17,0,-1,1,9}}, - {{11,0,21,0,8,-1,1,2},{11,0,21,0,8,-1,1,4},{11,0,21,0,8,-1,1,2},{11,0,21,0,8,-1,1,2},{11,0,21,0,8,-1,1,2},{11,0,21,0,8,-1,1,2},{11,0,21,0,8,-1,1,2},{11,0,21,0,8,-1,1,2},{11,0,21,0,8,-1,1,2},{11,0,15,0,4,1,1,2},{11,0,15,0,4,2,1,2},{11,0,15,0,4,3,1,2},{11,0,15,0,4,4,1,2},{11,0,15,0,4,5,1,2},{11,0,15,0,4,6,1,2},{11,0,15,0,4,7,1,2}}, - {{11,0,15,0,4,8,1,2},{11,0,15,0,4,9,1,2},{11,0,15,0,8,-1,1,2},{11,0,15,0,8,-1,1,2},{11,0,15,0,8,-1,1,2},{11,0,15,0,8,-1,1,2},{11,0,15,0,8,-1,1,2},{11,0,15,0,8,-1,1,2},{11,0,15,0,8,-1,1,2},{11,0,15,0,8,-1,1,2},{11,0,15,0,8,-1,1,2},{11,0,15,0,8,-1,1,2},{11,0,15,0,8,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{11,0,26,10,8,-1,1,2},{11,0,26,10,8,-1,1,2},{11,0,26,10,8,-1,1,2},{11,0,26,10,8,-1,1,2},{11,0,26,10,8,-1,1,2},{11,0,26,10,8,-1,1,2},{11,0,26,10,8,-1,1,2},{11,0,26,10,8,-1,1,2},{11,0,26,10,8,-1,1,2},{11,0,26,10,8,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{6,0,9,0,6,-1,1,2},{6,0,9,0,6,-1,1,2},{6,0,9,0,6,-1,1,2},{6,0,9,0,6,-1,1,2},{6,0,9,0,6,-1,1,2},{6,0,9,0,6,-1,1,2},{6,0,9,0,6,-1,1,2},{6,0,9,0,6,-1,1,2},{6,0,9,0,6,-1,1,2},{6,0,9,0,6,-1,1,2},{6,0,9,0,6,-1,1,2},{6,0,9,0,6,-1,1,2},{6,0,9,0,6,-1,1,2},{6,0,9,0,6,-1,1,2},{6,0,9,0,6,-1,1,2},{6,0,9,0,6,-1,1,2}}, - {{6,0,9,0,6,-1,1,2},{6,0,9,0,6,-1,1,2},{6,0,9,0,6,-1,1,2},{6,0,9,0,6,-1,1,2},{6,0,9,0,6,-1,1,2},{6,0,9,0,6,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{6,0,5,0,6,-1,1,2},{6,0,5,0,6,-1,1,2},{6,0,5,0,6,-1,1,2},{6,0,5,0,6,-1,1,2},{6,0,5,0,6,-1,1,2},{6,0,5,0,6,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{40,0,17,10,8,-1,1,4},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2}}, - {{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2}}, - {{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,21,0,8,-1,0,2},{40,0,21,0,8,-1,0,2},{40,0,7,0,5,-1,0,2}}, - {{29,0,29,9,8,-1,1,4},{29,0,7,0,7,-1,1,2},{29,0,7,0,7,-1,1,2},{29,0,7,0,7,-1,1,2},{29,0,7,0,7,-1,1,2},{29,0,7,0,7,-1,1,2},{29,0,7,0,7,-1,1,2},{29,0,7,0,7,-1,1,2},{29,0,7,0,7,-1,1,2},{29,0,7,0,7,-1,1,2},{29,0,7,0,7,-1,1,2},{29,0,7,0,7,-1,1,2},{29,0,7,0,7,-1,1,2},{29,0,7,0,7,-1,1,2},{29,0,7,0,7,-1,1,2},{29,0,7,0,7,-1,1,2}}, - {{29,0,7,0,7,-1,1,2},{29,0,7,0,7,-1,1,2},{29,0,7,0,7,-1,1,2},{29,0,7,0,7,-1,1,2},{29,0,7,0,7,-1,1,2},{29,0,7,0,7,-1,1,2},{29,0,7,0,7,-1,1,2},{29,0,7,0,7,-1,1,2},{29,0,7,0,7,-1,1,2},{29,0,7,0,7,-1,1,2},{29,0,7,0,7,-1,1,2},{29,1,22,10,8,-1,1,20},{29,2,18,10,8,-1,1,8},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{32,0,7,0,7,-1,1,2},{32,0,7,0,7,-1,1,2},{32,0,7,0,7,-1,1,2},{32,0,7,0,7,-1,1,2},{32,0,7,0,7,-1,1,2},{32,0,7,0,7,-1,1,2},{32,0,7,0,7,-1,1,2},{32,0,7,0,7,-1,1,2},{32,0,7,0,7,-1,1,2},{32,0,7,0,7,-1,1,2},{32,0,7,0,7,-1,1,2},{32,0,7,0,7,-1,1,2},{32,0,7,0,7,-1,1,2},{32,0,7,0,7,-1,1,2},{32,0,7,0,7,-1,1,2},{32,0,7,0,7,-1,1,2}}, - {{32,0,7,0,7,-1,1,2},{32,0,7,0,7,-1,1,2},{32,0,7,0,7,-1,1,2},{32,0,7,0,7,-1,1,2},{32,0,7,0,7,-1,1,2},{32,0,7,0,7,-1,1,2},{32,0,7,0,7,-1,1,2},{32,0,7,0,7,-1,1,2},{32,0,7,0,7,-1,1,2},{32,0,7,0,7,-1,1,2},{32,0,7,0,7,-1,1,2},{0,0,21,0,8,-1,1,4},{0,0,21,0,8,-1,1,4},{0,0,21,0,8,-1,1,4},{32,0,14,0,7,-1,1,2},{32,0,14,0,7,-1,1,2}}, - {{32,0,14,0,7,-1,1,2},{32,0,7,0,7,-1,1,2},{32,0,7,0,7,-1,1,2},{32,0,7,0,7,-1,1,2},{32,0,7,0,7,-1,1,2},{32,0,7,0,7,-1,1,2},{32,0,7,0,7,-1,1,2},{32,0,7,0,7,-1,1,2},{32,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{42,0,7,0,7,-1,1,2},{42,0,7,0,7,-1,1,2},{42,0,7,0,7,-1,1,2},{42,0,7,0,7,-1,1,2},{42,0,7,0,7,-1,1,2},{42,0,7,0,7,-1,1,2},{42,0,7,0,7,-1,1,2},{42,0,7,0,7,-1,1,2},{42,0,7,0,7,-1,1,2},{42,0,7,0,7,-1,1,2},{42,0,7,0,7,-1,1,2},{42,0,7,0,7,-1,1,2},{42,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{42,0,7,0,7,-1,1,2},{42,0,7,0,7,-1,1,2}}, - {{42,0,7,0,7,-1,1,2},{42,0,7,0,7,-1,1,2},{42,0,12,17,7,-1,1,9},{42,0,12,17,7,-1,1,9},{42,0,12,17,7,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{43,0,7,0,7,-1,1,2},{43,0,7,0,7,-1,1,2},{43,0,7,0,7,-1,1,2},{43,0,7,0,7,-1,1,2},{43,0,7,0,7,-1,1,2},{43,0,7,0,7,-1,1,2},{43,0,7,0,7,-1,1,2},{43,0,7,0,7,-1,1,2},{43,0,7,0,7,-1,1,2},{43,0,7,0,7,-1,1,2},{43,0,7,0,7,-1,1,2},{43,0,7,0,7,-1,1,2},{43,0,7,0,7,-1,1,2},{43,0,7,0,7,-1,1,2},{43,0,7,0,7,-1,1,2},{43,0,7,0,7,-1,1,2}}, - {{43,0,7,0,7,-1,1,2},{43,0,7,0,7,-1,1,2},{43,0,12,17,7,-1,1,9},{43,0,12,17,7,-1,1,9},{43,0,12,17,7,-1,1,9},{0,0,21,0,8,-1,1,4},{0,0,21,0,8,-1,1,4},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{44,0,7,0,7,-1,1,2},{44,0,7,0,7,-1,1,2},{44,0,7,0,7,-1,1,2},{44,0,7,0,7,-1,1,2},{44,0,7,0,7,-1,1,2},{44,0,7,0,7,-1,1,2},{44,0,7,0,7,-1,1,2},{44,0,7,0,7,-1,1,2},{44,0,7,0,7,-1,1,2},{44,0,7,0,7,-1,1,2},{44,0,7,0,7,-1,1,2},{44,0,7,0,7,-1,1,2},{44,0,7,0,7,-1,1,2},{44,0,7,0,7,-1,1,2},{44,0,7,0,7,-1,1,2},{44,0,7,0,7,-1,1,2}}, - {{44,0,7,0,7,-1,1,2},{44,0,7,0,7,-1,1,2},{44,0,12,17,7,-1,1,9},{44,0,12,17,7,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{45,0,7,0,7,-1,1,2},{45,0,7,0,7,-1,1,2},{45,0,7,0,7,-1,1,2},{45,0,7,0,7,-1,1,2},{45,0,7,0,7,-1,1,2},{45,0,7,0,7,-1,1,2},{45,0,7,0,7,-1,1,2},{45,0,7,0,7,-1,1,2},{45,0,7,0,7,-1,1,2},{45,0,7,0,7,-1,1,2},{45,0,7,0,7,-1,1,2},{45,0,7,0,7,-1,1,2},{45,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{45,0,7,0,7,-1,1,2},{45,0,7,0,7,-1,1,2}}, - {{45,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{45,0,12,17,7,-1,1,9},{45,0,12,17,7,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{23,0,7,0,0,-1,1,24},{23,0,7,0,0,-1,1,24},{23,0,7,0,0,-1,1,24},{23,0,7,0,0,-1,1,24},{23,0,7,0,0,-1,1,24},{23,0,7,0,0,-1,1,24},{23,0,7,0,0,-1,1,24},{23,0,7,0,0,-1,1,24},{23,0,7,0,0,-1,1,24},{23,0,7,0,0,-1,1,24},{23,0,7,0,0,-1,1,24},{23,0,7,0,0,-1,1,24},{23,0,7,0,0,-1,1,24},{23,0,7,0,0,-1,1,24},{23,0,7,0,0,-1,1,24},{23,0,7,0,0,-1,1,24}}, - {{23,0,7,0,0,-1,1,24},{23,0,7,0,0,-1,1,24},{23,0,7,0,0,-1,1,24},{23,0,7,0,11,-1,1,24},{23,0,7,0,11,-1,1,24},{23,0,7,0,0,-1,1,24},{23,0,7,0,0,-1,1,24},{23,0,7,0,0,-1,1,24},{23,0,7,0,4,-1,1,24},{23,0,7,0,0,-1,1,24},{23,0,7,0,0,-1,1,24},{23,0,7,0,0,-1,1,24},{23,0,7,0,0,-1,1,24},{23,0,7,0,0,-1,1,24},{23,0,7,0,0,-1,1,24},{23,0,7,0,0,-1,1,24}}, - {{23,0,7,0,0,-1,1,24},{23,0,7,0,0,-1,1,24},{23,0,7,0,0,-1,1,24},{23,0,7,0,0,-1,1,24},{23,0,12,17,10,-1,1,24},{23,0,12,17,10,-1,1,24},{23,0,10,0,0,-1,1,24},{23,0,12,17,0,-1,1,24},{23,0,12,17,0,-1,1,24},{23,0,12,17,0,-1,1,24},{23,0,12,17,0,-1,1,24},{23,0,12,17,0,-1,1,24},{23,0,12,17,0,-1,1,24},{23,0,12,17,0,-1,1,24},{23,0,10,0,0,-1,1,24},{23,0,10,0,0,-1,1,24}}, - {{23,0,10,0,0,-1,1,24},{23,0,10,0,0,-1,1,24},{23,0,10,0,0,-1,1,24},{23,0,10,0,0,-1,1,24},{23,0,10,0,0,-1,1,24},{23,0,10,0,0,-1,1,24},{23,0,12,17,0,-1,1,24},{23,0,10,0,0,-1,1,24},{23,0,10,0,0,-1,1,24},{23,0,12,17,0,-1,1,24},{23,0,12,17,0,-1,1,24},{23,0,12,17,3,-1,1,24},{23,0,12,17,3,-1,1,24},{23,0,12,17,3,-1,1,24},{23,0,12,17,3,-1,1,24},{23,0,12,17,3,-1,1,24}}, - {{23,0,12,17,3,-1,1,24},{23,0,12,17,4,-1,1,24},{23,0,12,17,0,-1,1,24},{23,0,12,17,4,-1,1,24},{23,0,21,0,8,-1,1,4},{23,0,21,0,8,-1,1,4},{23,0,21,0,8,-1,1,18},{23,0,6,0,0,-1,1,24},{23,0,21,0,8,-1,1,4},{23,0,21,0,8,-1,1,2},{23,0,21,0,8,-1,1,4},{23,0,23,4,8,-1,1,22},{23,0,7,0,0,-1,1,24},{23,0,12,17,4,-1,1,24},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{23,0,13,0,0,0,1,19},{23,0,13,0,0,1,1,19},{23,0,13,0,0,2,1,19},{23,0,13,0,0,3,1,19},{23,0,13,0,0,4,1,19},{23,0,13,0,0,5,1,19},{23,0,13,0,0,6,1,19},{23,0,13,0,0,7,1,19},{23,0,13,0,0,8,1,19},{23,0,13,0,0,9,1,19},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{23,0,15,10,8,-1,1,2},{23,0,15,10,8,-1,1,2},{23,0,15,10,8,-1,1,2},{23,0,15,10,8,-1,1,2},{23,0,15,10,8,-1,1,2},{23,0,15,10,8,-1,1,2},{23,0,15,10,8,-1,1,2},{23,0,15,10,8,-1,1,2},{23,0,15,10,8,-1,1,2},{23,0,15,10,8,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{27,0,21,10,8,-1,1,2},{27,0,21,10,8,-1,1,2},{0,0,21,10,8,-1,1,11},{0,0,21,10,8,-1,1,11},{27,0,21,10,8,-1,1,4},{0,0,21,10,8,-1,1,4},{27,0,17,10,8,-1,1,5},{27,0,21,10,8,-1,1,2},{27,0,21,10,8,-1,1,11},{27,0,21,10,8,-1,1,11},{27,0,21,10,8,-1,1,2},{27,0,12,17,10,-1,1,9},{27,0,12,17,10,-1,1,9},{27,0,12,17,10,-1,1,9},{27,0,1,18,10,-1,1,12},{103,0,2,0,12,-1,1,0}}, - {{27,0,13,0,5,0,1,19},{27,0,13,0,5,1,1,19},{27,0,13,0,5,2,1,19},{27,0,13,0,5,3,1,19},{27,0,13,0,5,4,1,19},{27,0,13,0,5,5,1,19},{27,0,13,0,5,6,1,19},{27,0,13,0,5,7,1,19},{27,0,13,0,5,8,1,19},{27,0,13,0,5,9,1,19},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2}}, - {{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,6,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2}}, - {{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,7,0,5,-1,1,2},{27,0,12,17,5,-1,1,9},{27,0,7,0,5,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{40,0,7,0,5,-1,0,2},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0}}, - {{48,0,7,0,6,-1,1,2},{48,0,7,0,6,-1,1,2},{48,0,7,0,6,-1,1,2},{48,0,7,0,6,-1,1,2},{48,0,7,0,6,-1,1,2},{48,0,7,0,6,-1,1,2},{48,0,7,0,6,-1,1,2},{48,0,7,0,6,-1,1,2},{48,0,7,0,6,-1,1,2},{48,0,7,0,6,-1,1,2},{48,0,7,0,6,-1,1,2},{48,0,7,0,6,-1,1,2},{48,0,7,0,6,-1,1,2},{48,0,7,0,6,-1,1,2},{48,0,7,0,6,-1,1,2},{48,0,7,0,6,-1,1,2}}, - {{48,0,7,0,6,-1,1,2},{48,0,7,0,6,-1,1,2},{48,0,7,0,6,-1,1,2},{48,0,7,0,6,-1,1,2},{48,0,7,0,6,-1,1,2},{48,0,7,0,6,-1,1,2},{48,0,7,0,6,-1,1,2},{48,0,7,0,6,-1,1,2},{48,0,7,0,6,-1,1,2},{48,0,7,0,6,-1,1,2},{48,0,7,0,6,-1,1,2},{48,0,7,0,6,-1,1,2},{48,0,7,0,6,-1,1,2},{48,0,7,0,6,-1,1,2},{48,0,7,0,6,-1,1,2},{103,0,2,0,12,-1,1,0}}, - {{48,0,12,17,6,-1,1,9},{48,0,12,17,6,-1,1,9},{48,0,12,17,6,-1,1,9},{48,0,10,0,6,-1,1,9},{48,0,10,0,6,-1,1,9},{48,0,10,0,6,-1,1,9},{48,0,10,0,6,-1,1,9},{48,0,12,17,6,-1,1,9},{48,0,12,17,6,-1,1,9},{48,0,10,0,6,-1,1,9},{48,0,10,0,6,-1,1,9},{48,0,10,0,6,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{48,0,10,0,6,-1,1,9},{48,0,10,0,6,-1,1,9},{48,0,12,17,6,-1,1,9},{48,0,10,0,6,-1,1,9},{48,0,10,0,6,-1,1,9},{48,0,10,0,6,-1,1,9},{48,0,10,0,6,-1,1,9},{48,0,10,0,6,-1,1,9},{48,0,10,0,6,-1,1,9},{48,0,12,17,6,-1,1,9},{48,0,12,17,6,-1,1,9},{48,0,12,17,6,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{48,0,26,10,8,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{48,0,21,10,8,-1,1,11},{48,0,21,10,8,-1,1,11},{48,0,13,0,6,0,1,19},{48,0,13,0,6,1,1,19},{48,0,13,0,6,2,1,19},{48,0,13,0,6,3,1,19},{48,0,13,0,6,4,1,19},{48,0,13,0,6,5,1,19},{48,0,13,0,6,6,1,19},{48,0,13,0,6,7,1,19},{48,0,13,0,6,8,1,19},{48,0,13,0,6,9,1,19}}, - {{52,0,7,0,6,-1,1,24},{52,0,7,0,6,-1,1,24},{52,0,7,0,6,-1,1,24},{52,0,7,0,6,-1,1,24},{52,0,7,0,6,-1,1,24},{52,0,7,0,6,-1,1,24},{52,0,7,0,6,-1,1,24},{52,0,7,0,6,-1,1,24},{52,0,7,0,6,-1,1,24},{52,0,7,0,6,-1,1,24},{52,0,7,0,6,-1,1,24},{52,0,7,0,6,-1,1,24},{52,0,7,0,6,-1,1,24},{52,0,7,0,6,-1,1,24},{52,0,7,0,6,-1,1,24},{52,0,7,0,6,-1,1,24}}, - {{52,0,7,0,6,-1,1,24},{52,0,7,0,6,-1,1,24},{52,0,7,0,6,-1,1,24},{52,0,7,0,6,-1,1,24},{52,0,7,0,6,-1,1,24},{52,0,7,0,6,-1,1,24},{52,0,7,0,6,-1,1,24},{52,0,7,0,6,-1,1,24},{52,0,7,0,6,-1,1,24},{52,0,7,0,6,-1,1,24},{52,0,7,0,6,-1,1,24},{52,0,7,0,6,-1,1,24},{52,0,7,0,6,-1,1,24},{52,0,7,0,6,-1,1,24},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{52,0,7,0,6,-1,1,24},{52,0,7,0,6,-1,1,24},{52,0,7,0,6,-1,1,24},{52,0,7,0,6,-1,1,24},{52,0,7,0,6,-1,1,24},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{59,0,7,0,6,-1,1,24},{59,0,7,0,6,-1,1,24},{59,0,7,0,6,-1,1,24},{59,0,7,0,6,-1,1,24},{59,0,7,0,6,-1,1,24},{59,0,7,0,6,-1,1,24},{59,0,7,0,6,-1,1,24},{59,0,7,0,6,-1,1,24},{59,0,7,0,6,-1,1,24},{59,0,7,0,6,-1,1,24},{59,0,7,0,6,-1,1,24},{59,0,7,0,6,-1,1,24},{59,0,7,0,6,-1,1,24},{59,0,7,0,6,-1,1,24},{59,0,7,0,6,-1,1,24},{59,0,7,0,6,-1,1,24}}, - {{59,0,7,0,6,-1,1,24},{59,0,7,0,6,-1,1,24},{59,0,7,0,6,-1,1,24},{59,0,7,0,6,-1,1,24},{59,0,7,0,6,-1,1,24},{59,0,7,0,6,-1,1,24},{59,0,7,0,6,-1,1,24},{59,0,7,0,6,-1,1,24},{59,0,7,0,6,-1,1,24},{59,0,7,0,6,-1,1,24},{59,0,7,0,6,-1,1,24},{59,0,7,0,6,-1,1,24},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{59,0,7,0,6,-1,1,24},{59,0,7,0,6,-1,1,24},{59,0,7,0,6,-1,1,24},{59,0,7,0,6,-1,1,24},{59,0,7,0,6,-1,1,24},{59,0,7,0,6,-1,1,24},{59,0,7,0,6,-1,1,24},{59,0,7,0,6,-1,1,24},{59,0,7,0,6,-1,1,24},{59,0,7,0,6,-1,1,24},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{59,0,13,0,6,0,1,19},{59,0,13,0,6,1,1,19},{59,0,13,0,6,2,1,19},{59,0,13,0,6,3,1,19},{59,0,13,0,6,4,1,19},{59,0,13,0,6,5,1,19},{59,0,13,0,6,6,1,19},{59,0,13,0,6,7,1,19},{59,0,13,0,6,8,1,19},{59,0,13,0,6,9,1,19},{59,0,15,0,6,1,1,24},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{59,0,26,10,8,-1,1,24},{59,0,26,10,8,-1,1,24}}, - {{23,0,26,10,8,-1,1,2},{23,0,26,10,8,-1,1,2},{23,0,26,10,8,-1,1,2},{23,0,26,10,8,-1,1,2},{23,0,26,10,8,-1,1,2},{23,0,26,10,8,-1,1,2},{23,0,26,10,8,-1,1,2},{23,0,26,10,8,-1,1,2},{23,0,26,10,8,-1,1,2},{23,0,26,10,8,-1,1,2},{23,0,26,10,8,-1,1,2},{23,0,26,10,8,-1,1,2},{23,0,26,10,8,-1,1,2},{23,0,26,10,8,-1,1,2},{23,0,26,10,8,-1,1,2},{23,0,26,10,8,-1,1,2}}, - {{55,0,7,0,7,-1,1,2},{55,0,7,0,7,-1,1,2},{55,0,7,0,7,-1,1,2},{55,0,7,0,7,-1,1,2},{55,0,7,0,7,-1,1,2},{55,0,7,0,7,-1,1,2},{55,0,7,0,7,-1,1,2},{55,0,7,0,7,-1,1,2},{55,0,7,0,7,-1,1,2},{55,0,7,0,7,-1,1,2},{55,0,7,0,7,-1,1,2},{55,0,7,0,7,-1,1,2},{55,0,7,0,7,-1,1,2},{55,0,7,0,7,-1,1,2},{55,0,7,0,7,-1,1,2},{55,0,7,0,7,-1,1,2}}, - {{55,0,7,0,7,-1,1,2},{55,0,7,0,7,-1,1,2},{55,0,7,0,7,-1,1,2},{55,0,7,0,7,-1,1,2},{55,0,7,0,7,-1,1,2},{55,0,7,0,7,-1,1,2},{55,0,7,0,7,-1,1,2},{55,0,12,17,7,-1,1,9},{55,0,12,17,7,-1,1,9},{55,0,10,0,7,-1,1,9},{55,0,10,0,7,-1,1,9},{55,0,12,17,7,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{55,0,21,0,8,-1,1,2},{55,0,21,0,8,-1,1,2}}, - {{106,0,7,0,6,-1,1,24},{106,0,7,0,6,-1,1,24},{106,0,7,0,6,-1,1,24},{106,0,7,0,6,-1,1,24},{106,0,7,0,6,-1,1,24},{106,0,7,0,6,-1,1,24},{106,0,7,0,6,-1,1,24},{106,0,7,0,6,-1,1,24},{106,0,7,0,6,-1,1,24},{106,0,7,0,6,-1,1,24},{106,0,7,0,6,-1,1,24},{106,0,7,0,6,-1,1,24},{106,0,7,0,6,-1,1,24},{106,0,7,0,6,-1,1,24},{106,0,7,0,6,-1,1,24},{106,0,7,0,6,-1,1,24}}, - {{106,0,7,0,6,-1,1,24},{106,0,7,0,6,-1,1,24},{106,0,7,0,6,-1,1,24},{106,0,7,0,6,-1,1,24},{106,0,7,0,6,-1,1,24},{106,0,10,0,6,-1,1,24},{106,0,12,17,6,-1,1,24},{106,0,10,0,6,-1,1,24},{106,0,12,17,6,-1,1,24},{106,0,12,17,6,-1,1,24},{106,0,12,17,6,-1,1,24},{106,0,12,17,6,-1,1,24},{106,0,12,17,6,-1,1,24},{106,0,12,17,6,-1,1,24},{106,0,12,17,6,-1,1,24},{103,0,2,0,12,-1,1,0}}, - {{106,0,12,17,6,-1,1,24},{106,0,10,0,6,-1,1,24},{106,0,12,17,6,-1,1,24},{106,0,10,0,6,-1,1,24},{106,0,10,0,6,-1,1,24},{106,0,12,17,6,-1,1,24},{106,0,12,17,6,-1,1,24},{106,0,12,17,6,-1,1,24},{106,0,12,17,6,-1,1,24},{106,0,12,17,6,-1,1,24},{106,0,12,17,6,-1,1,24},{106,0,12,17,6,-1,1,24},{106,0,12,17,6,-1,1,24},{106,0,10,0,6,-1,1,24},{106,0,10,0,6,-1,1,24},{106,0,10,0,6,-1,1,24}}, - {{106,0,10,0,6,-1,1,24},{106,0,10,0,6,-1,1,24},{106,0,10,0,6,-1,1,24},{106,0,12,17,6,-1,1,24},{106,0,12,17,6,-1,1,24},{106,0,12,17,6,-1,1,24},{106,0,12,17,6,-1,1,24},{106,0,12,17,6,-1,1,24},{106,0,12,17,6,-1,1,24},{106,0,12,17,6,-1,1,24},{106,0,12,17,6,-1,1,24},{106,0,12,17,6,-1,1,24},{106,0,12,17,6,-1,1,24},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{106,0,12,17,6,-1,1,9}}, - {{106,0,13,0,6,0,1,19},{106,0,13,0,6,1,1,19},{106,0,13,0,6,2,1,19},{106,0,13,0,6,3,1,19},{106,0,13,0,6,4,1,19},{106,0,13,0,6,5,1,19},{106,0,13,0,6,6,1,19},{106,0,13,0,6,7,1,19},{106,0,13,0,6,8,1,19},{106,0,13,0,6,9,1,19},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{106,0,21,0,8,-1,1,24},{106,0,21,0,8,-1,1,24},{106,0,21,0,8,-1,1,24},{106,0,21,0,8,-1,1,24},{106,0,21,0,8,-1,1,24},{106,0,21,0,8,-1,1,24},{106,0,21,0,8,-1,1,24},{106,0,6,0,6,-1,1,24},{106,0,21,0,8,-1,1,24},{106,0,21,0,8,-1,1,24},{106,0,21,0,8,-1,1,24},{106,0,21,0,8,-1,1,24},{106,0,21,0,8,-1,1,24},{106,0,21,0,8,-1,1,24},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,11,17,8,-1,1,9},{103,0,2,0,12,-1,1,0}}, - {{62,0,12,17,6,-1,1,9},{62,0,12,17,6,-1,1,9},{62,0,12,17,6,-1,1,9},{62,0,12,17,6,-1,1,9},{62,0,10,0,6,-1,1,9},{62,0,7,0,6,-1,1,2},{62,0,7,0,6,-1,1,2},{62,0,7,0,6,-1,1,2},{62,0,7,0,6,-1,1,2},{62,0,7,0,6,-1,1,2},{62,0,7,0,6,-1,1,2},{62,0,7,0,6,-1,1,2},{62,0,7,0,6,-1,1,2},{62,0,7,0,6,-1,1,2},{62,0,7,0,6,-1,1,2},{62,0,7,0,6,-1,1,2}}, - {{62,0,7,0,6,-1,1,2},{62,0,7,0,6,-1,1,2},{62,0,7,0,6,-1,1,2},{62,0,7,0,6,-1,1,2},{62,0,7,0,6,-1,1,2},{62,0,7,0,6,-1,1,2},{62,0,7,0,6,-1,1,2},{62,0,7,0,6,-1,1,2},{62,0,7,0,6,-1,1,2},{62,0,7,0,6,-1,1,2},{62,0,7,0,6,-1,1,2},{62,0,7,0,6,-1,1,2},{62,0,7,0,6,-1,1,2},{62,0,7,0,6,-1,1,2},{62,0,7,0,6,-1,1,2},{62,0,7,0,6,-1,1,2}}, - {{62,0,7,0,6,-1,1,2},{62,0,7,0,6,-1,1,2},{62,0,7,0,6,-1,1,2},{62,0,7,0,6,-1,1,2},{62,0,12,17,6,-1,1,9},{62,0,10,0,6,-1,1,9},{62,0,12,17,6,-1,1,9},{62,0,12,17,6,-1,1,9},{62,0,12,17,6,-1,1,9},{62,0,12,17,6,-1,1,9},{62,0,12,17,6,-1,1,9},{62,0,10,0,6,-1,1,9},{62,0,12,17,6,-1,1,9},{62,0,10,0,6,-1,1,9},{62,0,10,0,6,-1,1,9},{62,0,10,0,6,-1,1,9}}, - {{62,0,10,0,6,-1,1,9},{62,0,10,0,6,-1,1,9},{62,0,12,17,6,-1,1,9},{62,0,10,0,6,-1,1,9},{62,0,10,0,6,-1,1,9},{62,0,7,0,6,-1,1,2},{62,0,7,0,6,-1,1,2},{62,0,7,0,6,-1,1,2},{62,0,7,0,6,-1,1,2},{62,0,7,0,6,-1,1,2},{62,0,7,0,6,-1,1,2},{62,0,7,0,6,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{62,0,13,0,6,0,1,19},{62,0,13,0,6,1,1,19},{62,0,13,0,6,2,1,19},{62,0,13,0,6,3,1,19},{62,0,13,0,6,4,1,19},{62,0,13,0,6,5,1,19},{62,0,13,0,6,6,1,19},{62,0,13,0,6,7,1,19},{62,0,13,0,6,8,1,19},{62,0,13,0,6,9,1,19},{62,0,21,0,8,-1,1,4},{62,0,21,0,8,-1,1,4},{62,0,21,0,8,-1,1,2},{62,0,21,0,8,-1,1,4},{62,0,21,0,8,-1,1,4},{62,0,21,0,8,-1,1,4}}, - {{62,0,21,0,8,-1,1,4},{62,0,26,0,8,-1,1,2},{62,0,26,0,8,-1,1,2},{62,0,26,0,8,-1,1,2},{62,0,26,0,8,-1,1,2},{62,0,26,0,8,-1,1,2},{62,0,26,0,8,-1,1,2},{62,0,26,0,8,-1,1,2},{62,0,26,0,8,-1,1,2},{62,0,26,0,8,-1,1,2},{62,0,26,0,8,-1,1,2},{62,0,12,17,6,-1,1,9},{62,0,12,17,6,-1,1,9},{62,0,12,17,6,-1,1,9},{62,0,12,17,6,-1,1,9},{62,0,12,17,6,-1,1,9}}, - {{62,0,12,17,6,-1,1,9},{62,0,12,17,6,-1,1,9},{62,0,12,17,6,-1,1,9},{62,0,12,17,6,-1,1,9},{62,0,26,0,8,-1,1,2},{62,0,26,0,8,-1,1,2},{62,0,26,0,8,-1,1,2},{62,0,26,0,8,-1,1,2},{62,0,26,0,8,-1,1,2},{62,0,26,0,8,-1,1,2},{62,0,26,0,8,-1,1,2},{62,0,26,0,8,-1,1,2},{62,0,26,0,8,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{113,0,12,17,6,-1,1,9},{113,0,12,17,6,-1,1,9},{113,0,10,0,6,-1,1,9},{113,0,7,0,6,-1,1,2},{113,0,7,0,6,-1,1,2},{113,0,7,0,6,-1,1,2},{113,0,7,0,6,-1,1,2},{113,0,7,0,6,-1,1,2},{113,0,7,0,6,-1,1,2},{113,0,7,0,6,-1,1,2},{113,0,7,0,6,-1,1,2},{113,0,7,0,6,-1,1,2},{113,0,7,0,6,-1,1,2},{113,0,7,0,6,-1,1,2},{113,0,7,0,6,-1,1,2},{113,0,7,0,6,-1,1,2}}, - {{113,0,7,0,6,-1,1,2},{113,0,7,0,6,-1,1,2},{113,0,7,0,6,-1,1,2},{113,0,7,0,6,-1,1,2},{113,0,7,0,6,-1,1,2},{113,0,7,0,6,-1,1,2},{113,0,7,0,6,-1,1,2},{113,0,7,0,6,-1,1,2},{113,0,7,0,6,-1,1,2},{113,0,7,0,6,-1,1,2},{113,0,7,0,6,-1,1,2},{113,0,7,0,6,-1,1,2},{113,0,7,0,6,-1,1,2},{113,0,7,0,6,-1,1,2},{113,0,7,0,6,-1,1,2},{113,0,7,0,6,-1,1,2}}, - {{113,0,7,0,6,-1,1,2},{113,0,10,0,6,-1,1,9},{113,0,12,17,6,-1,1,9},{113,0,12,17,6,-1,1,9},{113,0,12,17,6,-1,1,9},{113,0,12,17,6,-1,1,9},{113,0,10,0,6,-1,1,9},{113,0,10,0,6,-1,1,9},{113,0,12,17,6,-1,1,9},{113,0,12,17,6,-1,1,9},{113,0,10,0,6,-1,1,9},{113,0,12,17,6,-1,1,9},{113,0,12,17,6,-1,1,9},{113,0,12,17,6,-1,1,9},{113,0,7,0,6,-1,1,2},{113,0,7,0,6,-1,1,2}}, - {{113,0,13,0,6,0,1,19},{113,0,13,0,6,1,1,19},{113,0,13,0,6,2,1,19},{113,0,13,0,6,3,1,19},{113,0,13,0,6,4,1,19},{113,0,13,0,6,5,1,19},{113,0,13,0,6,6,1,19},{113,0,13,0,6,7,1,19},{113,0,13,0,6,8,1,19},{113,0,13,0,6,9,1,19},{113,0,7,0,6,-1,1,2},{113,0,7,0,6,-1,1,2},{113,0,7,0,6,-1,1,2},{113,0,7,0,6,-1,1,2},{113,0,7,0,6,-1,1,2},{113,0,7,0,6,-1,1,2}}, - {{63,0,7,0,6,-1,1,2},{63,0,7,0,6,-1,1,2},{63,0,7,0,6,-1,1,2},{63,0,7,0,6,-1,1,2},{63,0,7,0,6,-1,1,2},{63,0,7,0,6,-1,1,2},{63,0,7,0,6,-1,1,2},{63,0,7,0,6,-1,1,2},{63,0,7,0,6,-1,1,2},{63,0,7,0,6,-1,1,2},{63,0,7,0,6,-1,1,2},{63,0,7,0,6,-1,1,2},{63,0,7,0,6,-1,1,2},{63,0,7,0,6,-1,1,2},{63,0,7,0,6,-1,1,2},{63,0,7,0,6,-1,1,2}}, - {{63,0,7,0,6,-1,1,2},{63,0,7,0,6,-1,1,2},{63,0,7,0,6,-1,1,2},{63,0,7,0,6,-1,1,2},{63,0,7,0,6,-1,1,2},{63,0,7,0,6,-1,1,2},{63,0,12,17,6,-1,1,9},{63,0,10,0,6,-1,1,9},{63,0,12,17,6,-1,1,9},{63,0,12,17,6,-1,1,9},{63,0,10,0,6,-1,1,9},{63,0,10,0,6,-1,1,9},{63,0,10,0,6,-1,1,9},{63,0,12,17,6,-1,1,9},{63,0,10,0,6,-1,1,9},{63,0,12,17,6,-1,1,9}}, - {{63,0,12,17,6,-1,1,9},{63,0,12,17,6,-1,1,9},{63,0,10,0,6,-1,1,9},{63,0,10,0,6,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{63,0,21,0,8,-1,1,2},{63,0,21,0,8,-1,1,2},{63,0,21,0,8,-1,1,2},{63,0,21,0,8,-1,1,2}}, - {{82,0,7,0,6,-1,1,2},{82,0,7,0,6,-1,1,2},{82,0,7,0,6,-1,1,2},{82,0,7,0,6,-1,1,2},{82,0,7,0,6,-1,1,2},{82,0,7,0,6,-1,1,2},{82,0,7,0,6,-1,1,2},{82,0,7,0,6,-1,1,2},{82,0,7,0,6,-1,1,2},{82,0,7,0,6,-1,1,2},{82,0,7,0,6,-1,1,2},{82,0,7,0,6,-1,1,2},{82,0,7,0,6,-1,1,2},{82,0,7,0,6,-1,1,2},{82,0,7,0,6,-1,1,2},{82,0,7,0,6,-1,1,2}}, - {{82,0,7,0,6,-1,1,2},{82,0,7,0,6,-1,1,2},{82,0,7,0,6,-1,1,2},{82,0,7,0,6,-1,1,2},{82,0,10,0,6,-1,1,9},{82,0,10,0,6,-1,1,9},{82,0,10,0,6,-1,1,9},{82,0,10,0,6,-1,1,9},{82,0,10,0,6,-1,1,9},{82,0,10,0,6,-1,1,9},{82,0,10,0,6,-1,1,9},{82,0,10,0,6,-1,1,9},{82,0,12,17,6,-1,1,9},{82,0,12,17,6,-1,1,9},{82,0,12,17,6,-1,1,9},{82,0,12,17,6,-1,1,9}}, - {{82,0,12,17,6,-1,1,9},{82,0,12,17,6,-1,1,9},{82,0,12,17,6,-1,1,9},{82,0,12,17,6,-1,1,9},{82,0,10,0,6,-1,1,9},{82,0,10,0,6,-1,1,9},{82,0,12,17,6,-1,1,9},{82,0,12,17,6,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{82,0,21,0,8,-1,1,4},{82,0,21,0,8,-1,1,4},{82,0,21,0,8,-1,1,4},{82,0,21,0,8,-1,1,4},{82,0,21,0,8,-1,1,4}}, - {{82,0,13,0,6,0,1,19},{82,0,13,0,6,1,1,19},{82,0,13,0,6,2,1,19},{82,0,13,0,6,3,1,19},{82,0,13,0,6,4,1,19},{82,0,13,0,6,5,1,19},{82,0,13,0,6,6,1,19},{82,0,13,0,6,7,1,19},{82,0,13,0,6,8,1,19},{82,0,13,0,6,9,1,19},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{82,0,7,0,6,-1,1,2},{82,0,7,0,6,-1,1,2},{82,0,7,0,6,-1,1,2}}, - {{109,0,13,0,6,0,1,19},{109,0,13,0,6,1,1,19},{109,0,13,0,6,2,1,19},{109,0,13,0,6,3,1,19},{109,0,13,0,6,4,1,19},{109,0,13,0,6,5,1,19},{109,0,13,0,6,6,1,19},{109,0,13,0,6,7,1,19},{109,0,13,0,6,8,1,19},{109,0,13,0,6,9,1,19},{109,0,7,0,6,-1,1,2},{109,0,7,0,6,-1,1,2},{109,0,7,0,6,-1,1,2},{109,0,7,0,6,-1,1,2},{109,0,7,0,6,-1,1,2},{109,0,7,0,6,-1,1,2}}, - {{109,0,7,0,6,-1,1,2},{109,0,7,0,6,-1,1,2},{109,0,7,0,6,-1,1,2},{109,0,7,0,6,-1,1,2},{109,0,7,0,6,-1,1,2},{109,0,7,0,6,-1,1,2},{109,0,7,0,6,-1,1,2},{109,0,7,0,6,-1,1,2},{109,0,7,0,6,-1,1,2},{109,0,7,0,6,-1,1,2},{109,0,7,0,6,-1,1,2},{109,0,7,0,6,-1,1,2},{109,0,7,0,6,-1,1,2},{109,0,7,0,6,-1,1,2},{109,0,7,0,6,-1,1,2},{109,0,7,0,6,-1,1,2}}, - {{109,0,7,0,6,-1,1,2},{109,0,7,0,6,-1,1,2},{109,0,7,0,6,-1,1,2},{109,0,7,0,6,-1,1,2},{109,0,7,0,6,-1,1,2},{109,0,7,0,6,-1,1,2},{109,0,7,0,6,-1,1,2},{109,0,7,0,6,-1,1,2},{109,0,6,0,6,-1,1,2},{109,0,6,0,6,-1,1,2},{109,0,6,0,6,-1,1,2},{109,0,6,0,6,-1,1,2},{109,0,6,0,6,-1,1,2},{109,0,6,0,6,-1,1,2},{109,0,21,0,8,-1,1,4},{109,0,21,0,8,-1,1,4}}, - {{113,0,21,0,8,-1,1,2},{113,0,21,0,8,-1,1,2},{113,0,21,0,8,-1,1,2},{113,0,21,0,8,-1,1,2},{113,0,21,0,8,-1,1,2},{113,0,21,0,8,-1,1,2},{113,0,21,0,8,-1,1,2},{113,0,21,0,8,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{0,0,21,0,8,-1,1,2},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9}}, - {{1,0,12,17,4,-1,1,9},{0,0,10,0,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{0,0,7,0,4,-1,1,2},{0,0,7,0,4,-1,1,2},{0,0,7,0,4,-1,1,2},{0,0,7,0,4,-1,1,2},{1,0,12,17,4,-1,1,9},{0,0,7,0,4,-1,1,2},{0,0,7,0,4,-1,1,2}}, - {{0,0,7,0,4,-1,1,2},{0,0,7,0,4,-1,1,2},{0,0,10,0,4,-1,1,9},{0,0,10,0,4,-1,1,9},{1,0,12,17,4,-1,1,9},{0,0,7,0,4,-1,1,2},{0,0,7,0,4,-1,1,2},{103,0,2,0,12,-1,1,0},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{14,0,5,0,3,-1,1,2},{14,0,5,0,3,-1,1,2},{14,0,5,0,3,-1,1,2},{14,0,5,0,3,-1,1,2},{14,0,5,0,3,-1,1,2},{8,0,5,0,3,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,3,-1,1,2}}, - {{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,3,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2}}, - {{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,3,-1,1,2},{25,0,6,0,9,-1,1,2}}, - {{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{14,0,6,0,9,-1,1,2},{14,0,6,0,9,-1,1,2},{14,0,6,0,9,-1,1,2}}, - {{14,0,6,0,9,-1,1,2},{14,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{14,0,6,0,9,-1,1,2},{14,0,6,0,9,-1,1,2},{14,0,6,0,9,-1,1,2},{14,0,6,0,9,-1,1,2},{14,0,6,0,9,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2}}, - {{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{8,0,6,0,9,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2}}, - {{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2}}, - {{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2}}, - {{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{14,0,6,0,9,-1,1,2}}, - {{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,3,-1,1,9}}, - {{1,0,12,17,3,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9}}, - {{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,4,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9}}, - {{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9}}, - {{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,9,-1,1,2},{25,0,5,0,9,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,3,-1,1,2}}, - {{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,9,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,9,0,3,-1,1,2},{25,0,5,0,3,-1,1,2}}, - {{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2}}, - {{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{14,0,9,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{14,0,9,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{14,0,9,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{14,0,9,0,0,-1,1,2}}, - {{14,0,5,0,0,-1,1,2},{14,0,5,0,9,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,9,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,9,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,9,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,9,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,9,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,9,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,8,0,0,-1,1,2},{14,0,8,0,0,-1,1,2},{14,0,8,0,0,-1,1,2},{14,0,8,0,0,-1,1,2},{14,0,8,0,0,-1,1,2},{14,0,8,0,0,-1,1,2},{14,0,8,0,0,-1,1,2},{14,0,8,0,0,-1,1,2}}, - {{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,9,-1,1,2},{14,0,8,0,0,-1,1,2},{14,0,24,10,9,-1,1,2},{14,0,5,0,9,-1,1,2},{14,0,24,10,9,-1,1,2}}, - {{14,0,24,10,9,-1,1,2},{14,0,24,10,9,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,9,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,9,-1,1,2},{14,0,8,0,0,-1,1,2},{14,0,24,10,9,-1,1,2},{14,0,24,10,9,-1,1,2},{14,0,24,10,9,-1,1,2}}, - {{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,9,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,9,-1,1,2},{103,0,2,0,12,-1,1,0},{14,0,24,10,9,-1,1,2},{14,0,24,10,9,-1,1,2},{14,0,24,10,9,-1,1,2}}, - {{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,9,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,9,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,24,10,9,-1,1,2},{14,0,24,10,9,-1,1,2},{14,0,24,10,9,-1,1,2}}, - {{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{14,0,5,0,0,-1,1,2},{14,0,5,0,0,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,9,-1,1,2},{14,0,9,0,0,-1,1,2},{14,0,9,0,9,-1,1,2},{14,0,8,0,0,-1,1,2},{14,0,24,10,9,-1,1,5},{14,0,24,10,9,-1,1,2},{103,0,2,0,12,-1,1,0}}, - {{0,0,29,9,9,-1,1,4},{0,0,29,9,9,-1,1,4},{0,0,29,9,9,-1,1,4},{0,0,29,9,9,-1,1,4},{0,0,29,9,9,-1,1,4},{0,0,29,9,9,-1,1,4},{0,0,29,9,9,-1,1,4},{0,0,29,9,9,-1,1,12},{0,0,29,9,9,-1,1,4},{0,0,29,9,9,-1,1,4},{0,0,29,9,9,-1,1,4},{0,0,1,18,10,-1,1,28},{1,0,1,18,1,-1,1,9},{1,0,1,18,1,-1,1,9},{0,0,1,0,10,-1,1,9},{0,0,1,1,10,-1,1,9}}, - {{0,0,17,10,1,-1,1,4},{0,0,17,10,9,-1,1,12},{0,0,17,10,8,-1,1,4},{0,0,17,10,8,-1,1,4},{0,0,17,10,8,-1,1,3},{0,0,17,10,8,-1,1,1},{0,0,21,10,8,-1,0,1},{0,0,21,10,9,-1,1,2},{0,0,20,10,8,-1,1,23},{0,0,19,10,1,-1,1,23},{0,0,22,10,8,-1,1,20},{0,0,20,10,8,-1,1,23},{0,0,20,10,8,-1,1,23},{0,0,19,10,8,-1,1,23},{0,0,22,10,8,-1,1,20},{0,0,20,10,8,-1,1,23}}, - {{0,0,21,10,8,-1,0,1},{0,0,21,10,8,-1,0,1},{0,0,21,10,8,-1,1,2},{0,0,21,10,8,-1,1,2},{0,0,21,10,9,-1,1,15},{0,0,21,10,9,-1,1,15},{0,0,21,10,9,-1,1,15},{0,0,21,10,1,-1,1,4},{0,0,27,9,8,-1,1,6},{0,0,28,7,8,-1,1,6},{0,0,1,11,10,-1,1,9},{0,0,1,14,10,-1,1,9},{0,0,1,16,10,-1,1,9},{0,0,1,12,10,-1,1,9},{0,0,1,15,10,-1,1,9},{0,0,29,6,9,-1,1,12}}, - {{0,0,21,4,8,-1,0,21},{0,0,21,4,8,-1,0,21},{0,0,21,4,8,-1,1,21},{0,0,21,4,9,-1,1,21},{0,0,21,4,9,-1,1,21},{0,0,21,10,8,-1,1,21},{0,0,21,10,9,-1,1,21},{0,0,21,10,9,-1,1,21},{0,0,21,10,8,-1,1,2},{0,0,20,10,8,-1,1,23},{0,0,19,10,8,-1,1,23},{0,0,21,10,8,-1,0,1},{0,0,21,10,9,-1,0,18},{0,0,21,10,8,-1,1,18},{0,0,21,10,9,-1,1,2},{0,0,16,10,3,-1,1,2}}, - {{0,0,16,10,3,-1,1,2},{0,0,21,10,8,-1,1,2},{0,0,21,10,8,-1,0,2},{0,0,21,10,8,-1,1,2},{0,0,25,6,8,-1,1,16},{0,1,22,10,8,-1,1,20},{0,2,18,10,8,-1,1,8},{0,0,21,10,9,-1,0,18},{0,0,21,10,9,-1,0,18},{0,0,21,10,9,-1,0,18},{0,0,21,10,8,-1,1,2},{0,0,21,10,8,-1,1,2},{0,0,21,10,8,-1,1,2},{0,0,21,10,8,-1,1,2},{0,0,21,10,8,-1,1,2},{0,0,21,10,8,-1,1,2}}, - {{0,0,21,10,8,-1,1,2},{0,0,21,10,8,-1,0,2},{0,0,25,10,8,-1,1,2},{0,0,21,10,8,-1,1,2},{0,0,16,10,2,-1,1,2},{0,0,21,10,8,-1,1,2},{0,0,21,10,8,-1,1,4},{0,0,21,10,9,-1,1,2},{0,0,21,10,8,-1,1,4},{0,0,21,10,8,-1,1,4},{0,0,21,10,8,-1,1,4},{0,0,21,10,8,-1,1,4},{0,0,21,10,8,-1,1,2},{0,0,21,10,8,-1,1,4},{0,0,21,10,8,-1,1,4},{0,0,29,9,9,-1,1,4}}, - {{0,0,1,18,10,-1,1,30},{0,0,1,18,10,-1,1,2},{0,0,1,18,10,-1,1,2},{0,0,1,18,10,-1,1,2},{0,0,1,18,10,-1,1,2},{103,0,2,0,12,-1,0,0},{0,0,1,20,10,-1,1,9},{0,0,1,21,10,-1,1,9},{0,0,1,19,10,-1,1,9},{0,0,1,22,10,-1,1,9},{0,0,1,18,11,-1,1,9},{0,0,1,18,11,-1,1,9},{0,0,1,18,11,-1,1,9},{0,0,1,18,11,-1,1,9},{0,0,1,18,11,-1,1,9},{0,0,1,18,11,-1,1,9}}, - {{0,0,15,2,9,0,1,2},{25,0,6,0,9,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{0,0,15,2,9,4,1,1},{0,0,15,2,9,5,1,2},{0,0,15,2,9,6,1,2},{0,0,15,2,9,7,1,2},{0,0,15,2,9,8,1,2},{0,0,15,2,9,9,1,2},{0,0,25,3,9,-1,1,2},{0,0,25,3,9,-1,1,2},{0,0,25,10,9,-1,1,2},{0,1,22,10,9,-1,1,20},{0,2,18,10,9,-1,1,8},{25,0,6,0,9,-1,1,1}}, - {{0,0,15,2,9,0,1,2},{0,0,15,2,9,1,1,1},{0,0,15,2,9,2,1,1},{0,0,15,2,9,3,1,1},{0,0,15,2,9,4,1,1},{0,0,15,2,9,5,1,2},{0,0,15,2,9,6,1,2},{0,0,15,2,9,7,1,2},{0,0,15,2,9,8,1,2},{0,0,15,2,9,9,1,2},{0,0,25,3,9,-1,1,2},{0,0,25,3,9,-1,1,2},{0,0,25,10,9,-1,1,2},{0,1,22,10,9,-1,1,20},{0,2,18,10,9,-1,1,8},{103,0,2,0,12,-1,1,0}}, - {{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{0,0,23,4,8,-1,1,22},{0,0,23,4,8,-1,1,22},{0,0,23,4,8,-1,1,22},{0,0,23,4,8,-1,1,22},{0,0,23,4,8,-1,1,22},{0,0,23,4,8,-1,1,22},{0,0,23,4,8,-1,1,22},{0,0,23,4,8,-1,1,21},{0,0,23,4,9,-1,1,22},{0,0,23,4,8,-1,1,22},{0,0,23,4,8,-1,1,22},{0,0,23,4,8,-1,1,22},{0,0,23,4,8,-1,1,22},{0,0,23,4,8,-1,1,22},{0,0,23,4,8,-1,1,22},{0,0,23,4,8,-1,1,22}}, - {{0,0,23,4,8,-1,1,22},{0,0,23,4,8,-1,1,22},{0,0,23,4,8,-1,1,22},{0,0,23,4,8,-1,1,22},{0,0,23,4,8,-1,1,22},{0,0,23,4,8,-1,1,22},{0,0,23,4,8,-1,1,21},{0,0,23,4,8,-1,1,22},{0,0,23,4,8,-1,1,22},{0,0,23,4,8,-1,1,22},{0,0,23,4,8,-1,1,22},{0,0,23,4,8,-1,1,21},{0,0,23,4,8,-1,1,22},{0,0,23,4,8,-1,1,22},{0,0,23,4,8,-1,1,21},{103,0,2,4,12,-1,1,22}}, - {{103,0,2,4,12,-1,1,22},{103,0,2,4,12,-1,1,22},{103,0,2,4,12,-1,1,22},{103,0,2,4,12,-1,1,22},{103,0,2,4,12,-1,1,22},{103,0,2,4,12,-1,1,22},{103,0,2,4,12,-1,1,22},{103,0,2,4,12,-1,1,22},{103,0,2,4,12,-1,1,22},{103,0,2,4,12,-1,1,22},{103,0,2,4,12,-1,1,22},{103,0,2,4,12,-1,1,22},{103,0,2,4,12,-1,1,22},{103,0,2,4,12,-1,1,22},{103,0,2,4,12,-1,1,22},{103,0,2,4,12,-1,1,22}}, - {{1,0,12,17,7,-1,1,9},{1,0,12,17,7,-1,1,9},{1,0,12,17,7,-1,1,9},{1,0,12,17,7,-1,1,9},{1,0,12,17,7,-1,1,9},{1,0,12,17,7,-1,1,9},{1,0,12,17,7,-1,1,9},{1,0,12,17,7,-1,1,9},{1,0,12,17,7,-1,1,9},{1,0,12,17,7,-1,1,9},{1,0,12,17,7,-1,1,9},{1,0,12,17,7,-1,1,9},{1,0,12,17,7,-1,1,9},{1,0,11,17,8,-1,0,9},{1,0,11,17,8,-1,0,9},{1,0,11,17,8,-1,0,9}}, - {{1,0,11,17,8,-1,0,9},{1,0,12,17,7,-1,1,9},{1,0,11,17,8,-1,0,9},{1,0,11,17,8,-1,0,9},{1,0,11,17,8,-1,0,9},{1,0,12,17,7,-1,1,9},{1,0,12,17,7,-1,1,9},{1,0,12,17,7,-1,1,9},{1,0,12,17,7,-1,1,9},{1,0,12,17,7,-1,1,9},{1,0,12,17,7,-1,1,9},{1,0,12,17,7,-1,1,9},{1,0,12,17,7,-1,1,9},{1,0,12,17,7,-1,1,9},{1,0,12,17,7,-1,1,9},{1,0,12,17,7,-1,1,9}}, - {{1,0,12,17,7,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{0,0,26,10,9,-1,0,2},{0,0,26,10,9,-1,0,2},{0,0,9,0,9,-1,1,2},{0,0,26,10,9,-1,0,21},{0,0,26,10,8,-1,0,2},{0,0,26,10,9,-1,0,1},{0,0,26,10,9,-1,0,2},{0,0,9,0,9,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,9,-1,0,21},{0,0,5,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,0,2}}, - {{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,5,0,9,-1,0,1},{0,0,26,10,8,-1,0,2},{0,0,9,0,9,-1,1,2},{0,0,26,10,9,-1,0,22},{0,0,26,10,8,-1,0,2},{0,0,25,10,3,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2}}, - {{0,0,26,10,9,-1,0,2},{0,0,26,10,9,-1,0,1},{0,0,26,10,9,-1,0,1},{0,0,26,10,8,-1,0,2},{0,0,9,0,9,-1,1,2},{0,0,26,10,8,-1,0,2},{14,0,9,0,9,-1,1,2},{0,0,26,10,8,-1,0,2},{0,0,9,0,9,-1,1,2},{0,0,26,10,8,-1,0,2},{25,0,9,0,9,-1,1,2},{25,0,9,0,9,-1,1,1},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,26,4,3,-1,0,2},{0,0,5,0,9,-1,1,2}}, - {{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{25,0,9,0,4,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,7,0,9,-1,0,2},{0,0,7,0,9,-1,0,2},{0,0,7,0,9,-1,0,2},{0,0,7,0,9,-1,0,2},{0,0,5,0,9,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,9,-1,0,2},{0,0,5,0,9,-1,0,2},{0,0,5,0,9,-1,0,2},{0,0,9,0,9,-1,0,2},{0,0,9,0,9,-1,0,2}}, - {{0,0,25,10,9,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,9,0,9,-1,0,2},{0,0,5,0,9,-1,0,2},{0,0,5,0,9,-1,0,2},{0,0,5,0,9,-1,0,2},{0,0,5,0,9,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,25,10,8,-1,1,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{25,0,5,0,4,-1,1,2},{0,0,26,0,8,-1,0,2}}, - {{0,0,15,10,9,-1,0,2},{0,0,15,10,9,-1,0,2},{0,0,15,10,9,-1,0,2},{0,0,15,10,9,-1,0,2},{0,0,15,10,9,-1,0,1},{0,0,15,10,9,-1,0,1},{0,0,15,10,9,-1,0,2},{0,0,15,10,9,-1,0,2},{0,0,15,10,9,-1,0,2},{0,0,15,10,9,-1,0,2},{0,0,15,10,9,-1,0,2},{0,0,15,10,9,-1,0,1},{0,0,15,10,9,-1,0,2},{0,0,15,10,9,-1,0,2},{0,0,15,10,9,-1,0,1},{0,0,15,10,9,-1,0,2}}, - {{25,0,14,0,9,-1,0,1},{25,0,14,0,9,-1,0,1},{25,0,14,0,9,-1,0,1},{25,0,14,0,9,-1,0,1},{25,0,14,0,9,-1,0,1},{25,0,14,0,9,-1,0,1},{25,0,14,0,9,-1,0,1},{25,0,14,0,9,-1,0,1},{25,0,14,0,9,-1,0,1},{25,0,14,0,9,-1,0,1},{25,0,14,0,9,-1,0,1},{25,0,14,0,9,-1,0,1},{25,0,14,0,9,-1,0,2},{25,0,14,0,9,-1,0,2},{25,0,14,0,9,-1,0,2},{25,0,14,0,9,-1,0,2}}, - {{25,0,14,0,9,-1,0,1},{25,0,14,0,9,-1,0,1},{25,0,14,0,9,-1,0,1},{25,0,14,0,9,-1,0,1},{25,0,14,0,9,-1,0,1},{25,0,14,0,9,-1,0,1},{25,0,14,0,9,-1,0,1},{25,0,14,0,9,-1,0,1},{25,0,14,0,9,-1,0,1},{25,0,14,0,9,-1,0,1},{25,0,14,0,9,-1,0,2},{25,0,14,0,9,-1,0,2},{25,0,14,0,9,-1,0,2},{25,0,14,0,9,-1,0,2},{25,0,14,0,9,-1,0,2},{25,0,14,0,9,-1,0,2}}, - {{25,0,14,0,4,-1,0,2},{25,0,14,0,4,-1,0,2},{25,0,14,0,4,-1,0,2},{25,0,9,0,4,-1,0,2},{25,0,5,0,4,-1,0,2},{25,0,14,0,4,-1,0,2},{25,0,14,0,4,-1,0,2},{25,0,14,0,4,-1,0,2},{25,0,14,0,4,-1,0,2},{0,0,15,10,9,-1,0,1},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0}}, - {{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,1},{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,1},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2}}, - {{0,0,25,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,26,10,8,-1,1,2}}, - {{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2}}, - {{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2}}, - {{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,25,10,8,-1,1,1},{0,0,26,10,8,-1,1,2},{0,0,25,10,8,-1,1,1},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2}}, - {{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2}}, - {{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,1}}, - {{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,1},{0,0,25,3,8,-1,1,22},{0,0,25,4,8,-1,1,22},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,0,1},{0,0,25,10,8,-1,1,1}}, - {{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,1},{0,0,25,10,9,-1,1,1},{0,0,25,10,9,-1,1,2},{0,0,25,10,8,-1,1,1},{0,0,25,10,9,-1,1,2}}, - {{0,0,25,10,9,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,0,1},{0,0,25,10,8,-1,0,1},{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2}}, - {{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2}}, - {{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2}}, - {{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,1}}, - {{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2}}, - {{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2}}, - {{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2}}, - {{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,1},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2}}, - {{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,1}}, - {{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,15}}, - {{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,1,22,10,8,-1,1,20},{0,2,18,10,8,-1,1,8},{0,1,22,10,8,-1,1,20},{0,2,18,10,8,-1,1,8},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2}}, - {{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2}}, - {{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,1,22,10,11,-1,3,20},{0,2,18,10,11,-1,3,8},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2}}, - {{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2}}, - {{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2}}, - {{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2}}, - {{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2}}, - {{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2}}, - {{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2}}, - {{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,0,2}}, - {{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2}}, - {{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2}}, - {{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0}}, - {{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0}}, - {{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0}}, - {{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0}}, - {{0,0,15,10,9,1,0,1},{0,0,15,10,9,2,0,1},{0,0,15,10,9,3,0,1},{0,0,15,10,9,4,0,1},{0,0,15,10,9,5,0,1},{0,0,15,10,9,6,0,1},{0,0,15,10,9,7,0,1},{0,0,15,10,9,8,0,1},{0,0,15,10,9,9,0,1},{0,0,15,10,9,-1,0,1},{0,0,15,10,9,-1,0,1},{0,0,15,10,9,-1,0,1},{0,0,15,10,9,-1,0,1},{0,0,15,10,9,-1,0,1},{0,0,15,10,9,-1,0,1},{0,0,15,10,9,-1,0,1}}, - {{0,0,15,10,9,-1,0,1},{0,0,15,10,9,-1,0,1},{0,0,15,10,9,-1,0,1},{0,0,15,10,9,-1,0,1},{0,0,15,10,9,1,0,1},{0,0,15,10,9,2,0,1},{0,0,15,10,9,3,0,1},{0,0,15,10,9,4,0,1},{0,0,15,10,9,5,0,1},{0,0,15,10,9,6,0,1},{0,0,15,10,9,7,0,1},{0,0,15,10,9,8,0,1},{0,0,15,10,9,9,0,1},{0,0,15,10,9,-1,0,1},{0,0,15,10,9,-1,0,1},{0,0,15,10,9,-1,0,1}}, - {{0,0,15,10,9,-1,0,1},{0,0,15,10,9,-1,0,1},{0,0,15,10,9,-1,0,1},{0,0,15,10,9,-1,0,1},{0,0,15,10,9,-1,0,1},{0,0,15,10,9,-1,0,1},{0,0,15,10,9,-1,0,1},{0,0,15,10,9,-1,0,1},{0,0,15,2,9,1,0,1},{0,0,15,2,9,2,0,1},{0,0,15,2,9,3,0,1},{0,0,15,2,9,4,0,1},{0,0,15,2,9,5,0,1},{0,0,15,2,9,6,0,1},{0,0,15,2,9,7,0,1},{0,0,15,2,9,8,0,1}}, - {{0,0,15,2,9,9,0,1},{0,0,15,2,9,-1,0,1},{0,0,15,2,9,-1,0,1},{0,0,15,2,9,-1,0,1},{0,0,15,2,9,-1,0,1},{0,0,15,2,9,-1,0,1},{0,0,15,2,9,-1,0,1},{0,0,15,2,9,-1,0,1},{0,0,15,2,9,-1,0,1},{0,0,15,2,9,-1,0,1},{0,0,15,2,9,-1,0,1},{0,0,15,2,9,-1,0,1},{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1}}, - {{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1}}, - {{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1},{0,0,15,10,9,0,0,1},{0,0,15,10,8,-1,0,1},{0,0,15,10,8,-1,0,1},{0,0,15,10,8,-1,0,1},{0,0,15,10,8,-1,0,1},{0,0,15,10,8,-1,0,1}}, - {{0,0,15,10,8,-1,0,1},{0,0,15,10,8,-1,0,1},{0,0,15,10,8,-1,0,1},{0,0,15,10,8,-1,0,1},{0,0,15,10,8,-1,0,1},{0,0,15,10,8,1,0,1},{0,0,15,10,8,2,0,1},{0,0,15,10,8,3,0,1},{0,0,15,10,8,4,0,1},{0,0,15,10,8,5,0,1},{0,0,15,10,8,6,0,1},{0,0,15,10,8,7,0,1},{0,0,15,10,8,8,0,1},{0,0,15,10,8,9,0,1},{0,0,15,10,8,-1,0,1},{0,0,15,10,8,0,0,2}}, - {{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,1}}, - {{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2}}, - {{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2}}, - {{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,1},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2}}, - {{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2}}, - {{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,1},{0,0,25,10,8,-1,0,1},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2}}, - {{0,0,26,10,8,-1,0,1},{0,0,25,10,8,-1,0,1},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1}}, - {{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2}}, - {{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,1}}, - {{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,25,10,8,-1,0,2},{0,0,25,10,8,-1,0,2},{0,0,25,10,8,-1,0,2},{0,0,25,10,8,-1,0,2},{0,0,25,10,8,-1,0,2},{0,0,25,10,8,-1,0,2},{0,0,25,10,8,-1,0,2},{0,0,25,10,8,-1,0,2}}, - {{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1}}, - {{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,1,14},{0,0,26,10,8,-1,1,14},{0,0,26,10,8,-1,1,14},{0,0,26,10,8,-1,1,14},{0,0,26,10,8,-1,1,14},{0,0,26,10,8,-1,1,14}}, - {{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2}}, - {{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2}}, - {{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,2},{0,0,25,10,8,-1,0,1}}, - {{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,14}}, - {{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1}}, - {{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2}}, - {{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14}}, - {{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,14}}, - {{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,14}}, - {{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1}}, - {{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14}}, - {{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2}}, - {{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,23},{0,0,26,10,8,-1,0,23},{0,0,26,10,8,-1,0,23},{0,0,26,10,8,-1,0,23},{0,0,26,10,8,-1,0,23}}, - {{0,0,26,10,8,-1,0,23},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,11},{0,0,26,10,8,-1,0,11},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,1,22,10,8,-1,1,20},{0,2,18,10,8,-1,1,8},{0,1,22,10,8,-1,1,20},{0,2,18,10,8,-1,1,8},{0,1,22,10,8,-1,1,20},{0,2,18,10,8,-1,1,8},{0,1,22,10,8,-1,1,20},{0,2,18,10,8,-1,1,8}}, - {{0,1,22,10,8,-1,1,20},{0,2,18,10,8,-1,1,8},{0,1,22,10,8,-1,1,20},{0,2,18,10,8,-1,1,8},{0,1,22,10,8,-1,1,20},{0,2,18,10,8,-1,1,8},{0,0,15,10,8,1,0,1},{0,0,15,10,8,2,0,1},{0,0,15,10,8,3,0,1},{0,0,15,10,8,4,0,1},{0,0,15,10,8,5,0,1},{0,0,15,10,8,6,0,1},{0,0,15,10,8,7,0,1},{0,0,15,10,8,8,0,1},{0,0,15,10,8,9,0,1},{0,0,15,10,8,-1,0,1}}, - {{0,0,15,10,8,1,0,1},{0,0,15,10,8,2,0,1},{0,0,15,10,8,3,0,1},{0,0,15,10,8,4,0,1},{0,0,15,10,8,5,0,1},{0,0,15,10,8,6,0,1},{0,0,15,10,8,7,0,1},{0,0,15,10,8,8,0,1},{0,0,15,10,8,9,0,1},{0,0,15,10,8,-1,0,1},{0,0,15,10,8,1,0,1},{0,0,15,10,8,2,0,1},{0,0,15,10,8,3,0,1},{0,0,15,10,8,4,0,1},{0,0,15,10,8,5,0,1},{0,0,15,10,8,6,0,1}}, - {{0,0,15,10,8,7,0,1},{0,0,15,10,8,8,0,1},{0,0,15,10,8,9,0,1},{0,0,15,10,8,-1,0,1},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2}}, - {{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,1,22,10,8,-1,1,20},{0,2,18,10,8,-1,1,8},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2}}, - {{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,1,22,10,8,-1,1,20},{0,2,18,10,8,-1,1,8},{0,1,22,10,8,-1,1,20},{0,2,18,10,8,-1,1,8},{0,1,22,10,8,-1,1,20},{0,2,18,10,8,-1,1,8},{0,1,22,10,8,-1,1,20},{0,2,18,10,8,-1,1,8},{0,1,22,10,8,-1,1,20},{0,2,18,10,8,-1,1,8}}, - {{46,0,26,0,8,-1,1,2},{46,0,26,0,8,-1,1,2},{46,0,26,0,8,-1,1,2},{46,0,26,0,8,-1,1,2},{46,0,26,0,8,-1,1,2},{46,0,26,0,8,-1,1,2},{46,0,26,0,8,-1,1,2},{46,0,26,0,8,-1,1,2},{46,0,26,0,8,-1,1,2},{46,0,26,0,8,-1,1,2},{46,0,26,0,8,-1,1,2},{46,0,26,0,8,-1,1,2},{46,0,26,0,8,-1,1,2},{46,0,26,0,8,-1,1,2},{46,0,26,0,8,-1,1,2},{46,0,26,0,8,-1,1,2}}, - {{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,1,22,10,8,-1,1,20},{0,2,18,10,8,-1,1,8},{0,1,22,10,8,-1,1,20},{0,2,18,10,8,-1,1,8},{0,1,22,10,8,-1,1,20},{0,2,18,10,8,-1,1,8},{0,1,22,10,8,-1,1,20},{0,2,18,10,8,-1,1,8},{0,1,22,10,8,-1,1,20},{0,2,18,10,8,-1,1,8},{0,1,22,10,8,-1,1,20},{0,2,18,10,8,-1,1,8},{0,1,22,10,8,-1,1,20}}, - {{0,2,18,10,8,-1,1,8},{0,1,22,10,8,-1,1,20},{0,2,18,10,8,-1,1,8},{0,1,22,10,8,-1,1,20},{0,2,18,10,8,-1,1,8},{0,1,22,10,8,-1,1,20},{0,2,18,10,8,-1,1,8},{0,1,22,10,8,-1,1,20},{0,2,18,10,8,-1,1,8},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2}}, - {{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,1,22,10,8,-1,1,20},{0,2,18,10,8,-1,1,8},{0,1,22,10,8,-1,1,20},{0,2,18,10,8,-1,1,8},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2}}, - {{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,1,22,10,8,-1,1,20},{0,2,18,10,8,-1,1,8},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2}}, - {{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,9,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2}}, - {{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,9,-1,1,2},{0,0,25,10,9,-1,1,2},{0,0,25,10,9,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2}}, - {{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2}}, - {{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,25,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2}}, - {{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,0,1},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2}}, - {{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2}}, - {{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2}}, - {{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2}}, - {{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{103,0,2,0,12,-1,0,0},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2}}, - {{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0}}, - {{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2}}, - {{56,0,9,0,7,-1,1,2},{56,0,9,0,7,-1,1,2},{56,0,9,0,7,-1,1,2},{56,0,9,0,7,-1,1,2},{56,0,9,0,7,-1,1,2},{56,0,9,0,7,-1,1,2},{56,0,9,0,7,-1,1,2},{56,0,9,0,7,-1,1,2},{56,0,9,0,7,-1,1,2},{56,0,9,0,7,-1,1,2},{56,0,9,0,7,-1,1,2},{56,0,9,0,7,-1,1,2},{56,0,9,0,7,-1,1,2},{56,0,9,0,7,-1,1,2},{56,0,9,0,7,-1,1,2},{56,0,9,0,7,-1,1,2}}, - {{56,0,9,0,7,-1,1,2},{56,0,9,0,7,-1,1,2},{56,0,9,0,7,-1,1,2},{56,0,9,0,7,-1,1,2},{56,0,9,0,7,-1,1,2},{56,0,9,0,7,-1,1,2},{56,0,9,0,7,-1,1,2},{56,0,9,0,7,-1,1,2},{56,0,9,0,7,-1,1,2},{56,0,9,0,7,-1,1,2},{56,0,9,0,7,-1,1,2},{56,0,9,0,7,-1,1,2},{56,0,9,0,7,-1,1,2},{56,0,9,0,7,-1,1,2},{56,0,9,0,7,-1,1,2},{103,0,2,0,12,-1,1,0}}, - {{56,0,5,0,7,-1,1,2},{56,0,5,0,7,-1,1,2},{56,0,5,0,7,-1,1,2},{56,0,5,0,7,-1,1,2},{56,0,5,0,7,-1,1,2},{56,0,5,0,7,-1,1,2},{56,0,5,0,7,-1,1,2},{56,0,5,0,7,-1,1,2},{56,0,5,0,7,-1,1,2},{56,0,5,0,7,-1,1,2},{56,0,5,0,7,-1,1,2},{56,0,5,0,7,-1,1,2},{56,0,5,0,7,-1,1,2},{56,0,5,0,7,-1,1,2},{56,0,5,0,7,-1,1,2},{56,0,5,0,7,-1,1,2}}, - {{56,0,5,0,7,-1,1,2},{56,0,5,0,7,-1,1,2},{56,0,5,0,7,-1,1,2},{56,0,5,0,7,-1,1,2},{56,0,5,0,7,-1,1,2},{56,0,5,0,7,-1,1,2},{56,0,5,0,7,-1,1,2},{56,0,5,0,7,-1,1,2},{56,0,5,0,7,-1,1,2},{56,0,5,0,7,-1,1,2},{56,0,5,0,7,-1,1,2},{56,0,5,0,7,-1,1,2},{56,0,5,0,7,-1,1,2},{56,0,5,0,7,-1,1,2},{56,0,5,0,7,-1,1,2},{103,0,2,0,12,-1,1,0}}, - {{25,0,9,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,9,0,3,-1,1,2},{25,0,9,0,3,-1,1,2},{25,0,9,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,9,0,4,-1,1,2}}, - {{25,0,9,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,5,0,3,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,9,0,4,-1,1,2}}, - {{7,0,9,0,7,-1,1,2},{7,0,5,0,7,-1,1,2},{7,0,9,0,7,-1,1,2},{7,0,5,0,7,-1,1,2},{7,0,9,0,7,-1,1,2},{7,0,5,0,7,-1,1,2},{7,0,9,0,7,-1,1,2},{7,0,5,0,7,-1,1,2},{7,0,9,0,7,-1,1,2},{7,0,5,0,7,-1,1,2},{7,0,9,0,7,-1,1,2},{7,0,5,0,7,-1,1,2},{7,0,9,0,7,-1,1,2},{7,0,5,0,7,-1,1,2},{7,0,9,0,7,-1,1,2},{7,0,5,0,7,-1,1,2}}, - {{7,0,9,0,7,-1,1,2},{7,0,5,0,7,-1,1,2},{7,0,9,0,7,-1,1,2},{7,0,5,0,7,-1,1,2},{7,0,5,0,7,-1,1,2},{7,0,26,10,8,-1,1,2},{7,0,26,10,8,-1,1,2},{7,0,26,10,8,-1,1,2},{7,0,26,10,8,-1,1,2},{7,0,26,10,8,-1,1,2},{7,0,26,10,8,-1,1,2},{7,0,9,0,7,-1,1,2},{7,0,5,0,7,-1,1,2},{7,0,9,0,7,-1,1,2},{7,0,5,0,7,-1,1,2},{7,0,12,17,7,-1,1,9}}, - {{7,0,12,17,7,-1,1,9},{7,0,12,17,7,-1,1,9},{7,0,9,0,7,-1,1,2},{7,0,5,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{7,0,21,10,8,-1,1,11},{7,0,21,10,8,-1,1,4},{7,0,21,10,8,-1,1,4},{7,0,21,10,8,-1,1,4},{7,0,15,10,8,-1,1,2},{7,0,21,10,8,-1,1,11},{7,0,21,10,8,-1,1,4}}, - {{12,0,5,0,4,-1,1,2},{12,0,5,0,4,-1,1,2},{12,0,5,0,4,-1,1,2},{12,0,5,0,4,-1,1,2},{12,0,5,0,4,-1,1,2},{12,0,5,0,4,-1,1,2},{12,0,5,0,4,-1,1,2},{12,0,5,0,4,-1,1,2},{12,0,5,0,4,-1,1,2},{12,0,5,0,4,-1,1,2},{12,0,5,0,4,-1,1,2},{12,0,5,0,4,-1,1,2},{12,0,5,0,4,-1,1,2},{12,0,5,0,4,-1,1,2},{12,0,5,0,4,-1,1,2},{12,0,5,0,4,-1,1,2}}, - {{12,0,5,0,4,-1,1,2},{12,0,5,0,4,-1,1,2},{12,0,5,0,4,-1,1,2},{12,0,5,0,4,-1,1,2},{12,0,5,0,4,-1,1,2},{12,0,5,0,4,-1,1,2},{103,0,2,0,12,-1,1,0},{12,0,5,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{12,0,5,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{60,0,7,0,5,-1,1,2},{60,0,7,0,5,-1,1,2},{60,0,7,0,5,-1,1,2},{60,0,7,0,5,-1,1,2},{60,0,7,0,5,-1,1,2},{60,0,7,0,5,-1,1,2},{60,0,7,0,5,-1,1,2},{60,0,7,0,5,-1,1,2},{60,0,7,0,5,-1,1,2},{60,0,7,0,5,-1,1,2},{60,0,7,0,5,-1,1,2},{60,0,7,0,5,-1,1,2},{60,0,7,0,5,-1,1,2},{60,0,7,0,5,-1,1,2},{60,0,7,0,5,-1,1,2},{60,0,7,0,5,-1,1,2}}, - {{60,0,7,0,5,-1,1,2},{60,0,7,0,5,-1,1,2},{60,0,7,0,5,-1,1,2},{60,0,7,0,5,-1,1,2},{60,0,7,0,5,-1,1,2},{60,0,7,0,5,-1,1,2},{60,0,7,0,5,-1,1,2},{60,0,7,0,5,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{60,0,6,0,9,-1,1,2}}, - {{60,0,21,0,8,-1,1,4},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{60,0,12,17,5,-1,1,9}}, - {{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0}}, - {{8,0,12,17,4,-1,1,9},{8,0,12,17,4,-1,1,9},{8,0,12,17,4,-1,1,9},{8,0,12,17,4,-1,1,9},{8,0,12,17,4,-1,1,9},{8,0,12,17,4,-1,1,9},{8,0,12,17,4,-1,1,9},{8,0,12,17,4,-1,1,9},{8,0,12,17,4,-1,1,9},{8,0,12,17,4,-1,1,9},{8,0,12,17,4,-1,1,9},{8,0,12,17,4,-1,1,9},{8,0,12,17,4,-1,1,9},{8,0,12,17,4,-1,1,9},{8,0,12,17,4,-1,1,9},{8,0,12,17,4,-1,1,9}}, - {{0,0,21,10,8,-1,1,23},{0,0,21,10,8,-1,1,23},{0,0,20,10,8,-1,1,23},{0,0,19,10,8,-1,1,23},{0,0,20,10,8,-1,1,23},{0,0,19,10,8,-1,1,23},{0,0,21,10,8,-1,1,23},{0,0,21,10,8,-1,1,23},{0,0,21,10,8,-1,1,23},{0,0,20,10,8,-1,1,23},{0,0,19,10,8,-1,1,23},{0,0,21,10,8,-1,1,23},{0,0,20,10,8,-1,1,23},{0,0,19,10,8,-1,1,23},{0,0,21,10,8,-1,1,4},{0,0,21,10,8,-1,1,4}}, - {{0,0,21,10,8,-1,1,4},{0,0,21,10,8,-1,1,4},{0,0,21,10,8,-1,1,4},{0,0,21,10,8,-1,1,4},{0,0,21,10,8,-1,1,4},{0,0,21,10,8,-1,1,4},{0,0,21,10,8,-1,1,2},{0,0,17,10,8,-1,1,4},{0,0,21,10,8,-1,1,20},{0,0,21,10,8,-1,1,4},{0,0,17,10,8,-1,1,2},{0,0,21,10,8,-1,1,2},{0,0,20,10,8,-1,1,23},{0,0,19,10,8,-1,1,23},{0,0,21,10,8,-1,1,2},{0,0,21,10,8,-1,1,2}}, - {{0,0,20,10,8,-1,1,23},{0,0,19,10,8,-1,1,23},{0,1,22,10,8,-1,1,20},{0,2,18,10,8,-1,1,8},{0,1,22,10,8,-1,1,20},{0,2,18,10,8,-1,1,8},{0,1,22,10,8,-1,1,20},{0,2,18,10,8,-1,1,8},{0,1,22,10,8,-1,1,20},{0,2,18,10,8,-1,1,8},{0,0,21,10,8,-1,1,4},{0,0,21,10,8,-1,1,4},{0,0,21,10,8,-1,1,4},{0,0,21,10,8,-1,1,4},{0,0,21,10,8,-1,1,11},{0,0,6,10,8,-1,1,2}}, - {{0,0,21,10,8,-1,1,4},{0,0,21,10,8,-1,1,4},{0,0,21,10,8,-1,1,2},{0,0,21,10,8,-1,1,4},{0,0,21,10,8,-1,1,4},{0,0,21,10,8,-1,1,2},{0,0,21,10,8,-1,1,2},{0,0,21,10,8,-1,1,2},{0,0,21,10,8,-1,1,2},{0,0,21,10,8,-1,1,2},{0,0,17,10,8,-1,1,3},{0,0,17,10,8,-1,1,3},{0,0,21,10,8,-1,1,4},{0,0,21,10,8,-1,1,4},{0,0,21,10,8,-1,1,4},{0,0,21,10,8,-1,1,2}}, - {{0,0,17,10,8,-1,1,4},{0,0,21,10,8,-1,1,4},{0,0,22,10,8,-1,1,20},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{17,0,26,10,8,-1,0,14},{17,0,26,10,8,-1,0,14},{17,0,26,10,8,-1,0,14},{17,0,26,10,8,-1,0,14},{17,0,26,10,8,-1,0,14},{17,0,26,10,8,-1,0,14},{17,0,26,10,8,-1,0,14},{17,0,26,10,8,-1,0,14},{17,0,26,10,8,-1,0,14},{17,0,26,10,8,-1,0,14},{17,0,26,10,8,-1,0,14},{17,0,26,10,8,-1,0,14},{17,0,26,10,8,-1,0,14},{17,0,26,10,8,-1,0,14},{17,0,26,10,8,-1,0,14},{17,0,26,10,8,-1,0,14}}, - {{17,0,26,10,8,-1,0,14},{17,0,26,10,8,-1,0,14},{17,0,26,10,8,-1,0,14},{17,0,26,10,8,-1,0,14},{17,0,26,10,8,-1,0,14},{17,0,26,10,8,-1,0,14},{17,0,26,10,8,-1,0,14},{17,0,26,10,8,-1,0,14},{17,0,26,10,8,-1,0,14},{17,0,26,10,8,-1,0,14},{103,0,2,0,12,-1,0,0},{17,0,26,10,8,-1,0,14},{17,0,26,10,8,-1,0,14},{17,0,26,10,8,-1,0,14},{17,0,26,10,8,-1,0,14},{17,0,26,10,9,-1,0,14}}, - {{17,0,26,10,8,-1,0,14},{17,0,26,10,8,-1,0,14},{17,0,26,10,8,-1,0,14},{17,0,26,10,9,-1,0,14},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0}}, - {{17,0,26,10,9,-1,0,14},{17,0,26,10,9,-1,0,14},{17,0,26,10,9,-1,0,14},{17,0,26,10,9,-1,0,14},{17,0,26,10,9,-1,0,14},{17,0,26,10,9,-1,0,14},{17,0,26,10,9,-1,0,14},{17,0,26,10,9,-1,0,14},{17,0,26,10,9,-1,0,14},{17,0,26,10,9,-1,0,14},{17,0,26,10,9,-1,0,14},{17,0,26,10,9,-1,0,14},{17,0,26,10,9,-1,0,14},{17,0,26,10,9,-1,0,14},{17,0,26,10,9,-1,0,14},{17,0,26,10,9,-1,0,14}}, - {{17,0,26,10,9,-1,0,14},{17,0,26,10,9,-1,0,14},{17,0,26,10,9,-1,0,14},{17,0,26,10,9,-1,0,14},{17,0,26,10,9,-1,0,14},{17,0,26,10,9,-1,0,14},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0}}, - {{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0}}, - {{0,0,29,9,9,-1,0,4},{0,0,21,10,8,-1,2,8},{0,0,21,10,8,-1,2,8},{0,0,21,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{17,0,6,0,0,-1,0,18},{0,0,7,0,0,-1,0,14},{17,0,14,0,0,-1,0,14},{0,1,22,10,8,-1,3,20},{0,2,18,10,8,-1,3,8},{0,1,22,10,8,-1,3,20},{0,2,18,10,8,-1,3,8},{0,1,22,10,8,-1,3,20},{0,2,18,10,8,-1,3,8},{0,1,22,10,8,-1,3,20},{0,2,18,10,8,-1,3,8}}, - {{0,1,22,10,8,-1,3,20},{0,2,18,10,8,-1,3,8},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,1,22,10,8,-1,3,20},{0,2,18,10,8,-1,3,8},{0,1,22,10,8,-1,3,20},{0,2,18,10,8,-1,3,8},{0,1,22,10,8,-1,3,20},{0,2,18,10,8,-1,3,8},{0,1,22,10,8,-1,3,20},{0,2,18,10,8,-1,3,8},{0,0,17,10,8,-1,3,18},{0,0,22,10,8,-1,3,20},{0,0,18,10,8,-1,3,8},{0,0,18,10,8,-1,3,8}}, - {{0,0,26,10,8,-1,0,14},{17,0,14,0,3,-1,0,14},{17,0,14,0,3,-1,0,14},{17,0,14,0,3,-1,0,14},{17,0,14,0,3,-1,0,14},{17,0,14,0,3,-1,0,14},{17,0,14,0,3,-1,0,14},{17,0,14,0,3,-1,0,14},{17,0,14,0,3,-1,0,14},{17,0,14,0,3,-1,0,14},{1,0,12,17,3,-1,0,9},{1,0,12,17,3,-1,0,9},{1,0,12,17,3,-1,0,9},{1,0,12,17,3,-1,0,9},{18,0,10,0,4,-1,0,9},{18,0,10,0,4,-1,0,9}}, - {{0,0,17,10,8,-1,3,14},{0,0,6,0,3,-1,0,14},{0,0,6,0,3,-1,0,14},{0,0,6,0,3,-1,0,14},{0,0,6,0,3,-1,0,14},{0,0,6,0,3,-1,0,9},{0,0,26,10,9,-1,0,14},{0,0,26,10,8,-1,0,14},{17,0,14,0,9,-1,0,14},{17,0,14,0,9,-1,0,14},{17,0,14,0,9,-1,0,14},{17,0,6,0,3,-1,0,18},{0,0,7,0,3,-1,0,18},{0,0,21,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14}}, - {{103,0,2,0,12,-1,0,0},{20,0,7,0,0,-1,2,37},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,2,37},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,2,37},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,2,37},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,2,37},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14}}, - {{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14}}, - {{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,2,37},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14}}, - {{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,2,37},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,2,37},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,2,37},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,2,37},{20,0,7,0,0,-1,0,14}}, - {{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,0,14},{20,0,7,0,0,-1,2,37},{20,0,7,0,0,-1,2,37},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{1,0,12,17,0,-1,0,9},{1,0,12,17,0,-1,0,9},{0,0,24,10,9,-1,2,18},{0,0,24,10,9,-1,2,18},{20,0,6,0,0,-1,0,18},{20,0,6,0,0,-1,0,18},{20,0,7,0,9,-1,0,14}}, - {{0,0,17,10,1,-1,3,18},{22,0,7,0,0,-1,2,37},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,2,37},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,2,37},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,2,37},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,2,37},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14}}, - {{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14}}, - {{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,2,37},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14}}, - {{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,2,37},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,2,37},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,2,37},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,2,37},{22,0,7,0,0,-1,0,14}}, - {{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,2,37},{22,0,7,0,0,-1,2,37},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{22,0,7,0,0,-1,0,14},{0,0,21,10,1,-1,0,18},{0,0,6,0,0,-1,3,37},{22,0,6,0,0,-1,0,18},{22,0,6,0,0,-1,0,18},{22,0,7,0,9,-1,0,14}}, - {{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14}}, - {{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14}}, - {{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,2,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0}}, - {{103,0,2,0,12,-1,0,0},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14}}, - {{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14}}, - {{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,10,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14}}, - {{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{18,0,7,0,9,-1,0,14},{103,0,2,0,12,-1,0,0}}, - {{0,0,26,0,8,-1,0,14},{0,0,26,0,8,-1,0,14},{0,0,15,0,9,-1,0,14},{0,0,15,0,9,-1,0,14},{0,0,15,0,9,-1,0,14},{0,0,15,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14}}, - {{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{5,0,7,0,0,-1,0,14},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0}}, - {{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14}}, - {{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0}}, - {{22,0,7,0,3,-1,2,37},{22,0,7,0,3,-1,2,37},{22,0,7,0,3,-1,2,37},{22,0,7,0,3,-1,2,37},{22,0,7,0,3,-1,2,37},{22,0,7,0,3,-1,2,37},{22,0,7,0,3,-1,2,37},{22,0,7,0,3,-1,2,37},{22,0,7,0,3,-1,2,37},{22,0,7,0,3,-1,2,37},{22,0,7,0,3,-1,2,37},{22,0,7,0,3,-1,2,37},{22,0,7,0,3,-1,2,37},{22,0,7,0,3,-1,2,37},{22,0,7,0,3,-1,2,37},{22,0,7,0,3,-1,2,37}}, - {{18,0,26,0,9,-1,0,14},{18,0,26,0,9,-1,0,14},{18,0,26,0,9,-1,0,14},{18,0,26,0,9,-1,0,14},{18,0,26,0,9,-1,0,14},{18,0,26,0,9,-1,0,14},{18,0,26,0,9,-1,0,14},{18,0,26,0,9,-1,0,14},{18,0,26,0,9,-1,0,14},{18,0,26,0,9,-1,0,14},{18,0,26,0,9,-1,0,14},{18,0,26,0,9,-1,0,14},{18,0,26,0,9,-1,0,14},{18,0,26,0,9,-1,0,14},{18,0,26,0,9,-1,0,14},{18,0,26,0,9,-1,0,14}}, - {{18,0,26,0,9,-1,0,14},{18,0,26,0,9,-1,0,14},{18,0,26,0,9,-1,0,14},{18,0,26,0,9,-1,0,14},{18,0,26,0,9,-1,0,14},{18,0,26,0,9,-1,0,14},{18,0,26,0,9,-1,0,14},{18,0,26,0,9,-1,0,14},{18,0,26,0,9,-1,0,14},{18,0,26,0,9,-1,0,14},{18,0,26,0,9,-1,0,14},{18,0,26,0,9,-1,0,14},{18,0,26,0,9,-1,0,14},{18,0,26,10,9,-1,0,14},{18,0,26,10,9,-1,0,14},{103,0,2,0,12,-1,0,0}}, - {{0,0,15,0,9,-1,0,14},{0,0,15,0,9,-1,0,14},{0,0,15,0,9,-1,0,14},{0,0,15,0,9,-1,0,14},{0,0,15,0,9,-1,0,14},{0,0,15,0,9,-1,0,14},{0,0,15,0,9,-1,0,14},{0,0,15,0,9,-1,0,14},{0,0,15,0,9,-1,0,14},{0,0,15,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14}}, - {{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14}}, - {{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,15,0,8,-1,0,1},{0,0,15,0,8,-1,0,1},{0,0,15,0,8,-1,0,1},{0,0,15,0,8,-1,0,1},{0,0,15,0,8,-1,0,1},{0,0,15,0,8,-1,0,1},{0,0,15,0,8,-1,0,1},{0,0,15,0,8,-1,0,1}}, - {{0,0,26,10,9,-1,0,14},{0,0,15,10,9,-1,0,14},{0,0,15,10,9,-1,0,14},{0,0,15,10,9,-1,0,14},{0,0,15,10,9,-1,0,14},{0,0,15,10,9,-1,0,14},{0,0,15,10,9,-1,0,14},{0,0,15,10,9,-1,0,14},{0,0,15,10,9,-1,0,14},{0,0,15,10,9,-1,0,14},{0,0,15,10,9,-1,0,14},{0,0,15,10,9,-1,0,14},{0,0,15,10,9,-1,0,14},{0,0,15,10,9,-1,0,14},{0,0,15,10,9,-1,0,14},{0,0,15,10,9,-1,0,14}}, - {{18,0,26,0,9,-1,0,14},{18,0,26,0,9,-1,0,14},{18,0,26,0,9,-1,0,14},{18,0,26,0,9,-1,0,14},{18,0,26,0,9,-1,0,14},{18,0,26,0,9,-1,0,14},{18,0,26,0,9,-1,0,14},{18,0,26,0,9,-1,0,14},{18,0,26,0,9,-1,0,14},{18,0,26,0,9,-1,0,14},{18,0,26,0,9,-1,0,14},{18,0,26,0,9,-1,0,14},{18,0,26,10,9,-1,0,14},{18,0,26,10,9,-1,0,14},{18,0,26,10,9,-1,0,14},{0,0,26,0,8,-1,0,14}}, - {{0,0,26,0,9,-1,0,14},{0,0,15,10,9,-1,0,14},{0,0,15,10,9,-1,0,14},{0,0,15,10,9,-1,0,14},{0,0,15,10,9,-1,0,14},{0,0,15,10,9,-1,0,14},{0,0,15,10,9,-1,0,14},{0,0,15,10,9,-1,0,14},{0,0,15,10,9,-1,0,14},{0,0,15,10,9,-1,0,14},{0,0,15,10,9,-1,0,14},{0,0,15,10,9,-1,0,14},{0,0,15,10,9,-1,0,14},{0,0,15,10,9,-1,0,14},{0,0,15,10,9,-1,0,14},{0,0,15,10,9,-1,0,14}}, - {{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,10,9,-1,0,14},{0,0,26,10,9,-1,0,14},{0,0,26,10,9,-1,0,14},{0,0,26,10,9,-1,0,14}}, - {{22,0,26,0,9,-1,0,14},{22,0,26,0,9,-1,0,14},{22,0,26,0,9,-1,0,14},{22,0,26,0,9,-1,0,14},{22,0,26,0,9,-1,0,14},{22,0,26,0,9,-1,0,14},{22,0,26,0,9,-1,0,14},{22,0,26,0,9,-1,0,14},{22,0,26,0,9,-1,0,14},{22,0,26,0,9,-1,0,14},{22,0,26,0,9,-1,0,14},{22,0,26,0,9,-1,0,14},{22,0,26,0,9,-1,0,14},{22,0,26,0,9,-1,0,14},{22,0,26,0,9,-1,0,14},{22,0,26,0,9,-1,0,14}}, - {{22,0,26,0,9,-1,0,14},{22,0,26,0,9,-1,0,14},{22,0,26,0,9,-1,0,14},{22,0,26,0,9,-1,0,14},{22,0,26,0,9,-1,0,14},{22,0,26,0,9,-1,0,14},{22,0,26,0,9,-1,0,14},{22,0,26,0,9,-1,0,14},{22,0,26,0,9,-1,0,14},{22,0,26,0,9,-1,0,14},{22,0,26,0,9,-1,0,14},{22,0,26,0,9,-1,0,14},{22,0,26,0,9,-1,0,14},{22,0,26,0,9,-1,0,14},{22,0,26,0,9,-1,0,14},{103,0,2,0,12,-1,0,0}}, - {{22,0,26,0,9,-1,2,14},{22,0,26,0,9,-1,2,14},{22,0,26,0,9,-1,2,14},{22,0,26,0,9,-1,2,14},{22,0,26,0,9,-1,2,14},{22,0,26,0,9,-1,2,14},{22,0,26,0,9,-1,2,14},{22,0,26,0,9,-1,2,14},{22,0,26,0,9,-1,2,14},{22,0,26,0,9,-1,2,14},{22,0,26,0,9,-1,2,14},{22,0,26,0,9,-1,2,14},{22,0,26,0,9,-1,2,14},{22,0,26,0,9,-1,2,14},{22,0,26,0,9,-1,2,14},{22,0,26,0,9,-1,2,14}}, - {{22,0,26,0,9,-1,2,14},{22,0,26,0,9,-1,2,14},{22,0,26,0,9,-1,2,14},{22,0,26,0,9,-1,2,14},{22,0,26,0,9,-1,2,14},{22,0,26,0,9,-1,2,14},{22,0,26,0,9,-1,2,14},{22,0,26,0,9,-1,2,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14}}, - {{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,10,9,-1,0,14},{0,0,26,10,9,-1,0,14},{0,0,26,10,9,-1,0,14},{0,0,26,10,9,-1,0,14},{0,0,26,0,9,-1,2,14},{0,0,26,0,9,-1,2,14},{0,0,26,0,9,-1,2,14},{0,0,26,0,9,-1,2,14},{0,0,26,0,9,-1,2,14}}, - {{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,10,9,-1,0,14},{0,0,26,10,9,-1,0,14}}, - {{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,10,9,-1,0,14}}, - {{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14}}, - {{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14}}, - {{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14}}, - {{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14}}, - {{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14},{41,0,6,0,5,-1,0,18},{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14}}, - {{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14},{41,0,7,0,5,-1,0,14},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0}}, - {{41,0,26,10,8,-1,0,14},{41,0,26,10,8,-1,0,14},{41,0,26,10,8,-1,0,14},{41,0,26,10,8,-1,0,14},{41,0,26,10,8,-1,0,14},{41,0,26,10,8,-1,0,14},{41,0,26,10,8,-1,0,14},{41,0,26,10,8,-1,0,14},{41,0,26,10,8,-1,0,14},{41,0,26,10,8,-1,0,14},{41,0,26,10,8,-1,0,14},{41,0,26,10,8,-1,0,14},{41,0,26,10,8,-1,0,14},{41,0,26,10,8,-1,0,14},{41,0,26,10,8,-1,0,14},{41,0,26,10,8,-1,0,14}}, - {{41,0,26,10,8,-1,0,14},{41,0,26,10,8,-1,0,14},{41,0,26,10,8,-1,0,14},{41,0,26,10,8,-1,0,14},{41,0,26,10,8,-1,0,14},{41,0,26,10,8,-1,0,14},{41,0,26,10,8,-1,0,14},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0}}, - {{131,0,7,0,6,-1,1,2},{131,0,7,0,6,-1,1,2},{131,0,7,0,6,-1,1,2},{131,0,7,0,6,-1,1,2},{131,0,7,0,6,-1,1,2},{131,0,7,0,6,-1,1,2},{131,0,7,0,6,-1,1,2},{131,0,7,0,6,-1,1,2},{131,0,7,0,6,-1,1,2},{131,0,7,0,6,-1,1,2},{131,0,7,0,6,-1,1,2},{131,0,7,0,6,-1,1,2},{131,0,7,0,6,-1,1,2},{131,0,7,0,6,-1,1,2},{131,0,7,0,6,-1,1,2},{131,0,7,0,6,-1,1,2}}, - {{131,0,7,0,6,-1,1,2},{131,0,7,0,6,-1,1,2},{131,0,7,0,6,-1,1,2},{131,0,7,0,6,-1,1,2},{131,0,7,0,6,-1,1,2},{131,0,7,0,6,-1,1,2},{131,0,7,0,6,-1,1,2},{131,0,7,0,6,-1,1,2},{131,0,6,0,6,-1,1,2},{131,0,6,0,6,-1,1,2},{131,0,6,0,6,-1,1,2},{131,0,6,0,6,-1,1,2},{131,0,6,0,6,-1,1,2},{131,0,6,0,6,-1,1,2},{131,0,21,0,8,-1,1,4},{131,0,21,0,8,-1,1,4}}, - {{99,0,7,0,6,-1,1,2},{99,0,7,0,6,-1,1,2},{99,0,7,0,6,-1,1,2},{99,0,7,0,6,-1,1,2},{99,0,7,0,6,-1,1,2},{99,0,7,0,6,-1,1,2},{99,0,7,0,6,-1,1,2},{99,0,7,0,6,-1,1,2},{99,0,7,0,6,-1,1,2},{99,0,7,0,6,-1,1,2},{99,0,7,0,6,-1,1,2},{99,0,7,0,6,-1,1,2},{99,0,7,0,6,-1,1,2},{99,0,7,0,6,-1,1,2},{99,0,7,0,6,-1,1,2},{99,0,7,0,6,-1,1,2}}, - {{99,0,7,0,6,-1,1,2},{99,0,7,0,6,-1,1,2},{99,0,7,0,6,-1,1,2},{99,0,7,0,6,-1,1,2},{99,0,7,0,6,-1,1,2},{99,0,7,0,6,-1,1,2},{99,0,7,0,6,-1,1,2},{99,0,7,0,6,-1,1,2},{99,0,7,0,6,-1,1,2},{99,0,7,0,6,-1,1,2},{99,0,7,0,6,-1,1,2},{99,0,7,0,6,-1,1,2},{99,0,6,0,6,-1,1,2},{99,0,21,10,8,-1,1,4},{99,0,21,10,8,-1,1,11},{99,0,21,10,8,-1,1,4}}, - {{99,0,13,0,6,0,1,19},{99,0,13,0,6,1,1,19},{99,0,13,0,6,2,1,19},{99,0,13,0,6,3,1,19},{99,0,13,0,6,4,1,19},{99,0,13,0,6,5,1,19},{99,0,13,0,6,6,1,19},{99,0,13,0,6,7,1,19},{99,0,13,0,6,8,1,19},{99,0,13,0,6,9,1,19},{99,0,7,0,6,-1,1,2},{99,0,7,0,6,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{8,0,9,0,0,-1,1,2},{8,0,5,0,0,-1,1,2},{8,0,9,0,4,-1,1,2},{8,0,5,0,4,-1,1,2},{8,0,9,0,4,-1,1,2},{8,0,5,0,4,-1,1,2},{8,0,9,0,4,-1,1,2},{8,0,5,0,4,-1,1,2},{8,0,9,0,4,-1,1,2},{8,0,5,0,4,-1,1,2},{8,0,9,0,4,-1,1,2},{8,0,5,0,4,-1,1,2},{8,0,9,0,4,-1,1,2},{8,0,5,0,4,-1,1,2},{8,0,7,0,4,-1,1,2},{8,0,12,17,2,-1,1,9}}, - {{8,0,11,17,8,-1,1,9},{8,0,11,17,8,-1,1,9},{8,0,11,17,8,-1,1,9},{8,0,21,10,8,-1,1,2},{8,0,12,17,0,-1,1,9},{8,0,12,17,0,-1,1,9},{8,0,12,17,0,-1,1,9},{8,0,12,17,0,-1,1,9},{8,0,12,17,0,-1,1,9},{8,0,12,17,0,-1,1,9},{8,0,12,17,0,-1,1,9},{8,0,12,17,0,-1,1,9},{8,0,12,17,2,-1,1,9},{8,0,12,17,2,-1,1,9},{8,0,21,10,8,-1,1,2},{8,0,6,10,0,-1,1,2}}, - {{8,0,9,0,4,-1,1,2},{8,0,5,0,4,-1,1,2},{8,0,9,0,4,-1,1,2},{8,0,5,0,4,-1,1,2},{8,0,9,0,4,-1,1,2},{8,0,5,0,4,-1,1,2},{8,0,9,0,4,-1,1,2},{8,0,5,0,4,-1,1,2},{8,0,9,0,4,-1,1,2},{8,0,5,0,4,-1,1,2},{8,0,9,0,4,-1,1,2},{8,0,5,0,4,-1,1,2},{8,0,6,0,9,-1,1,2},{8,0,6,0,9,-1,1,2},{8,0,12,17,2,-1,1,9},{8,0,12,17,0,-1,1,9}}, - {{130,0,7,0,6,-1,1,2},{130,0,7,0,6,-1,1,2},{130,0,7,0,6,-1,1,2},{130,0,7,0,6,-1,1,2},{130,0,7,0,6,-1,1,2},{130,0,7,0,6,-1,1,2},{130,0,7,0,6,-1,1,2},{130,0,7,0,6,-1,1,2},{130,0,7,0,6,-1,1,2},{130,0,7,0,6,-1,1,2},{130,0,7,0,6,-1,1,2},{130,0,7,0,6,-1,1,2},{130,0,7,0,6,-1,1,2},{130,0,7,0,6,-1,1,2},{130,0,7,0,6,-1,1,2},{130,0,7,0,6,-1,1,2}}, - {{130,0,7,0,6,-1,1,2},{130,0,7,0,6,-1,1,2},{130,0,7,0,6,-1,1,2},{130,0,7,0,6,-1,1,2},{130,0,7,0,6,-1,1,2},{130,0,7,0,6,-1,1,2},{130,0,14,0,6,-1,1,2},{130,0,14,0,6,-1,1,2},{130,0,14,0,6,-1,1,2},{130,0,14,0,6,-1,1,2},{130,0,14,0,6,-1,1,2},{130,0,14,0,6,-1,1,2},{130,0,14,0,6,-1,1,2},{130,0,14,0,6,-1,1,2},{130,0,14,0,6,-1,1,2},{130,0,14,0,6,-1,1,2}}, - {{130,0,12,17,6,-1,1,9},{130,0,12,17,6,-1,1,9},{130,0,21,0,8,-1,1,2},{130,0,21,0,8,-1,1,4},{130,0,21,0,8,-1,1,4},{130,0,21,0,8,-1,1,4},{130,0,21,0,8,-1,1,4},{130,0,21,0,8,-1,1,4},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{0,0,24,10,8,-1,1,2},{0,0,24,10,8,-1,1,2},{0,0,24,10,8,-1,1,2},{0,0,24,10,8,-1,1,2},{0,0,24,10,8,-1,1,2},{0,0,24,10,8,-1,1,2},{0,0,24,10,8,-1,1,2},{0,0,6,10,0,-1,1,2},{0,0,6,10,0,-1,1,2},{0,0,6,10,0,-1,1,2},{0,0,6,10,0,-1,1,2},{0,0,6,10,0,-1,1,2},{0,0,6,10,0,-1,1,2},{0,0,6,10,0,-1,1,2},{0,0,6,10,0,-1,1,2},{0,0,6,10,0,-1,1,2}}, - {{0,0,24,10,8,-1,1,2},{0,0,24,10,8,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,5,0,4,-1,1,2}}, - {{25,0,5,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,5,0,4,-1,1,2}}, - {{25,0,9,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,5,0,4,-1,1,2}}, - {{25,0,6,0,9,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,5,0,4,-1,1,2}}, - {{25,0,9,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{0,0,6,10,0,-1,1,2},{0,0,24,0,8,-1,1,2},{0,0,24,0,8,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,7,0,2,-1,1,2}}, - {{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,5,0,4,-1,1,2}}, - {{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,9,0,0,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,9,0,4,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{25,0,9,0,4,-1,1,2},{25,0,9,0,4,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,9,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{25,0,7,0,4,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,5,0,0,-1,1,2},{25,0,7,0,4,-1,1,2},{25,0,7,0,4,-1,1,2},{25,0,7,0,4,-1,1,2},{25,0,7,0,4,-1,1,2},{25,0,7,0,4,-1,1,2}}, - {{58,0,7,0,6,-1,1,2},{58,0,7,0,6,-1,1,2},{58,0,12,17,6,-1,1,9},{58,0,7,0,6,-1,1,2},{58,0,7,0,6,-1,1,2},{58,0,7,0,6,-1,1,2},{58,0,12,17,6,-1,1,9},{58,0,7,0,6,-1,1,2},{58,0,7,0,6,-1,1,2},{58,0,7,0,6,-1,1,2},{58,0,7,0,6,-1,1,2},{58,0,12,17,6,-1,1,9},{58,0,7,0,6,-1,1,2},{58,0,7,0,6,-1,1,2},{58,0,7,0,6,-1,1,2},{58,0,7,0,6,-1,1,2}}, - {{58,0,7,0,6,-1,1,2},{58,0,7,0,6,-1,1,2},{58,0,7,0,6,-1,1,2},{58,0,7,0,6,-1,1,2},{58,0,7,0,6,-1,1,2},{58,0,7,0,6,-1,1,2},{58,0,7,0,6,-1,1,2},{58,0,7,0,6,-1,1,2},{58,0,7,0,6,-1,1,2},{58,0,7,0,6,-1,1,2},{58,0,7,0,6,-1,1,2},{58,0,7,0,6,-1,1,2},{58,0,7,0,6,-1,1,2},{58,0,7,0,6,-1,1,2},{58,0,7,0,6,-1,1,2},{58,0,7,0,6,-1,1,2}}, - {{58,0,7,0,6,-1,1,2},{58,0,7,0,6,-1,1,2},{58,0,7,0,6,-1,1,2},{58,0,10,0,6,-1,1,9},{58,0,10,0,6,-1,1,9},{58,0,12,17,6,-1,1,9},{58,0,12,17,6,-1,1,9},{58,0,10,0,6,-1,1,9},{58,0,26,10,8,-1,1,2},{58,0,26,10,8,-1,1,2},{58,0,26,10,8,-1,1,2},{58,0,26,10,8,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{0,0,15,0,8,-1,1,2},{0,0,15,0,8,-1,1,2},{0,0,15,0,8,-1,1,2},{0,0,15,0,8,-1,1,2},{0,0,15,0,8,-1,1,2},{0,0,15,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,23,4,8,-1,1,21},{0,0,26,4,8,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{90,0,7,0,7,-1,1,2},{90,0,7,0,7,-1,1,2},{90,0,7,0,7,-1,1,2},{90,0,7,0,7,-1,1,2},{90,0,7,0,7,-1,1,2},{90,0,7,0,7,-1,1,2},{90,0,7,0,7,-1,1,2},{90,0,7,0,7,-1,1,2},{90,0,7,0,7,-1,1,2},{90,0,7,0,7,-1,1,2},{90,0,7,0,7,-1,1,2},{90,0,7,0,7,-1,1,2},{90,0,7,0,7,-1,1,2},{90,0,7,0,7,-1,1,2},{90,0,7,0,7,-1,1,2},{90,0,7,0,7,-1,1,2}}, - {{90,0,7,0,7,-1,1,2},{90,0,7,0,7,-1,1,2},{90,0,7,0,7,-1,1,2},{90,0,7,0,7,-1,1,2},{90,0,21,10,8,-1,1,5},{90,0,21,10,8,-1,1,5},{90,0,21,10,8,-1,1,11},{90,0,21,10,8,-1,1,11},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{111,0,10,0,6,-1,1,9},{111,0,10,0,6,-1,1,9},{111,0,7,0,6,-1,1,2},{111,0,7,0,6,-1,1,2},{111,0,7,0,6,-1,1,2},{111,0,7,0,6,-1,1,2},{111,0,7,0,6,-1,1,2},{111,0,7,0,6,-1,1,2},{111,0,7,0,6,-1,1,2},{111,0,7,0,6,-1,1,2},{111,0,7,0,6,-1,1,2},{111,0,7,0,6,-1,1,2},{111,0,7,0,6,-1,1,2},{111,0,7,0,6,-1,1,2},{111,0,7,0,6,-1,1,2},{111,0,7,0,6,-1,1,2}}, - {{111,0,7,0,6,-1,1,2},{111,0,7,0,6,-1,1,2},{111,0,7,0,6,-1,1,2},{111,0,7,0,6,-1,1,2},{111,0,7,0,6,-1,1,2},{111,0,7,0,6,-1,1,2},{111,0,7,0,6,-1,1,2},{111,0,7,0,6,-1,1,2},{111,0,7,0,6,-1,1,2},{111,0,7,0,6,-1,1,2},{111,0,7,0,6,-1,1,2},{111,0,7,0,6,-1,1,2},{111,0,7,0,6,-1,1,2},{111,0,7,0,6,-1,1,2},{111,0,7,0,6,-1,1,2},{111,0,7,0,6,-1,1,2}}, - {{111,0,7,0,6,-1,1,2},{111,0,7,0,6,-1,1,2},{111,0,7,0,6,-1,1,2},{111,0,7,0,6,-1,1,2},{111,0,10,0,6,-1,1,9},{111,0,10,0,6,-1,1,9},{111,0,10,0,6,-1,1,9},{111,0,10,0,6,-1,1,9},{111,0,10,0,6,-1,1,9},{111,0,10,0,6,-1,1,9},{111,0,10,0,6,-1,1,9},{111,0,10,0,6,-1,1,9},{111,0,10,0,6,-1,1,9},{111,0,10,0,6,-1,1,9},{111,0,10,0,6,-1,1,9},{111,0,10,0,6,-1,1,9}}, - {{111,0,10,0,6,-1,1,9},{111,0,10,0,6,-1,1,9},{111,0,10,0,6,-1,1,9},{111,0,10,0,6,-1,1,9},{111,0,12,17,6,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{111,0,21,0,8,-1,1,4},{111,0,21,0,8,-1,1,4}}, - {{111,0,13,0,6,0,1,19},{111,0,13,0,6,1,1,19},{111,0,13,0,6,2,1,19},{111,0,13,0,6,3,1,19},{111,0,13,0,6,4,1,19},{111,0,13,0,6,5,1,19},{111,0,13,0,6,6,1,19},{111,0,13,0,6,7,1,19},{111,0,13,0,6,8,1,19},{111,0,13,0,6,9,1,19},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{10,0,12,17,4,-1,1,9},{10,0,12,17,4,-1,1,9},{10,0,12,17,4,-1,1,9},{10,0,12,17,4,-1,1,9},{10,0,12,17,4,-1,1,9},{10,0,12,17,4,-1,1,9},{10,0,12,17,4,-1,1,9},{10,0,12,17,4,-1,1,9},{10,0,12,17,4,-1,1,9},{10,0,12,17,4,-1,1,9},{10,0,12,17,4,-1,1,9},{10,0,12,17,4,-1,1,9},{10,0,12,17,4,-1,1,9},{10,0,12,17,4,-1,1,9},{10,0,12,17,4,-1,1,9},{10,0,12,17,4,-1,1,9}}, - {{10,0,12,17,4,-1,1,9},{10,0,12,17,4,-1,1,9},{10,0,7,0,4,-1,1,2},{10,0,7,0,4,-1,1,2},{10,0,7,0,4,-1,1,2},{10,0,7,0,4,-1,1,2},{10,0,7,0,4,-1,1,2},{10,0,7,0,4,-1,1,2},{10,0,21,0,8,-1,1,2},{10,0,21,0,8,-1,1,2},{10,0,21,0,8,-1,1,2},{10,0,7,0,4,-1,1,2},{10,0,21,0,8,-1,1,5},{10,0,7,0,4,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{79,0,13,0,6,0,1,19},{79,0,13,0,6,1,1,19},{79,0,13,0,6,2,1,19},{79,0,13,0,6,3,1,19},{79,0,13,0,6,4,1,19},{79,0,13,0,6,5,1,19},{79,0,13,0,6,6,1,19},{79,0,13,0,6,7,1,19},{79,0,13,0,6,8,1,19},{79,0,13,0,6,9,1,19},{79,0,7,0,6,-1,1,2},{79,0,7,0,6,-1,1,2},{79,0,7,0,6,-1,1,2},{79,0,7,0,6,-1,1,2},{79,0,7,0,6,-1,1,2},{79,0,7,0,6,-1,1,2}}, - {{79,0,7,0,6,-1,1,2},{79,0,7,0,6,-1,1,2},{79,0,7,0,6,-1,1,2},{79,0,7,0,6,-1,1,2},{79,0,7,0,6,-1,1,2},{79,0,7,0,6,-1,1,2},{79,0,7,0,6,-1,1,2},{79,0,7,0,6,-1,1,2},{79,0,7,0,6,-1,1,2},{79,0,7,0,6,-1,1,2},{79,0,7,0,6,-1,1,2},{79,0,7,0,6,-1,1,2},{79,0,7,0,6,-1,1,2},{79,0,7,0,6,-1,1,2},{79,0,7,0,6,-1,1,2},{79,0,7,0,6,-1,1,2}}, - {{79,0,7,0,6,-1,1,2},{79,0,7,0,6,-1,1,2},{79,0,7,0,6,-1,1,2},{79,0,7,0,6,-1,1,2},{79,0,7,0,6,-1,1,2},{79,0,7,0,6,-1,1,2},{79,0,12,17,6,-1,1,9},{79,0,12,17,6,-1,1,9},{79,0,12,17,6,-1,1,9},{79,0,12,17,6,-1,1,9},{79,0,12,17,6,-1,1,9},{79,0,12,17,6,-1,1,9},{79,0,12,17,6,-1,1,9},{79,0,12,17,6,-1,1,9},{0,0,21,0,8,-1,1,4},{79,0,21,0,8,-1,1,4}}, - {{110,0,7,0,7,-1,1,2},{110,0,7,0,7,-1,1,2},{110,0,7,0,7,-1,1,2},{110,0,7,0,7,-1,1,2},{110,0,7,0,7,-1,1,2},{110,0,7,0,7,-1,1,2},{110,0,7,0,7,-1,1,2},{110,0,7,0,7,-1,1,2},{110,0,7,0,7,-1,1,2},{110,0,7,0,7,-1,1,2},{110,0,7,0,7,-1,1,2},{110,0,7,0,7,-1,1,2},{110,0,7,0,7,-1,1,2},{110,0,7,0,7,-1,1,2},{110,0,7,0,7,-1,1,2},{110,0,7,0,7,-1,1,2}}, - {{110,0,7,0,7,-1,1,2},{110,0,7,0,7,-1,1,2},{110,0,7,0,7,-1,1,2},{110,0,7,0,7,-1,1,2},{110,0,7,0,7,-1,1,2},{110,0,7,0,7,-1,1,2},{110,0,7,0,7,-1,1,2},{110,0,12,17,7,-1,1,9},{110,0,12,17,7,-1,1,9},{110,0,12,17,7,-1,1,9},{110,0,12,17,7,-1,1,9},{110,0,12,17,7,-1,1,9},{110,0,12,17,7,-1,1,9},{110,0,12,17,7,-1,1,9},{110,0,12,17,7,-1,1,9},{110,0,12,17,7,-1,1,9}}, - {{110,0,12,17,7,-1,1,9},{110,0,12,17,7,-1,1,9},{110,0,10,0,7,-1,1,9},{110,0,10,0,7,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{110,0,21,0,8,-1,1,2}}, - {{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{18,0,7,0,4,-1,0,33},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0}}, - {{78,0,12,17,6,-1,1,9},{78,0,12,17,6,-1,1,9},{78,0,12,17,6,-1,1,9},{78,0,10,0,6,-1,1,9},{78,0,7,0,6,-1,1,2},{78,0,7,0,6,-1,1,2},{78,0,7,0,6,-1,1,2},{78,0,7,0,6,-1,1,2},{78,0,7,0,6,-1,1,2},{78,0,7,0,6,-1,1,2},{78,0,7,0,6,-1,1,2},{78,0,7,0,6,-1,1,2},{78,0,7,0,6,-1,1,2},{78,0,7,0,6,-1,1,2},{78,0,7,0,6,-1,1,2},{78,0,7,0,6,-1,1,2}}, - {{78,0,7,0,6,-1,1,2},{78,0,7,0,6,-1,1,2},{78,0,7,0,6,-1,1,2},{78,0,7,0,6,-1,1,2},{78,0,7,0,6,-1,1,2},{78,0,7,0,6,-1,1,2},{78,0,7,0,6,-1,1,2},{78,0,7,0,6,-1,1,2},{78,0,7,0,6,-1,1,2},{78,0,7,0,6,-1,1,2},{78,0,7,0,6,-1,1,2},{78,0,7,0,6,-1,1,2},{78,0,7,0,6,-1,1,2},{78,0,7,0,6,-1,1,2},{78,0,7,0,6,-1,1,2},{78,0,7,0,6,-1,1,2}}, - {{78,0,7,0,6,-1,1,2},{78,0,7,0,6,-1,1,2},{78,0,7,0,6,-1,1,2},{78,0,12,17,6,-1,1,9},{78,0,10,0,6,-1,1,9},{78,0,10,0,6,-1,1,9},{78,0,12,17,6,-1,1,9},{78,0,12,17,6,-1,1,9},{78,0,12,17,6,-1,1,9},{78,0,12,17,6,-1,1,9},{78,0,10,0,6,-1,1,9},{78,0,10,0,6,-1,1,9},{78,0,12,17,6,-1,1,9},{78,0,10,0,6,-1,1,9},{78,0,10,0,6,-1,1,9},{78,0,10,0,6,-1,1,9}}, - {{78,0,10,0,6,-1,1,9},{78,0,21,0,8,-1,1,2},{78,0,21,0,8,-1,1,2},{78,0,21,0,8,-1,1,2},{78,0,21,0,8,-1,1,2},{78,0,21,0,8,-1,1,2},{78,0,21,0,8,-1,1,2},{78,0,21,0,8,-1,1,4},{78,0,21,0,8,-1,1,4},{78,0,21,0,8,-1,1,4},{78,0,21,0,8,-1,1,2},{78,0,21,0,8,-1,1,2},{78,0,21,0,8,-1,1,2},{78,0,21,0,8,-1,1,2},{103,0,2,0,12,-1,1,0},{0,0,6,0,7,-1,1,2}}, - {{78,0,13,0,6,0,1,19},{78,0,13,0,6,1,1,19},{78,0,13,0,6,2,1,19},{78,0,13,0,6,3,1,19},{78,0,13,0,6,4,1,19},{78,0,13,0,6,5,1,19},{78,0,13,0,6,6,1,19},{78,0,13,0,6,7,1,19},{78,0,13,0,6,8,1,19},{78,0,13,0,6,9,1,19},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{78,0,21,0,8,-1,1,2},{78,0,21,0,8,-1,1,2}}, - {{28,0,7,0,4,-1,1,24},{28,0,7,0,4,-1,1,24},{28,0,7,0,4,-1,1,24},{28,0,7,0,4,-1,1,24},{28,0,7,0,4,-1,1,24},{28,0,12,17,4,-1,1,24},{28,0,6,0,4,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24}}, - {{28,0,13,0,0,0,1,19},{28,0,13,0,0,1,1,19},{28,0,13,0,0,2,1,19},{28,0,13,0,0,3,1,19},{28,0,13,0,0,4,1,19},{28,0,13,0,0,5,1,19},{28,0,13,0,0,6,1,19},{28,0,13,0,0,7,1,19},{28,0,13,0,0,8,1,19},{28,0,13,0,0,9,1,19},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{103,0,2,0,12,-1,1,0}}, - {{66,0,7,0,6,-1,1,2},{66,0,7,0,6,-1,1,2},{66,0,7,0,6,-1,1,2},{66,0,7,0,6,-1,1,2},{66,0,7,0,6,-1,1,2},{66,0,7,0,6,-1,1,2},{66,0,7,0,6,-1,1,2},{66,0,7,0,6,-1,1,2},{66,0,7,0,6,-1,1,2},{66,0,7,0,6,-1,1,2},{66,0,7,0,6,-1,1,2},{66,0,7,0,6,-1,1,2},{66,0,7,0,6,-1,1,2},{66,0,7,0,6,-1,1,2},{66,0,7,0,6,-1,1,2},{66,0,7,0,6,-1,1,2}}, - {{66,0,7,0,6,-1,1,2},{66,0,7,0,6,-1,1,2},{66,0,7,0,6,-1,1,2},{66,0,7,0,6,-1,1,2},{66,0,7,0,6,-1,1,2},{66,0,7,0,6,-1,1,2},{66,0,7,0,6,-1,1,2},{66,0,7,0,6,-1,1,2},{66,0,7,0,6,-1,1,2},{66,0,12,17,6,-1,1,9},{66,0,12,17,6,-1,1,9},{66,0,12,17,6,-1,1,9},{66,0,12,17,6,-1,1,9},{66,0,12,17,6,-1,1,9},{66,0,12,17,6,-1,1,9},{66,0,10,0,6,-1,1,9}}, - {{66,0,10,0,6,-1,1,9},{66,0,12,17,6,-1,1,9},{66,0,12,17,6,-1,1,9},{66,0,10,0,6,-1,1,9},{66,0,10,0,6,-1,1,9},{66,0,12,17,6,-1,1,9},{66,0,12,17,6,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{66,0,7,0,6,-1,1,2},{66,0,7,0,6,-1,1,2},{66,0,7,0,6,-1,1,2},{66,0,12,17,6,-1,1,9},{66,0,7,0,6,-1,1,2},{66,0,7,0,6,-1,1,2},{66,0,7,0,6,-1,1,2},{66,0,7,0,6,-1,1,2},{66,0,7,0,6,-1,1,2},{66,0,7,0,6,-1,1,2},{66,0,7,0,6,-1,1,2},{66,0,7,0,6,-1,1,2},{66,0,12,17,6,-1,1,9},{66,0,10,0,6,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{66,0,13,0,6,0,1,19},{66,0,13,0,6,1,1,19},{66,0,13,0,6,2,1,19},{66,0,13,0,6,3,1,19},{66,0,13,0,6,4,1,19},{66,0,13,0,6,5,1,19},{66,0,13,0,6,6,1,19},{66,0,13,0,6,7,1,19},{66,0,13,0,6,8,1,19},{66,0,13,0,6,9,1,19},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{66,0,21,0,8,-1,1,2},{66,0,21,0,8,-1,1,4},{66,0,21,0,8,-1,1,4},{66,0,21,0,8,-1,1,4}}, - {{28,0,6,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,26,0,8,-1,1,24},{28,0,26,0,8,-1,1,24},{28,0,26,0,8,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,10,0,0,-1,1,24},{28,0,12,17,0,-1,1,24},{28,0,10,0,0,-1,1,24},{28,0,7,0,0,-1,1,24},{28,0,7,0,0,-1,1,24}}, - {{127,0,7,0,6,-1,1,24},{127,0,7,0,6,-1,1,24},{127,0,7,0,6,-1,1,24},{127,0,7,0,6,-1,1,24},{127,0,7,0,6,-1,1,24},{127,0,7,0,6,-1,1,24},{127,0,7,0,6,-1,1,24},{127,0,7,0,6,-1,1,24},{127,0,7,0,6,-1,1,24},{127,0,7,0,6,-1,1,24},{127,0,7,0,6,-1,1,24},{127,0,7,0,6,-1,1,24},{127,0,7,0,6,-1,1,24},{127,0,7,0,6,-1,1,24},{127,0,7,0,6,-1,1,24},{127,0,7,0,6,-1,1,24}}, - {{127,0,12,17,6,-1,1,24},{127,0,7,0,6,-1,1,24},{127,0,12,17,6,-1,1,24},{127,0,12,17,6,-1,1,24},{127,0,12,17,6,-1,1,24},{127,0,7,0,6,-1,1,24},{127,0,7,0,6,-1,1,24},{127,0,12,17,6,-1,1,24},{127,0,12,17,6,-1,1,24},{127,0,7,0,6,-1,1,24},{127,0,7,0,6,-1,1,24},{127,0,7,0,6,-1,1,24},{127,0,7,0,6,-1,1,24},{127,0,7,0,6,-1,1,24},{127,0,12,17,6,-1,1,24},{127,0,12,17,6,-1,1,24}}, - {{127,0,7,0,6,-1,1,24},{127,0,12,17,6,-1,1,24},{127,0,7,0,6,-1,1,24},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{127,0,7,0,6,-1,1,24},{127,0,7,0,6,-1,1,24},{127,0,6,0,6,-1,1,24},{127,0,21,0,8,-1,1,24},{127,0,21,0,8,-1,1,24}}, - {{115,0,7,0,6,-1,1,2},{115,0,7,0,6,-1,1,2},{115,0,7,0,6,-1,1,2},{115,0,7,0,6,-1,1,2},{115,0,7,0,6,-1,1,2},{115,0,7,0,6,-1,1,2},{115,0,7,0,6,-1,1,2},{115,0,7,0,6,-1,1,2},{115,0,7,0,6,-1,1,2},{115,0,7,0,6,-1,1,2},{115,0,7,0,6,-1,1,2},{115,0,10,0,6,-1,1,9},{115,0,12,17,6,-1,1,9},{115,0,12,17,6,-1,1,9},{115,0,10,0,6,-1,1,9},{115,0,10,0,6,-1,1,9}}, - {{115,0,21,0,8,-1,1,4},{115,0,21,0,8,-1,1,4},{115,0,7,0,6,-1,1,2},{115,0,6,0,6,-1,1,2},{115,0,6,0,6,-1,1,2},{115,0,10,0,6,-1,1,9},{115,0,12,17,6,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{103,0,2,0,12,-1,1,0},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0}}, - {{103,0,2,0,12,-1,1,0},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{11,0,7,0,0,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{25,0,5,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,5,0,4,-1,1,2}}, - {{25,0,5,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{25,0,5,0,4,-1,1,2},{0,0,24,0,8,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2},{25,0,6,0,9,-1,1,2}}, - {{25,0,5,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,5,0,2,-1,1,2},{25,0,5,0,4,-1,1,2},{14,0,5,0,4,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{6,0,5,0,6,-1,1,2},{6,0,5,0,6,-1,1,2},{6,0,5,0,6,-1,1,2},{6,0,5,0,6,-1,1,2},{6,0,5,0,6,-1,1,2},{6,0,5,0,6,-1,1,2},{6,0,5,0,6,-1,1,2},{6,0,5,0,6,-1,1,2},{6,0,5,0,6,-1,1,2},{6,0,5,0,6,-1,1,2},{6,0,5,0,6,-1,1,2},{6,0,5,0,6,-1,1,2},{6,0,5,0,6,-1,1,2},{6,0,5,0,6,-1,1,2},{6,0,5,0,6,-1,1,2},{6,0,5,0,6,-1,1,2}}, - {{115,0,7,0,6,-1,1,2},{115,0,7,0,6,-1,1,2},{115,0,7,0,6,-1,1,2},{115,0,7,0,6,-1,1,2},{115,0,7,0,6,-1,1,2},{115,0,7,0,6,-1,1,2},{115,0,7,0,6,-1,1,2},{115,0,7,0,6,-1,1,2},{115,0,7,0,6,-1,1,2},{115,0,7,0,6,-1,1,2},{115,0,7,0,6,-1,1,2},{115,0,7,0,6,-1,1,2},{115,0,7,0,6,-1,1,2},{115,0,7,0,6,-1,1,2},{115,0,7,0,6,-1,1,2},{115,0,7,0,6,-1,1,2}}, - {{115,0,7,0,6,-1,1,2},{115,0,7,0,6,-1,1,2},{115,0,7,0,6,-1,1,2},{115,0,10,0,6,-1,1,9},{115,0,10,0,6,-1,1,9},{115,0,12,17,6,-1,1,9},{115,0,10,0,6,-1,1,9},{115,0,10,0,6,-1,1,9},{115,0,12,17,6,-1,1,9},{115,0,10,0,6,-1,1,9},{115,0,10,0,6,-1,1,9},{115,0,21,0,8,-1,1,4},{115,0,10,0,6,-1,1,9},{115,0,12,17,6,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{115,0,13,0,6,0,1,19},{115,0,13,0,6,1,1,19},{115,0,13,0,6,2,1,19},{115,0,13,0,6,3,1,19},{115,0,13,0,6,4,1,19},{115,0,13,0,6,5,1,19},{115,0,13,0,6,6,1,19},{115,0,13,0,6,7,1,19},{115,0,13,0,6,8,1,19},{115,0,13,0,6,9,1,19},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{18,0,7,0,0,-1,0,31},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32}}, - {{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,31},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32}}, - {{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32}}, - {{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,31},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32}}, - {{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,31},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32}}, - {{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{18,0,7,0,0,-1,0,32},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0}}, - {{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{18,0,7,0,4,-1,0,35},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{18,0,7,0,4,-1,0,34},{18,0,7,0,4,-1,0,34},{18,0,7,0,4,-1,0,34},{18,0,7,0,4,-1,0,34},{18,0,7,0,4,-1,0,34}}, - {{18,0,7,0,4,-1,0,34},{18,0,7,0,4,-1,0,34},{18,0,7,0,4,-1,0,34},{18,0,7,0,4,-1,0,34},{18,0,7,0,4,-1,0,34},{18,0,7,0,4,-1,0,34},{18,0,7,0,4,-1,0,34},{18,0,7,0,4,-1,0,34},{18,0,7,0,4,-1,0,34},{18,0,7,0,4,-1,0,34},{18,0,7,0,4,-1,0,34},{18,0,7,0,4,-1,0,34},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0}}, - {{103,0,4,0,12,-1,1,25},{103,0,4,0,12,-1,1,25},{103,0,4,0,12,-1,1,25},{103,0,4,0,12,-1,1,25},{103,0,4,0,12,-1,1,25},{103,0,4,0,12,-1,1,25},{103,0,4,0,12,-1,1,25},{103,0,4,0,12,-1,1,25},{103,0,4,0,12,-1,1,25},{103,0,4,0,12,-1,1,25},{103,0,4,0,12,-1,1,25},{103,0,4,0,12,-1,1,25},{103,0,4,0,12,-1,1,25},{103,0,4,0,12,-1,1,25},{103,0,4,0,12,-1,1,25},{103,0,4,0,12,-1,1,25}}, - {{103,0,3,0,12,-1,0,0},{103,0,3,0,12,-1,0,0},{103,0,3,0,12,-1,0,0},{103,0,3,0,12,-1,0,0},{103,0,3,0,12,-1,0,0},{103,0,3,0,12,-1,0,0},{103,0,3,0,12,-1,0,0},{103,0,3,0,12,-1,0,0},{103,0,3,0,12,-1,0,0},{103,0,3,0,12,-1,0,0},{103,0,3,0,12,-1,0,0},{103,0,3,0,12,-1,0,0},{103,0,3,0,12,-1,0,0},{103,0,3,0,12,-1,0,0},{103,0,3,0,12,-1,0,0},{103,0,3,0,12,-1,0,0}}, - {{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14}}, - {{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14}}, - {{17,0,7,0,9,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,0,-1,0,14}}, - {{17,0,7,0,9,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14}}, - {{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14}}, - {{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{17,0,7,0,9,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14}}, - {{25,0,5,0,9,-1,1,2},{25,0,5,0,9,-1,1,2},{25,0,5,0,9,-1,1,2},{25,0,5,0,9,-1,1,2},{25,0,5,0,9,-1,1,2},{25,0,5,0,9,-1,1,2},{25,0,5,0,9,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{3,0,5,0,9,-1,1,2},{3,0,5,0,9,-1,1,2},{3,0,5,0,9,-1,1,2},{3,0,5,0,9,-1,1,2},{3,0,5,0,9,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{19,0,7,1,9,-1,1,38},{19,0,12,17,3,-1,1,9},{19,0,7,1,9,-1,1,38}}, - {{19,0,7,1,9,-1,1,38},{19,0,7,1,9,-1,1,38},{19,0,7,1,9,-1,1,38},{19,0,7,1,9,-1,1,38},{19,0,7,1,9,-1,1,38},{19,0,7,1,9,-1,1,38},{19,0,7,1,9,-1,1,38},{19,0,7,1,9,-1,1,38},{19,0,7,1,9,-1,1,38},{19,0,25,3,9,-1,1,2},{19,0,7,1,9,-1,1,38},{19,0,7,1,9,-1,1,38},{19,0,7,1,9,-1,1,38},{19,0,7,1,9,-1,1,38},{19,0,7,1,9,-1,1,38},{19,0,7,1,9,-1,1,38}}, - {{19,0,7,1,9,-1,1,38},{19,0,7,1,9,-1,1,38},{19,0,7,1,9,-1,1,38},{19,0,7,1,9,-1,1,38},{19,0,7,1,9,-1,1,38},{19,0,7,1,9,-1,1,38},{19,0,7,1,9,-1,1,38},{103,0,2,1,12,-1,1,0},{19,0,7,1,9,-1,1,38},{19,0,7,1,9,-1,1,38},{19,0,7,1,9,-1,1,38},{19,0,7,1,9,-1,1,38},{19,0,7,1,9,-1,1,38},{103,0,2,1,12,-1,1,0},{19,0,7,1,9,-1,1,38},{103,0,2,1,12,-1,1,0}}, - {{19,0,7,1,9,-1,1,38},{19,0,7,1,9,-1,1,38},{103,0,2,1,12,-1,1,0},{19,0,7,1,9,-1,1,38},{19,0,7,1,9,-1,1,38},{103,0,2,1,12,-1,1,0},{19,0,7,1,9,-1,1,38},{19,0,7,1,9,-1,1,38},{19,0,7,1,9,-1,1,38},{19,0,7,1,9,-1,1,38},{19,0,7,1,9,-1,1,38},{19,0,7,1,9,-1,1,38},{19,0,7,1,9,-1,1,38},{19,0,7,1,9,-1,1,38},{19,0,7,1,9,-1,1,38},{19,0,7,1,9,-1,1,38}}, - {{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2}}, - {{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,24,13,8,-1,1,2},{2,0,24,13,8,-1,1,2},{2,0,24,13,8,-1,1,2},{2,0,24,13,8,-1,1,2},{2,0,24,13,8,-1,1,2},{2,0,24,13,8,-1,1,2},{2,0,24,13,8,-1,1,2},{2,0,24,13,8,-1,1,2},{2,0,24,13,8,-1,1,2},{2,0,24,13,8,-1,1,2},{2,0,24,13,8,-1,1,2},{2,0,24,13,8,-1,1,2},{2,0,24,13,8,-1,1,2},{2,0,24,13,8,-1,1,2}}, - {{2,0,24,13,8,-1,1,2},{2,0,24,13,8,-1,1,2},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0}}, - {{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2}}, - {{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{0,0,18,10,8,-1,1,8},{0,0,22,10,8,-1,1,20}}, - {{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2}}, - {{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0}}, - {{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,23,13,9,-1,1,21},{2,0,26,10,8,-1,1,2},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0}}, - {{1,0,12,17,10,-1,1,9},{1,0,12,17,10,-1,1,9},{1,0,12,17,10,-1,1,9},{1,0,12,17,10,-1,1,9},{1,0,12,17,10,-1,1,9},{1,0,12,17,10,-1,1,9},{1,0,12,17,10,-1,1,9},{1,0,12,17,10,-1,1,9},{1,0,12,17,10,-1,1,9},{1,0,12,17,10,-1,1,9},{1,0,12,17,10,-1,1,9},{1,0,12,17,10,-1,1,9},{1,0,12,17,10,-1,1,9},{1,0,12,17,10,-1,1,9},{1,0,12,17,10,-1,1,9},{1,0,12,17,10,-1,1,9}}, - {{0,0,21,10,9,-1,0,16},{0,0,21,10,9,-1,0,8},{0,0,21,10,9,-1,0,8},{0,0,21,10,9,-1,0,16},{0,0,21,10,9,-1,0,16},{0,0,21,10,9,-1,0,11},{0,0,21,10,9,-1,0,11},{0,0,22,10,9,-1,0,20},{0,0,18,10,9,-1,0,8},{0,0,21,10,9,-1,0,15},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0}}, - {{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{1,0,12,17,3,-1,1,9},{8,0,12,17,3,-1,1,9},{8,0,12,17,3,-1,1,9}}, - {{0,0,21,10,9,-1,0,14},{0,0,17,10,9,-1,0,14},{0,0,17,10,9,-1,0,14},{0,0,16,10,9,-1,0,14},{0,0,16,10,9,-1,0,14},{0,0,22,10,9,-1,0,20},{0,0,18,10,9,-1,0,8},{0,0,22,10,9,-1,0,20},{0,0,18,10,9,-1,0,8},{0,0,22,10,9,-1,0,20},{0,0,18,10,9,-1,0,8},{0,0,22,10,9,-1,0,20},{0,0,18,10,9,-1,0,8},{0,0,22,10,9,-1,0,20},{0,0,18,10,9,-1,0,8},{0,0,22,10,9,-1,0,20}}, - {{0,0,18,10,9,-1,0,8},{0,0,22,10,9,-1,0,20},{0,0,18,10,9,-1,0,8},{0,0,22,10,9,-1,0,20},{0,0,18,10,9,-1,0,8},{0,0,21,10,8,-1,0,14},{0,0,21,10,8,-1,0,14},{0,0,22,10,9,-1,0,20},{0,0,18,10,9,-1,0,8},{0,0,21,10,9,-1,1,14},{0,0,21,10,9,-1,1,14},{0,0,21,10,9,-1,1,14},{0,0,21,10,9,-1,1,14},{0,0,16,10,9,-1,1,14},{0,0,16,10,9,-1,1,14},{0,0,16,10,9,-1,1,14}}, - {{0,0,21,6,9,-1,2,8},{0,0,21,10,9,-1,2,14},{0,0,21,6,9,-1,2,8},{103,0,2,0,12,-1,0,0},{0,0,21,10,9,-1,0,18},{0,0,21,6,9,-1,0,18},{0,0,21,10,9,-1,0,11},{0,0,21,10,9,-1,0,11},{0,0,17,10,9,-1,1,14},{0,1,22,10,9,-1,3,20},{0,2,18,10,9,-1,3,8},{0,1,22,10,9,-1,3,20},{0,2,18,10,9,-1,3,8},{0,1,22,10,9,-1,3,20},{0,2,18,10,9,-1,3,8},{0,0,21,4,9,-1,0,14}}, - {{0,0,21,10,9,-1,0,14},{0,0,21,10,9,-1,0,14},{0,0,25,3,9,-1,0,14},{0,0,17,3,9,-1,1,14},{0,0,25,10,9,-1,1,14},{0,0,25,10,9,-1,1,14},{0,0,25,10,9,-1,1,14},{103,0,2,0,12,-1,0,0},{0,0,21,10,9,-1,0,14},{0,0,23,4,9,-1,0,22},{0,0,21,4,9,-1,0,21},{0,0,21,10,9,-1,0,14},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0}}, - {{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,3,-1,1,2},{2,0,7,13,9,-1,1,2},{103,0,2,13,12,-1,1,0},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2}}, - {{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{0,0,1,18,10,-1,1,30}}, - {{103,0,2,0,12,-1,1,0},{0,0,21,10,9,-1,2,11},{0,0,21,10,9,-1,0,14},{0,0,21,4,9,-1,0,14},{0,0,23,4,9,-1,0,22},{0,0,21,4,9,-1,0,21},{0,0,21,10,9,-1,0,14},{0,0,21,10,9,-1,0,14},{0,1,22,10,9,-1,3,20},{0,2,18,10,9,-1,3,8},{0,0,21,10,9,-1,0,14},{0,0,25,3,9,-1,0,14},{0,0,21,6,9,-1,2,8},{0,0,17,3,9,-1,1,14},{0,0,21,6,9,-1,2,8},{0,0,21,6,9,-1,0,14}}, - {{0,0,13,2,9,0,0,14},{0,0,13,2,9,1,0,14},{0,0,13,2,9,2,0,14},{0,0,13,2,9,3,0,14},{0,0,13,2,9,4,0,14},{0,0,13,2,9,5,0,14},{0,0,13,2,9,6,0,14},{0,0,13,2,9,7,0,14},{0,0,13,2,9,8,0,14},{0,0,13,2,9,9,0,14},{0,0,21,6,9,-1,3,18},{0,0,21,10,9,-1,3,18},{0,0,25,10,9,-1,1,14},{0,0,25,10,9,-1,1,14},{0,0,25,10,9,-1,1,14},{0,0,21,10,9,-1,2,11}}, - {{0,0,21,10,9,-1,0,14},{25,0,9,0,9,-1,0,14},{25,0,9,0,9,-1,0,14},{25,0,9,0,9,-1,0,14},{25,0,9,0,9,-1,0,14},{25,0,9,0,9,-1,0,14},{25,0,9,0,9,-1,0,14},{25,0,9,0,9,-1,0,14},{25,0,9,0,9,-1,0,14},{25,0,9,0,9,-1,0,14},{25,0,9,0,9,-1,0,14},{25,0,9,0,9,-1,0,14},{25,0,9,0,9,-1,0,14},{25,0,9,0,9,-1,0,14},{25,0,9,0,9,-1,0,14},{25,0,9,0,9,-1,0,14}}, - {{25,0,9,0,9,-1,0,14},{25,0,9,0,9,-1,0,14},{25,0,9,0,9,-1,0,14},{25,0,9,0,9,-1,0,14},{25,0,9,0,9,-1,0,14},{25,0,9,0,9,-1,0,14},{25,0,9,0,9,-1,0,14},{25,0,9,0,9,-1,0,14},{25,0,9,0,9,-1,0,14},{25,0,9,0,9,-1,0,14},{25,0,9,0,9,-1,0,14},{0,1,22,10,9,-1,3,20},{0,0,21,10,9,-1,0,14},{0,2,18,10,9,-1,3,8},{0,0,24,10,9,-1,0,14},{0,0,16,10,9,-1,3,14}}, - {{0,0,24,10,9,-1,0,14},{25,0,5,0,9,-1,0,14},{25,0,5,0,9,-1,0,14},{25,0,5,0,9,-1,0,14},{25,0,5,0,9,-1,0,14},{25,0,5,0,9,-1,0,14},{25,0,5,0,9,-1,0,14},{25,0,5,0,9,-1,0,14},{25,0,5,0,9,-1,0,14},{25,0,5,0,9,-1,0,14},{25,0,5,0,9,-1,0,14},{25,0,5,0,9,-1,0,14},{25,0,5,0,9,-1,0,14},{25,0,5,0,9,-1,0,14},{25,0,5,0,9,-1,0,14},{25,0,5,0,9,-1,0,14}}, - {{25,0,5,0,9,-1,0,14},{25,0,5,0,9,-1,0,14},{25,0,5,0,9,-1,0,14},{25,0,5,0,9,-1,0,14},{25,0,5,0,9,-1,0,14},{25,0,5,0,9,-1,0,14},{25,0,5,0,9,-1,0,14},{25,0,5,0,9,-1,0,14},{25,0,5,0,9,-1,0,14},{25,0,5,0,9,-1,0,14},{25,0,5,0,9,-1,0,14},{0,1,22,10,9,-1,3,20},{0,0,25,10,9,-1,3,14},{0,2,18,10,9,-1,3,8},{0,0,25,10,9,-1,3,14},{0,1,22,10,9,-1,3,20}}, - {{0,2,18,10,9,-1,3,8},{0,0,21,10,9,-1,1,8},{0,1,22,10,9,-1,1,20},{0,2,18,10,9,-1,1,8},{0,0,21,10,9,-1,1,8},{0,0,21,10,9,-1,1,18},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,37},{22,0,7,0,9,-1,1,37},{22,0,7,0,9,-1,1,37},{22,0,7,0,9,-1,1,37},{22,0,7,0,9,-1,1,37},{22,0,7,0,9,-1,1,37},{22,0,7,0,9,-1,1,37},{22,0,7,0,9,-1,1,37},{22,0,7,0,9,-1,1,37}}, - {{0,0,6,0,9,-1,1,37},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2}}, - {{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2}}, - {{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{22,0,7,0,9,-1,1,2},{0,0,6,0,9,-1,1,18},{0,0,6,0,9,-1,1,18}}, - {{18,0,7,0,10,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2}}, - {{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{103,0,2,0,12,-1,1,0}}, - {{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2}}, - {{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{18,0,7,0,9,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{0,0,23,4,9,-1,0,21},{0,0,23,4,9,-1,0,22},{0,0,25,10,9,-1,0,14},{0,0,24,10,9,-1,3,14},{0,0,26,10,9,-1,0,14},{0,0,23,4,9,-1,0,22},{0,0,23,4,9,-1,0,22},{103,0,2,0,12,-1,0,0},{0,0,26,10,9,-1,1,2},{0,0,25,10,9,-1,1,2},{0,0,25,10,9,-1,1,2},{0,0,25,10,9,-1,1,2},{0,0,25,10,9,-1,1,2},{0,0,26,10,9,-1,1,2},{0,0,26,10,9,-1,1,2},{103,0,2,0,12,-1,1,0}}, - {{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{0,0,1,10,8,-1,1,9},{0,0,1,10,8,-1,1,9},{0,0,1,10,8,-1,1,9},{0,0,26,10,8,-1,0,7},{0,0,26,10,8,-1,0,1},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2}}, - {{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2}}, - {{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2}}, - {{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{49,0,7,0,7,-1,1,2}}, - {{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{49,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{0,0,21,0,8,-1,1,4},{0,0,21,10,8,-1,1,4},{0,0,21,0,8,-1,1,4},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{0,0,15,0,8,-1,1,2},{0,0,15,0,8,-1,1,2},{0,0,15,0,8,-1,1,2},{0,0,15,0,8,-1,1,2},{0,0,15,0,8,-1,1,2},{0,0,15,0,8,-1,1,2},{0,0,15,0,8,-1,1,2},{0,0,15,0,8,-1,1,2},{0,0,15,0,8,-1,1,2}}, - {{0,0,15,0,8,-1,1,2},{0,0,15,0,8,-1,1,2},{0,0,15,0,8,-1,1,2},{0,0,15,0,8,-1,1,2},{0,0,15,0,8,-1,1,2},{0,0,15,0,8,-1,1,2},{0,0,15,0,8,-1,1,2},{0,0,15,0,8,-1,1,2},{0,0,15,0,8,-1,1,2},{0,0,15,0,8,-1,1,2},{0,0,15,0,8,-1,1,2},{0,0,15,0,8,-1,1,2},{0,0,15,0,8,-1,1,2},{0,0,15,0,8,-1,1,2},{0,0,15,0,8,-1,1,2},{0,0,15,0,8,-1,1,2}}, - {{0,0,15,0,8,-1,1,2},{0,0,15,0,8,-1,1,2},{0,0,15,0,8,-1,1,2},{0,0,15,0,8,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2}}, - {{14,0,14,10,4,-1,1,2},{14,0,14,10,4,-1,1,2},{14,0,14,10,4,-1,1,2},{14,0,14,10,4,-1,1,2},{14,0,14,10,4,-1,1,2},{14,0,14,10,4,-1,1,2},{14,0,14,10,4,-1,1,2},{14,0,14,10,4,-1,1,2},{14,0,14,10,4,-1,1,2},{14,0,14,10,4,-1,1,2},{14,0,14,10,4,-1,1,2},{14,0,14,10,4,-1,1,2},{14,0,14,10,4,-1,1,2},{14,0,14,10,4,-1,1,2},{14,0,14,10,4,-1,1,2},{14,0,14,10,4,-1,1,2}}, - {{14,0,14,10,4,-1,1,2},{14,0,14,10,4,-1,1,2},{14,0,14,10,4,-1,1,2},{14,0,14,10,4,-1,1,2},{14,0,14,10,4,-1,1,2},{14,0,15,10,8,-1,1,2},{14,0,15,10,8,-1,1,2},{14,0,15,10,8,-1,1,2},{14,0,15,10,8,-1,1,2},{14,0,26,10,8,-1,1,2},{14,0,26,10,8,-1,1,2},{14,0,26,10,8,-1,1,2},{14,0,26,10,8,-1,1,2},{14,0,26,10,8,-1,1,2},{14,0,26,10,8,-1,1,2},{14,0,26,10,8,-1,1,2}}, - {{14,0,26,10,8,-1,1,2},{14,0,26,10,8,-1,1,2},{14,0,26,10,8,-1,1,2},{14,0,26,10,8,-1,1,2},{14,0,26,10,8,-1,1,2},{14,0,26,10,8,-1,1,2},{14,0,26,10,8,-1,1,2},{14,0,26,10,8,-1,1,2},{14,0,26,10,8,-1,1,2},{14,0,26,10,8,-1,1,2},{14,0,15,10,8,-1,1,2},{14,0,15,10,8,-1,1,2},{14,0,26,10,8,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{14,0,26,10,8,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{0,0,26,0,8,-1,1,2},{1,0,12,17,7,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{107,0,7,0,7,-1,1,2},{107,0,7,0,7,-1,1,2},{107,0,7,0,7,-1,1,2},{107,0,7,0,7,-1,1,2},{107,0,7,0,7,-1,1,2},{107,0,7,0,7,-1,1,2},{107,0,7,0,7,-1,1,2},{107,0,7,0,7,-1,1,2},{107,0,7,0,7,-1,1,2},{107,0,7,0,7,-1,1,2},{107,0,7,0,7,-1,1,2},{107,0,7,0,7,-1,1,2},{107,0,7,0,7,-1,1,2},{107,0,7,0,7,-1,1,2},{107,0,7,0,7,-1,1,2},{107,0,7,0,7,-1,1,2}}, - {{107,0,7,0,7,-1,1,2},{107,0,7,0,7,-1,1,2},{107,0,7,0,7,-1,1,2},{107,0,7,0,7,-1,1,2},{107,0,7,0,7,-1,1,2},{107,0,7,0,7,-1,1,2},{107,0,7,0,7,-1,1,2},{107,0,7,0,7,-1,1,2},{107,0,7,0,7,-1,1,2},{107,0,7,0,7,-1,1,2},{107,0,7,0,7,-1,1,2},{107,0,7,0,7,-1,1,2},{107,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{104,0,7,0,7,-1,1,2},{104,0,7,0,7,-1,1,2},{104,0,7,0,7,-1,1,2},{104,0,7,0,7,-1,1,2},{104,0,7,0,7,-1,1,2},{104,0,7,0,7,-1,1,2},{104,0,7,0,7,-1,1,2},{104,0,7,0,7,-1,1,2},{104,0,7,0,7,-1,1,2},{104,0,7,0,7,-1,1,2},{104,0,7,0,7,-1,1,2},{104,0,7,0,7,-1,1,2},{104,0,7,0,7,-1,1,2},{104,0,7,0,7,-1,1,2},{104,0,7,0,7,-1,1,2},{104,0,7,0,7,-1,1,2}}, - {{104,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{1,0,12,17,4,-1,1,9},{0,0,15,2,8,-1,1,2},{0,0,15,2,8,-1,1,2},{0,0,15,2,8,-1,1,2},{0,0,15,2,8,-1,1,2},{0,0,15,2,8,-1,1,2},{0,0,15,2,8,-1,1,2},{0,0,15,2,8,-1,1,2},{0,0,15,2,8,-1,1,2},{0,0,15,2,8,-1,1,2},{0,0,15,2,8,-1,1,2},{0,0,15,2,8,-1,1,2},{0,0,15,2,8,-1,1,2},{0,0,15,2,8,-1,1,2},{0,0,15,2,8,-1,1,2},{0,0,15,2,8,-1,1,2}}, - {{0,0,15,2,8,-1,1,2},{0,0,15,2,8,-1,1,2},{0,0,15,2,8,-1,1,2},{0,0,15,2,8,-1,1,2},{0,0,15,2,8,-1,1,2},{0,0,15,2,8,-1,1,2},{0,0,15,2,8,-1,1,2},{0,0,15,2,8,-1,1,2},{0,0,15,2,8,-1,1,2},{0,0,15,2,8,-1,1,2},{0,0,15,2,8,-1,1,2},{0,0,15,2,8,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{30,0,7,0,7,-1,1,2},{30,0,7,0,7,-1,1,2},{30,0,7,0,7,-1,1,2},{30,0,7,0,7,-1,1,2},{30,0,7,0,7,-1,1,2},{30,0,7,0,7,-1,1,2},{30,0,7,0,7,-1,1,2},{30,0,7,0,7,-1,1,2},{30,0,7,0,7,-1,1,2},{30,0,7,0,7,-1,1,2},{30,0,7,0,7,-1,1,2},{30,0,7,0,7,-1,1,2},{30,0,7,0,7,-1,1,2},{30,0,7,0,7,-1,1,2},{30,0,7,0,7,-1,1,2},{30,0,7,0,7,-1,1,2}}, - {{30,0,15,0,8,-1,1,2},{30,0,15,0,8,-1,1,2},{30,0,15,0,8,-1,1,2},{30,0,15,0,8,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{13,0,7,0,7,-1,1,2},{13,0,7,0,7,-1,1,2},{13,0,7,0,7,-1,1,2},{13,0,7,0,7,-1,1,2},{13,0,7,0,7,-1,1,2},{13,0,7,0,7,-1,1,2},{13,0,7,0,7,-1,1,2},{13,0,7,0,7,-1,1,2},{13,0,7,0,7,-1,1,2},{13,0,7,0,7,-1,1,2},{13,0,7,0,7,-1,1,2},{13,0,7,0,7,-1,1,2},{13,0,7,0,7,-1,1,2},{13,0,7,0,7,-1,1,2},{13,0,7,0,7,-1,1,2},{13,0,7,0,7,-1,1,2}}, - {{13,0,7,0,7,-1,1,2},{13,0,14,0,7,-1,1,2},{13,0,7,0,7,-1,1,2},{13,0,7,0,7,-1,1,2},{13,0,7,0,7,-1,1,2},{13,0,7,0,7,-1,1,2},{13,0,7,0,7,-1,1,2},{13,0,7,0,7,-1,1,2},{13,0,7,0,7,-1,1,2},{13,0,7,0,7,-1,1,2},{13,0,14,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{89,0,7,0,7,-1,1,2},{89,0,7,0,7,-1,1,2},{89,0,7,0,7,-1,1,2},{89,0,7,0,7,-1,1,2},{89,0,7,0,7,-1,1,2},{89,0,7,0,7,-1,1,2},{89,0,7,0,7,-1,1,2},{89,0,7,0,7,-1,1,2},{89,0,7,0,7,-1,1,2},{89,0,7,0,7,-1,1,2},{89,0,7,0,7,-1,1,2},{89,0,7,0,7,-1,1,2},{89,0,7,0,7,-1,1,2},{89,0,7,0,7,-1,1,2},{89,0,7,0,7,-1,1,2},{89,0,7,0,7,-1,1,2}}, - {{89,0,7,0,7,-1,1,2},{89,0,7,0,7,-1,1,2},{89,0,7,0,7,-1,1,2},{89,0,7,0,7,-1,1,2},{89,0,7,0,7,-1,1,2},{89,0,7,0,7,-1,1,2},{89,0,12,17,7,-1,1,9},{89,0,12,17,7,-1,1,9},{89,0,12,17,7,-1,1,9},{89,0,12,17,7,-1,1,9},{89,0,12,17,7,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{53,0,7,0,7,-1,1,2},{53,0,7,0,7,-1,1,2},{53,0,7,0,7,-1,1,2},{53,0,7,0,7,-1,1,2},{53,0,7,0,7,-1,1,2},{53,0,7,0,7,-1,1,2},{53,0,7,0,7,-1,1,2},{53,0,7,0,7,-1,1,2},{53,0,7,0,7,-1,1,2},{53,0,7,0,7,-1,1,2},{53,0,7,0,7,-1,1,2},{53,0,7,0,7,-1,1,2},{53,0,7,0,7,-1,1,2},{53,0,7,0,7,-1,1,2},{53,0,7,0,7,-1,1,2},{53,0,7,0,7,-1,1,2}}, - {{53,0,7,0,7,-1,1,2},{53,0,7,0,7,-1,1,2},{53,0,7,0,7,-1,1,2},{53,0,7,0,7,-1,1,2},{53,0,7,0,7,-1,1,2},{53,0,7,0,7,-1,1,2},{53,0,7,0,7,-1,1,2},{53,0,7,0,7,-1,1,2},{53,0,7,0,7,-1,1,2},{53,0,7,0,7,-1,1,2},{53,0,7,0,7,-1,1,2},{53,0,7,0,7,-1,1,2},{53,0,7,0,7,-1,1,2},{53,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{53,0,21,0,8,-1,1,4}}, - {{61,0,7,0,7,-1,1,2},{61,0,7,0,7,-1,1,2},{61,0,7,0,7,-1,1,2},{61,0,7,0,7,-1,1,2},{61,0,7,0,7,-1,1,2},{61,0,7,0,7,-1,1,2},{61,0,7,0,7,-1,1,2},{61,0,7,0,7,-1,1,2},{61,0,7,0,7,-1,1,2},{61,0,7,0,7,-1,1,2},{61,0,7,0,7,-1,1,2},{61,0,7,0,7,-1,1,2},{61,0,7,0,7,-1,1,2},{61,0,7,0,7,-1,1,2},{61,0,7,0,7,-1,1,2},{61,0,7,0,7,-1,1,2}}, - {{61,0,7,0,7,-1,1,2},{61,0,7,0,7,-1,1,2},{61,0,7,0,7,-1,1,2},{61,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{61,0,7,0,7,-1,1,2},{61,0,7,0,7,-1,1,2},{61,0,7,0,7,-1,1,2},{61,0,7,0,7,-1,1,2},{61,0,7,0,7,-1,1,2},{61,0,7,0,7,-1,1,2},{61,0,7,0,7,-1,1,2},{61,0,7,0,7,-1,1,2}}, - {{61,0,21,0,8,-1,1,4},{61,0,14,0,7,-1,1,2},{61,0,14,0,7,-1,1,2},{61,0,14,0,7,-1,1,2},{61,0,14,0,7,-1,1,2},{61,0,14,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{9,0,9,0,7,-1,1,2},{9,0,9,0,7,-1,1,2},{9,0,9,0,7,-1,1,2},{9,0,9,0,7,-1,1,2},{9,0,9,0,7,-1,1,2},{9,0,9,0,7,-1,1,2},{9,0,9,0,7,-1,1,2},{9,0,9,0,7,-1,1,2},{9,0,9,0,7,-1,1,2},{9,0,9,0,7,-1,1,2},{9,0,9,0,7,-1,1,2},{9,0,9,0,7,-1,1,2},{9,0,9,0,7,-1,1,2},{9,0,9,0,7,-1,1,2},{9,0,9,0,7,-1,1,2},{9,0,9,0,7,-1,1,2}}, - {{9,0,9,0,7,-1,1,2},{9,0,9,0,7,-1,1,2},{9,0,9,0,7,-1,1,2},{9,0,9,0,7,-1,1,2},{9,0,9,0,7,-1,1,2},{9,0,9,0,7,-1,1,2},{9,0,9,0,7,-1,1,2},{9,0,9,0,7,-1,1,2},{9,0,5,0,7,-1,1,2},{9,0,5,0,7,-1,1,2},{9,0,5,0,7,-1,1,2},{9,0,5,0,7,-1,1,2},{9,0,5,0,7,-1,1,2},{9,0,5,0,7,-1,1,2},{9,0,5,0,7,-1,1,2},{9,0,5,0,7,-1,1,2}}, - {{9,0,5,0,7,-1,1,2},{9,0,5,0,7,-1,1,2},{9,0,5,0,7,-1,1,2},{9,0,5,0,7,-1,1,2},{9,0,5,0,7,-1,1,2},{9,0,5,0,7,-1,1,2},{9,0,5,0,7,-1,1,2},{9,0,5,0,7,-1,1,2},{9,0,5,0,7,-1,1,2},{9,0,5,0,7,-1,1,2},{9,0,5,0,7,-1,1,2},{9,0,5,0,7,-1,1,2},{9,0,5,0,7,-1,1,2},{9,0,5,0,7,-1,1,2},{9,0,5,0,7,-1,1,2},{9,0,5,0,7,-1,1,2}}, - {{51,0,7,0,7,-1,1,2},{51,0,7,0,7,-1,1,2},{51,0,7,0,7,-1,1,2},{51,0,7,0,7,-1,1,2},{51,0,7,0,7,-1,1,2},{51,0,7,0,7,-1,1,2},{51,0,7,0,7,-1,1,2},{51,0,7,0,7,-1,1,2},{51,0,7,0,7,-1,1,2},{51,0,7,0,7,-1,1,2},{51,0,7,0,7,-1,1,2},{51,0,7,0,7,-1,1,2},{51,0,7,0,7,-1,1,2},{51,0,7,0,7,-1,1,2},{51,0,7,0,7,-1,1,2},{51,0,7,0,7,-1,1,2}}, - {{50,0,7,0,7,-1,1,2},{50,0,7,0,7,-1,1,2},{50,0,7,0,7,-1,1,2},{50,0,7,0,7,-1,1,2},{50,0,7,0,7,-1,1,2},{50,0,7,0,7,-1,1,2},{50,0,7,0,7,-1,1,2},{50,0,7,0,7,-1,1,2},{50,0,7,0,7,-1,1,2},{50,0,7,0,7,-1,1,2},{50,0,7,0,7,-1,1,2},{50,0,7,0,7,-1,1,2},{50,0,7,0,7,-1,1,2},{50,0,7,0,7,-1,1,2},{50,0,7,0,7,-1,1,2},{50,0,7,0,7,-1,1,2}}, - {{50,0,7,0,7,-1,1,2},{50,0,7,0,7,-1,1,2},{50,0,7,0,7,-1,1,2},{50,0,7,0,7,-1,1,2},{50,0,7,0,7,-1,1,2},{50,0,7,0,7,-1,1,2},{50,0,7,0,7,-1,1,2},{50,0,7,0,7,-1,1,2},{50,0,7,0,7,-1,1,2},{50,0,7,0,7,-1,1,2},{50,0,7,0,7,-1,1,2},{50,0,7,0,7,-1,1,2},{50,0,7,0,7,-1,1,2},{50,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{50,0,13,0,7,0,1,19},{50,0,13,0,7,1,1,19},{50,0,13,0,7,2,1,19},{50,0,13,0,7,3,1,19},{50,0,13,0,7,4,1,19},{50,0,13,0,7,5,1,19},{50,0,13,0,7,6,1,19},{50,0,13,0,7,7,1,19},{50,0,13,0,7,8,1,19},{50,0,13,0,7,9,1,19},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{136,0,7,0,7,-1,1,2},{136,0,7,0,7,-1,1,2},{136,0,7,0,7,-1,1,2},{136,0,7,0,7,-1,1,2},{136,0,7,0,7,-1,1,2},{136,0,7,0,7,-1,1,2},{136,0,7,0,7,-1,1,2},{136,0,7,0,7,-1,1,2},{136,0,7,0,7,-1,1,2},{136,0,7,0,7,-1,1,2},{136,0,7,0,7,-1,1,2},{136,0,7,0,7,-1,1,2},{136,0,7,0,7,-1,1,2},{136,0,7,0,7,-1,1,2},{136,0,7,0,7,-1,1,2},{136,0,7,0,7,-1,1,2}}, - {{136,0,7,0,7,-1,1,2},{136,0,7,0,7,-1,1,2},{136,0,7,0,7,-1,1,2},{136,0,7,0,7,-1,1,2},{136,0,7,0,7,-1,1,2},{136,0,7,0,7,-1,1,2},{136,0,7,0,7,-1,1,2},{136,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{159,0,7,0,7,-1,1,2},{159,0,7,0,7,-1,1,2},{159,0,7,0,7,-1,1,2},{159,0,7,0,7,-1,1,2},{159,0,7,0,7,-1,1,2},{159,0,7,0,7,-1,1,2},{159,0,7,0,7,-1,1,2},{159,0,7,0,7,-1,1,2},{159,0,7,0,7,-1,1,2},{159,0,7,0,7,-1,1,2},{159,0,7,0,7,-1,1,2},{159,0,7,0,7,-1,1,2},{159,0,7,0,7,-1,1,2},{159,0,7,0,7,-1,1,2},{159,0,7,0,7,-1,1,2},{159,0,7,0,7,-1,1,2}}, - {{159,0,7,0,7,-1,1,2},{159,0,7,0,7,-1,1,2},{159,0,7,0,7,-1,1,2},{159,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{159,0,21,0,8,-1,1,2}}, - {{83,0,7,0,7,-1,1,2},{83,0,7,0,7,-1,1,2},{83,0,7,0,7,-1,1,2},{83,0,7,0,7,-1,1,2},{83,0,7,0,7,-1,1,2},{83,0,7,0,7,-1,1,2},{83,0,7,0,7,-1,1,2},{83,0,7,0,7,-1,1,2},{83,0,7,0,7,-1,1,2},{83,0,7,0,7,-1,1,2},{83,0,7,0,7,-1,1,2},{83,0,7,0,7,-1,1,2},{83,0,7,0,7,-1,1,2},{83,0,7,0,7,-1,1,2},{83,0,7,0,7,-1,1,2},{83,0,7,0,7,-1,1,2}}, - {{83,0,7,0,7,-1,1,2},{83,0,7,0,7,-1,1,2},{83,0,7,0,7,-1,1,2},{83,0,7,0,7,-1,1,2},{83,0,7,0,7,-1,1,2},{83,0,7,0,7,-1,1,2},{83,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{83,0,7,0,7,-1,1,2},{83,0,7,0,7,-1,1,2},{83,0,7,0,7,-1,1,2},{83,0,7,0,7,-1,1,2},{83,0,7,0,7,-1,1,2},{83,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{83,0,7,0,7,-1,1,2},{83,0,7,0,7,-1,1,2},{83,0,7,0,7,-1,1,2},{83,0,7,0,7,-1,1,2},{83,0,7,0,7,-1,1,2},{83,0,7,0,7,-1,1,2},{83,0,7,0,7,-1,1,2},{83,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{47,0,7,1,7,-1,1,2},{47,0,7,1,7,-1,1,2},{47,0,7,1,7,-1,1,2},{47,0,7,1,7,-1,1,2},{47,0,7,1,7,-1,1,2},{47,0,7,1,7,-1,1,2},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{47,0,7,1,7,-1,1,2},{103,0,2,1,12,-1,1,0},{47,0,7,1,7,-1,1,2},{47,0,7,1,7,-1,1,2},{47,0,7,1,7,-1,1,2},{47,0,7,1,7,-1,1,2},{47,0,7,1,7,-1,1,2},{47,0,7,1,7,-1,1,2}}, - {{47,0,7,1,7,-1,1,2},{47,0,7,1,7,-1,1,2},{47,0,7,1,7,-1,1,2},{47,0,7,1,7,-1,1,2},{47,0,7,1,7,-1,1,2},{47,0,7,1,7,-1,1,2},{47,0,7,1,7,-1,1,2},{47,0,7,1,7,-1,1,2},{47,0,7,1,7,-1,1,2},{47,0,7,1,7,-1,1,2},{47,0,7,1,7,-1,1,2},{47,0,7,1,7,-1,1,2},{47,0,7,1,7,-1,1,2},{47,0,7,1,7,-1,1,2},{47,0,7,1,7,-1,1,2},{47,0,7,1,7,-1,1,2}}, - {{47,0,7,1,7,-1,1,2},{47,0,7,1,7,-1,1,2},{47,0,7,1,7,-1,1,2},{47,0,7,1,7,-1,1,2},{47,0,7,1,7,-1,1,2},{47,0,7,1,7,-1,1,2},{103,0,2,1,12,-1,1,0},{47,0,7,1,7,-1,1,2},{47,0,7,1,7,-1,1,2},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{47,0,7,1,7,-1,1,2},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{47,0,7,1,7,-1,1,2}}, - {{116,0,7,1,7,-1,1,2},{116,0,7,1,7,-1,1,2},{116,0,7,1,7,-1,1,2},{116,0,7,1,7,-1,1,2},{116,0,7,1,7,-1,1,2},{116,0,7,1,7,-1,1,2},{116,0,7,1,7,-1,1,2},{116,0,7,1,7,-1,1,2},{116,0,7,1,7,-1,1,2},{116,0,7,1,7,-1,1,2},{116,0,7,1,7,-1,1,2},{116,0,7,1,7,-1,1,2},{116,0,7,1,7,-1,1,2},{116,0,7,1,7,-1,1,2},{116,0,7,1,7,-1,1,2},{116,0,7,1,7,-1,1,2}}, - {{116,0,7,1,7,-1,1,2},{116,0,7,1,7,-1,1,2},{116,0,7,1,7,-1,1,2},{116,0,7,1,7,-1,1,2},{116,0,7,1,7,-1,1,2},{116,0,7,1,7,-1,1,2},{103,0,2,1,12,-1,1,0},{116,0,21,1,8,-1,1,4},{116,0,15,1,8,-1,1,2},{116,0,15,1,8,-1,1,2},{116,0,15,1,8,-1,1,2},{116,0,15,1,8,-1,1,2},{116,0,15,1,8,-1,1,2},{116,0,15,1,8,-1,1,2},{116,0,15,1,8,-1,1,2},{116,0,15,1,8,-1,1,2}}, - {{144,0,7,1,7,-1,1,2},{144,0,7,1,7,-1,1,2},{144,0,7,1,7,-1,1,2},{144,0,7,1,7,-1,1,2},{144,0,7,1,7,-1,1,2},{144,0,7,1,7,-1,1,2},{144,0,7,1,7,-1,1,2},{144,0,7,1,7,-1,1,2},{144,0,7,1,7,-1,1,2},{144,0,7,1,7,-1,1,2},{144,0,7,1,7,-1,1,2},{144,0,7,1,7,-1,1,2},{144,0,7,1,7,-1,1,2},{144,0,7,1,7,-1,1,2},{144,0,7,1,7,-1,1,2},{144,0,7,1,7,-1,1,2}}, - {{144,0,7,1,7,-1,1,2},{144,0,7,1,7,-1,1,2},{144,0,7,1,7,-1,1,2},{144,0,7,1,7,-1,1,2},{144,0,7,1,7,-1,1,2},{144,0,7,1,7,-1,1,2},{144,0,7,1,7,-1,1,2},{144,0,26,1,8,-1,1,2},{144,0,26,1,8,-1,1,2},{144,0,15,1,8,-1,1,2},{144,0,15,1,8,-1,1,2},{144,0,15,1,8,-1,1,2},{144,0,15,1,8,-1,1,2},{144,0,15,1,8,-1,1,2},{144,0,15,1,8,-1,1,2},{144,0,15,1,8,-1,1,2}}, - {{143,0,7,1,7,-1,1,2},{143,0,7,1,7,-1,1,2},{143,0,7,1,7,-1,1,2},{143,0,7,1,7,-1,1,2},{143,0,7,1,7,-1,1,2},{143,0,7,1,7,-1,1,2},{143,0,7,1,7,-1,1,2},{143,0,7,1,7,-1,1,2},{143,0,7,1,7,-1,1,2},{143,0,7,1,7,-1,1,2},{143,0,7,1,7,-1,1,2},{143,0,7,1,7,-1,1,2},{143,0,7,1,7,-1,1,2},{143,0,7,1,7,-1,1,2},{143,0,7,1,7,-1,1,2},{143,0,7,1,7,-1,1,2}}, - {{143,0,7,1,7,-1,1,2},{143,0,7,1,7,-1,1,2},{143,0,7,1,7,-1,1,2},{143,0,7,1,7,-1,1,2},{143,0,7,1,7,-1,1,2},{143,0,7,1,7,-1,1,2},{143,0,7,1,7,-1,1,2},{143,0,7,1,7,-1,1,2},{143,0,7,1,7,-1,1,2},{143,0,7,1,7,-1,1,2},{143,0,7,1,7,-1,1,2},{143,0,7,1,7,-1,1,2},{143,0,7,1,7,-1,1,2},{143,0,7,1,7,-1,1,2},{143,0,7,1,7,-1,1,2},{103,0,2,1,12,-1,1,0}}, - {{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{143,0,15,1,8,-1,1,2},{143,0,15,1,8,-1,1,2},{143,0,15,1,8,-1,1,2},{143,0,15,1,8,-1,1,2},{143,0,15,1,8,-1,1,2},{143,0,15,1,8,-1,1,2},{143,0,15,1,8,-1,1,2},{143,0,15,1,8,-1,1,2},{143,0,15,1,8,-1,1,2}}, - {{162,0,7,1,7,-1,1,2},{162,0,7,1,7,-1,1,2},{162,0,7,1,7,-1,1,2},{162,0,7,1,7,-1,1,2},{162,0,7,1,7,-1,1,2},{162,0,7,1,7,-1,1,2},{162,0,7,1,7,-1,1,2},{162,0,7,1,7,-1,1,2},{162,0,7,1,7,-1,1,2},{162,0,7,1,7,-1,1,2},{162,0,7,1,7,-1,1,2},{162,0,7,1,7,-1,1,2},{162,0,7,1,7,-1,1,2},{162,0,7,1,7,-1,1,2},{162,0,7,1,7,-1,1,2},{162,0,7,1,7,-1,1,2}}, - {{162,0,7,1,7,-1,1,2},{162,0,7,1,7,-1,1,2},{162,0,7,1,7,-1,1,2},{103,0,2,1,12,-1,1,0},{162,0,7,1,7,-1,1,2},{162,0,7,1,7,-1,1,2},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{162,0,15,1,8,-1,1,2},{162,0,15,1,8,-1,1,2},{162,0,15,1,8,-1,1,2},{162,0,15,1,8,-1,1,2},{162,0,15,1,8,-1,1,2}}, - {{91,0,7,1,7,-1,1,2},{91,0,7,1,7,-1,1,2},{91,0,7,1,7,-1,1,2},{91,0,7,1,7,-1,1,2},{91,0,7,1,7,-1,1,2},{91,0,7,1,7,-1,1,2},{91,0,7,1,7,-1,1,2},{91,0,7,1,7,-1,1,2},{91,0,7,1,7,-1,1,2},{91,0,7,1,7,-1,1,2},{91,0,7,1,7,-1,1,2},{91,0,7,1,7,-1,1,2},{91,0,7,1,7,-1,1,2},{91,0,7,1,7,-1,1,2},{91,0,7,1,7,-1,1,2},{91,0,7,1,7,-1,1,2}}, - {{91,0,7,1,7,-1,1,2},{91,0,7,1,7,-1,1,2},{91,0,7,1,7,-1,1,2},{91,0,7,1,7,-1,1,2},{91,0,7,1,7,-1,1,2},{91,0,7,1,7,-1,1,2},{91,0,15,1,8,-1,1,2},{91,0,15,1,8,-1,1,2},{91,0,15,1,8,-1,1,2},{91,0,15,1,8,-1,1,2},{91,0,15,1,8,-1,1,2},{91,0,15,1,8,-1,1,2},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{91,0,21,10,8,-1,1,4}}, - {{108,0,7,1,7,-1,1,2},{108,0,7,1,7,-1,1,2},{108,0,7,1,7,-1,1,2},{108,0,7,1,7,-1,1,2},{108,0,7,1,7,-1,1,2},{108,0,7,1,7,-1,1,2},{108,0,7,1,7,-1,1,2},{108,0,7,1,7,-1,1,2},{108,0,7,1,7,-1,1,2},{108,0,7,1,7,-1,1,2},{108,0,7,1,7,-1,1,2},{108,0,7,1,7,-1,1,2},{108,0,7,1,7,-1,1,2},{108,0,7,1,7,-1,1,2},{108,0,7,1,7,-1,1,2},{108,0,7,1,7,-1,1,2}}, - {{108,0,7,1,7,-1,1,2},{108,0,7,1,7,-1,1,2},{108,0,7,1,7,-1,1,2},{108,0,7,1,7,-1,1,2},{108,0,7,1,7,-1,1,2},{108,0,7,1,7,-1,1,2},{108,0,7,1,7,-1,1,2},{108,0,7,1,7,-1,1,2},{108,0,7,1,7,-1,1,2},{108,0,7,1,7,-1,1,2},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{108,0,21,1,8,-1,1,2}}, - {{86,0,7,1,7,-1,0,2},{86,0,7,1,7,-1,0,2},{86,0,7,1,7,-1,0,2},{86,0,7,1,7,-1,0,2},{86,0,7,1,7,-1,0,2},{86,0,7,1,7,-1,0,2},{86,0,7,1,7,-1,0,2},{86,0,7,1,7,-1,0,2},{86,0,7,1,7,-1,0,2},{86,0,7,1,7,-1,0,2},{86,0,7,1,7,-1,0,2},{86,0,7,1,7,-1,0,2},{86,0,7,1,7,-1,0,2},{86,0,7,1,7,-1,0,2},{86,0,7,1,7,-1,0,2},{86,0,7,1,7,-1,0,2}}, - {{141,0,7,1,7,-1,1,2},{141,0,7,1,7,-1,1,2},{141,0,7,1,7,-1,1,2},{141,0,7,1,7,-1,1,2},{141,0,7,1,7,-1,1,2},{141,0,7,1,7,-1,1,2},{141,0,7,1,7,-1,1,2},{141,0,7,1,7,-1,1,2},{141,0,7,1,7,-1,1,2},{141,0,7,1,7,-1,1,2},{141,0,7,1,7,-1,1,2},{141,0,7,1,7,-1,1,2},{141,0,7,1,7,-1,1,2},{141,0,7,1,7,-1,1,2},{141,0,7,1,7,-1,1,2},{141,0,7,1,7,-1,1,2}}, - {{141,0,7,1,7,-1,1,2},{141,0,7,1,7,-1,1,2},{141,0,7,1,7,-1,1,2},{141,0,7,1,7,-1,1,2},{141,0,7,1,7,-1,1,2},{141,0,7,1,7,-1,1,2},{141,0,7,1,7,-1,1,2},{141,0,7,1,7,-1,1,2},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{141,0,15,1,8,-1,1,2},{141,0,15,1,8,-1,1,2},{141,0,7,1,7,-1,1,2},{141,0,7,1,7,-1,1,2}}, - {{141,0,15,1,8,-1,1,2},{141,0,15,1,8,-1,1,2},{141,0,15,1,8,-1,1,2},{141,0,15,1,8,-1,1,2},{141,0,15,1,8,-1,1,2},{141,0,15,1,8,-1,1,2},{141,0,15,1,8,-1,1,2},{141,0,15,1,8,-1,1,2},{141,0,15,1,8,-1,1,2},{141,0,15,1,8,-1,1,2},{141,0,15,1,8,-1,1,2},{141,0,15,1,8,-1,1,2},{141,0,15,1,8,-1,1,2},{141,0,15,1,8,-1,1,2},{141,0,15,1,8,-1,1,2},{141,0,15,1,8,-1,1,2}}, - {{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{141,0,15,1,8,-1,1,2},{141,0,15,1,8,-1,1,2},{141,0,15,1,8,-1,1,2},{141,0,15,1,8,-1,1,2},{141,0,15,1,8,-1,1,2},{141,0,15,1,8,-1,1,2},{141,0,15,1,8,-1,1,2},{141,0,15,1,8,-1,1,2},{141,0,15,1,8,-1,1,2},{141,0,15,1,8,-1,1,2},{141,0,15,1,8,-1,1,2},{141,0,15,1,8,-1,1,2},{141,0,15,1,8,-1,1,2},{141,0,15,1,8,-1,1,2}}, - {{57,0,7,1,7,-1,1,2},{57,0,12,17,7,-1,1,9},{57,0,12,17,7,-1,1,9},{57,0,12,17,7,-1,1,9},{103,0,2,1,12,-1,1,0},{57,0,12,17,7,-1,1,9},{57,0,12,17,7,-1,1,9},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{57,0,12,17,7,-1,1,9},{57,0,12,17,7,-1,1,9},{57,0,12,17,7,-1,1,9},{57,0,12,17,7,-1,1,9}}, - {{57,0,7,1,7,-1,1,2},{57,0,7,1,7,-1,1,2},{57,0,7,1,7,-1,1,2},{57,0,7,1,7,-1,1,2},{103,0,2,1,12,-1,1,0},{57,0,7,1,7,-1,1,2},{57,0,7,1,7,-1,1,2},{57,0,7,1,7,-1,1,2},{103,0,2,1,12,-1,1,0},{57,0,7,1,7,-1,1,2},{57,0,7,1,7,-1,1,2},{57,0,7,1,7,-1,1,2},{57,0,7,1,7,-1,1,2},{57,0,7,1,7,-1,1,2},{57,0,7,1,7,-1,1,2},{57,0,7,1,7,-1,1,2}}, - {{57,0,7,1,7,-1,1,2},{57,0,7,1,7,-1,1,2},{57,0,7,1,7,-1,1,2},{57,0,7,1,7,-1,1,2},{57,0,7,1,7,-1,1,2},{57,0,7,1,7,-1,1,2},{57,0,7,1,7,-1,1,2},{57,0,7,1,7,-1,1,2},{57,0,7,1,7,-1,1,2},{57,0,7,1,7,-1,1,2},{57,0,7,1,7,-1,1,2},{57,0,7,1,7,-1,1,2},{57,0,7,1,7,-1,1,2},{57,0,7,1,7,-1,1,2},{57,0,7,1,7,-1,1,2},{57,0,7,1,7,-1,1,2}}, - {{57,0,7,1,7,-1,1,2},{57,0,7,1,7,-1,1,2},{57,0,7,1,7,-1,1,2},{57,0,7,1,7,-1,1,2},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{57,0,12,17,7,-1,1,9},{57,0,12,17,7,-1,1,9},{57,0,12,17,7,-1,1,9},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{57,0,12,17,7,-1,1,9}}, - {{57,0,15,1,8,1,1,2},{57,0,15,1,8,2,1,2},{57,0,15,1,8,3,1,2},{57,0,15,1,8,4,1,2},{57,0,15,1,8,-1,1,2},{57,0,15,1,8,-1,1,2},{57,0,15,1,8,-1,1,2},{57,0,15,1,8,-1,1,2},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0}}, - {{57,0,21,1,8,-1,1,4},{57,0,21,1,8,-1,1,4},{57,0,21,1,8,-1,1,4},{57,0,21,1,8,-1,1,4},{57,0,21,1,8,-1,1,4},{57,0,21,1,8,-1,1,4},{57,0,21,1,8,-1,1,4},{57,0,21,1,8,-1,1,4},{57,0,21,1,8,-1,1,2},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0}}, - {{133,0,7,1,7,-1,1,2},{133,0,7,1,7,-1,1,2},{133,0,7,1,7,-1,1,2},{133,0,7,1,7,-1,1,2},{133,0,7,1,7,-1,1,2},{133,0,7,1,7,-1,1,2},{133,0,7,1,7,-1,1,2},{133,0,7,1,7,-1,1,2},{133,0,7,1,7,-1,1,2},{133,0,7,1,7,-1,1,2},{133,0,7,1,7,-1,1,2},{133,0,7,1,7,-1,1,2},{133,0,7,1,7,-1,1,2},{133,0,7,1,7,-1,1,2},{133,0,7,1,7,-1,1,2},{133,0,7,1,7,-1,1,2}}, - {{133,0,7,1,7,-1,1,2},{133,0,7,1,7,-1,1,2},{133,0,7,1,7,-1,1,2},{133,0,7,1,7,-1,1,2},{133,0,7,1,7,-1,1,2},{133,0,7,1,7,-1,1,2},{133,0,7,1,7,-1,1,2},{133,0,7,1,7,-1,1,2},{133,0,7,1,7,-1,1,2},{133,0,7,1,7,-1,1,2},{133,0,7,1,7,-1,1,2},{133,0,7,1,7,-1,1,2},{133,0,7,1,7,-1,1,2},{133,0,15,1,8,-1,1,2},{133,0,15,1,8,-1,1,2},{133,0,21,1,8,-1,1,2}}, - {{142,0,7,1,7,-1,1,2},{142,0,7,1,7,-1,1,2},{142,0,7,1,7,-1,1,2},{142,0,7,1,7,-1,1,2},{142,0,7,1,7,-1,1,2},{142,0,7,1,7,-1,1,2},{142,0,7,1,7,-1,1,2},{142,0,7,1,7,-1,1,2},{142,0,7,1,7,-1,1,2},{142,0,7,1,7,-1,1,2},{142,0,7,1,7,-1,1,2},{142,0,7,1,7,-1,1,2},{142,0,7,1,7,-1,1,2},{142,0,7,1,7,-1,1,2},{142,0,7,1,7,-1,1,2},{142,0,7,1,7,-1,1,2}}, - {{142,0,7,1,7,-1,1,2},{142,0,7,1,7,-1,1,2},{142,0,7,1,7,-1,1,2},{142,0,7,1,7,-1,1,2},{142,0,7,1,7,-1,1,2},{142,0,7,1,7,-1,1,2},{142,0,7,1,7,-1,1,2},{142,0,7,1,7,-1,1,2},{142,0,7,1,7,-1,1,2},{142,0,7,1,7,-1,1,2},{142,0,7,1,7,-1,1,2},{142,0,7,1,7,-1,1,2},{142,0,7,1,7,-1,1,2},{142,0,15,1,8,-1,1,2},{142,0,15,1,8,-1,1,2},{142,0,15,1,8,-1,1,2}}, - {{121,0,7,1,7,-1,1,2},{121,0,7,1,7,-1,1,2},{121,0,7,1,7,-1,1,2},{121,0,7,1,7,-1,1,2},{121,0,7,1,7,-1,1,2},{121,0,7,1,7,-1,1,2},{121,0,7,1,7,-1,1,2},{121,0,7,1,7,-1,1,2},{121,0,26,1,8,-1,1,2},{121,0,7,1,7,-1,1,2},{121,0,7,1,7,-1,1,2},{121,0,7,1,7,-1,1,2},{121,0,7,1,7,-1,1,2},{121,0,7,1,7,-1,1,2},{121,0,7,1,7,-1,1,2},{121,0,7,1,7,-1,1,2}}, - {{121,0,7,1,7,-1,1,2},{121,0,7,1,7,-1,1,2},{121,0,7,1,7,-1,1,2},{121,0,7,1,7,-1,1,2},{121,0,7,1,7,-1,1,2},{121,0,7,1,7,-1,1,2},{121,0,7,1,7,-1,1,2},{121,0,7,1,7,-1,1,2},{121,0,7,1,7,-1,1,2},{121,0,7,1,7,-1,1,2},{121,0,7,1,7,-1,1,2},{121,0,7,1,7,-1,1,2},{121,0,7,1,7,-1,1,2},{121,0,7,1,7,-1,1,2},{121,0,7,1,7,-1,1,2},{121,0,7,1,7,-1,1,2}}, - {{121,0,7,1,7,-1,1,2},{121,0,7,1,7,-1,1,2},{121,0,7,1,7,-1,1,2},{121,0,7,1,7,-1,1,2},{121,0,7,1,7,-1,1,2},{121,0,12,17,7,-1,1,9},{121,0,12,17,7,-1,1,9},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{121,0,15,1,8,-1,1,2},{121,0,15,1,8,-1,1,2},{121,0,15,1,8,-1,1,2},{121,0,15,1,8,-1,1,2},{121,0,15,1,8,-1,1,2}}, - {{121,0,21,1,8,-1,1,4},{121,0,21,1,8,-1,1,4},{121,0,21,1,8,-1,1,4},{121,0,21,1,8,-1,1,4},{121,0,21,1,8,-1,1,4},{121,0,21,1,8,-1,1,4},{121,0,21,1,8,-1,1,15},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0}}, - {{117,0,7,1,7,-1,1,2},{117,0,7,1,7,-1,1,2},{117,0,7,1,7,-1,1,2},{117,0,7,1,7,-1,1,2},{117,0,7,1,7,-1,1,2},{117,0,7,1,7,-1,1,2},{117,0,7,1,7,-1,1,2},{117,0,7,1,7,-1,1,2},{117,0,7,1,7,-1,1,2},{117,0,7,1,7,-1,1,2},{117,0,7,1,7,-1,1,2},{117,0,7,1,7,-1,1,2},{117,0,7,1,7,-1,1,2},{117,0,7,1,7,-1,1,2},{117,0,7,1,7,-1,1,2},{117,0,7,1,7,-1,1,2}}, - {{117,0,7,1,7,-1,1,2},{117,0,7,1,7,-1,1,2},{117,0,7,1,7,-1,1,2},{117,0,7,1,7,-1,1,2},{117,0,7,1,7,-1,1,2},{117,0,7,1,7,-1,1,2},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{117,0,21,10,8,-1,1,4},{117,0,21,10,8,-1,1,4},{117,0,21,10,8,-1,1,4},{117,0,21,10,8,-1,1,4},{117,0,21,10,8,-1,1,4},{117,0,21,10,8,-1,1,4},{117,0,21,10,8,-1,1,4}}, - {{125,0,7,1,7,-1,1,2},{125,0,7,1,7,-1,1,2},{125,0,7,1,7,-1,1,2},{125,0,7,1,7,-1,1,2},{125,0,7,1,7,-1,1,2},{125,0,7,1,7,-1,1,2},{125,0,7,1,7,-1,1,2},{125,0,7,1,7,-1,1,2},{125,0,7,1,7,-1,1,2},{125,0,7,1,7,-1,1,2},{125,0,7,1,7,-1,1,2},{125,0,7,1,7,-1,1,2},{125,0,7,1,7,-1,1,2},{125,0,7,1,7,-1,1,2},{125,0,7,1,7,-1,1,2},{125,0,7,1,7,-1,1,2}}, - {{125,0,7,1,7,-1,1,2},{125,0,7,1,7,-1,1,2},{125,0,7,1,7,-1,1,2},{125,0,7,1,7,-1,1,2},{125,0,7,1,7,-1,1,2},{125,0,7,1,7,-1,1,2},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{125,0,15,1,8,-1,1,2},{125,0,15,1,8,-1,1,2},{125,0,15,1,8,-1,1,2},{125,0,15,1,8,-1,1,2},{125,0,15,1,8,-1,1,2},{125,0,15,1,8,-1,1,2},{125,0,15,1,8,-1,1,2},{125,0,15,1,8,-1,1,2}}, - {{122,0,7,1,7,-1,1,2},{122,0,7,1,7,-1,1,2},{122,0,7,1,7,-1,1,2},{122,0,7,1,7,-1,1,2},{122,0,7,1,7,-1,1,2},{122,0,7,1,7,-1,1,2},{122,0,7,1,7,-1,1,2},{122,0,7,1,7,-1,1,2},{122,0,7,1,7,-1,1,2},{122,0,7,1,7,-1,1,2},{122,0,7,1,7,-1,1,2},{122,0,7,1,7,-1,1,2},{122,0,7,1,7,-1,1,2},{122,0,7,1,7,-1,1,2},{122,0,7,1,7,-1,1,2},{122,0,7,1,7,-1,1,2}}, - {{122,0,7,1,7,-1,1,2},{122,0,7,1,7,-1,1,2},{122,0,7,1,7,-1,1,2},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{122,0,15,1,8,-1,1,2},{122,0,15,1,8,-1,1,2},{122,0,15,1,8,-1,1,2},{122,0,15,1,8,-1,1,2},{122,0,15,1,8,-1,1,2},{122,0,15,1,8,-1,1,2},{122,0,15,1,8,-1,1,2},{122,0,15,1,8,-1,1,2}}, - {{123,0,7,1,7,-1,1,2},{123,0,7,1,7,-1,1,2},{123,0,7,1,7,-1,1,2},{123,0,7,1,7,-1,1,2},{123,0,7,1,7,-1,1,2},{123,0,7,1,7,-1,1,2},{123,0,7,1,7,-1,1,2},{123,0,7,1,7,-1,1,2},{123,0,7,1,7,-1,1,2},{123,0,7,1,7,-1,1,2},{123,0,7,1,7,-1,1,2},{123,0,7,1,7,-1,1,2},{123,0,7,1,7,-1,1,2},{123,0,7,1,7,-1,1,2},{123,0,7,1,7,-1,1,2},{123,0,7,1,7,-1,1,2}}, - {{123,0,7,1,7,-1,1,2},{123,0,7,1,7,-1,1,2},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{123,0,21,1,8,-1,1,2},{123,0,21,1,8,-1,1,2},{123,0,21,1,8,-1,1,2},{123,0,21,1,8,-1,1,2},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0}}, - {{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{123,0,15,1,8,-1,1,2},{123,0,15,1,8,-1,1,2},{123,0,15,1,8,-1,1,2},{123,0,15,1,8,-1,1,2},{123,0,15,1,8,-1,1,2},{123,0,15,1,8,-1,1,2},{123,0,15,1,8,-1,1,2}}, - {{88,0,7,1,7,-1,1,2},{88,0,7,1,7,-1,1,2},{88,0,7,1,7,-1,1,2},{88,0,7,1,7,-1,1,2},{88,0,7,1,7,-1,1,2},{88,0,7,1,7,-1,1,2},{88,0,7,1,7,-1,1,2},{88,0,7,1,7,-1,1,2},{88,0,7,1,7,-1,1,2},{88,0,7,1,7,-1,1,2},{88,0,7,1,7,-1,1,2},{88,0,7,1,7,-1,1,2},{88,0,7,1,7,-1,1,2},{88,0,7,1,7,-1,1,2},{88,0,7,1,7,-1,1,2},{88,0,7,1,7,-1,1,2}}, - {{88,0,7,1,7,-1,1,2},{88,0,7,1,7,-1,1,2},{88,0,7,1,7,-1,1,2},{88,0,7,1,7,-1,1,2},{88,0,7,1,7,-1,1,2},{88,0,7,1,7,-1,1,2},{88,0,7,1,7,-1,1,2},{88,0,7,1,7,-1,1,2},{88,0,7,1,7,-1,1,2},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0}}, - {{76,0,9,1,7,-1,1,2},{76,0,9,1,7,-1,1,2},{76,0,9,1,7,-1,1,2},{76,0,9,1,7,-1,1,2},{76,0,9,1,7,-1,1,2},{76,0,9,1,7,-1,1,2},{76,0,9,1,7,-1,1,2},{76,0,9,1,7,-1,1,2},{76,0,9,1,7,-1,1,2},{76,0,9,1,7,-1,1,2},{76,0,9,1,7,-1,1,2},{76,0,9,1,7,-1,1,2},{76,0,9,1,7,-1,1,2},{76,0,9,1,7,-1,1,2},{76,0,9,1,7,-1,1,2},{76,0,9,1,7,-1,1,2}}, - {{76,0,9,1,7,-1,1,2},{76,0,9,1,7,-1,1,2},{76,0,9,1,7,-1,1,2},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0}}, - {{76,0,5,1,7,-1,1,2},{76,0,5,1,7,-1,1,2},{76,0,5,1,7,-1,1,2},{76,0,5,1,7,-1,1,2},{76,0,5,1,7,-1,1,2},{76,0,5,1,7,-1,1,2},{76,0,5,1,7,-1,1,2},{76,0,5,1,7,-1,1,2},{76,0,5,1,7,-1,1,2},{76,0,5,1,7,-1,1,2},{76,0,5,1,7,-1,1,2},{76,0,5,1,7,-1,1,2},{76,0,5,1,7,-1,1,2},{76,0,5,1,7,-1,1,2},{76,0,5,1,7,-1,1,2},{76,0,5,1,7,-1,1,2}}, - {{76,0,5,1,7,-1,1,2},{76,0,5,1,7,-1,1,2},{76,0,5,1,7,-1,1,2},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{76,0,15,1,8,-1,1,2},{76,0,15,1,8,-1,1,2},{76,0,15,1,8,-1,1,2},{76,0,15,1,8,-1,1,2},{76,0,15,1,8,-1,1,2},{76,0,15,1,8,-1,1,2}}, - {{2,0,15,5,8,1,1,2},{2,0,15,5,8,2,1,2},{2,0,15,5,8,3,1,2},{2,0,15,5,8,4,1,2},{2,0,15,5,8,5,1,2},{2,0,15,5,8,6,1,2},{2,0,15,5,8,7,1,2},{2,0,15,5,8,8,1,2},{2,0,15,5,8,9,1,2},{2,0,15,5,8,-1,1,2},{2,0,15,5,8,-1,1,2},{2,0,15,5,8,-1,1,2},{2,0,15,5,8,-1,1,2},{2,0,15,5,8,-1,1,2},{2,0,15,5,8,-1,1,2},{2,0,15,5,8,-1,1,2}}, - {{2,0,15,5,8,-1,1,2},{2,0,15,5,8,-1,1,2},{2,0,15,5,8,-1,1,2},{2,0,15,5,8,-1,1,2},{2,0,15,5,8,-1,1,2},{2,0,15,5,8,-1,1,2},{2,0,15,5,8,-1,1,2},{2,0,15,5,8,-1,1,2},{2,0,15,5,8,-1,1,2},{2,0,15,5,8,-1,1,2},{2,0,15,5,8,-1,1,2},{2,0,15,5,8,-1,1,2},{2,0,15,5,8,-1,1,2},{2,0,15,5,8,-1,1,2},{2,0,15,5,8,-1,1,2},{103,0,2,1,12,-1,1,0}}, - {{65,0,10,0,7,-1,1,9},{65,0,12,17,7,-1,1,9},{65,0,10,0,7,-1,1,9},{65,0,7,0,7,-1,1,2},{65,0,7,0,7,-1,1,2},{65,0,7,0,7,-1,1,2},{65,0,7,0,7,-1,1,2},{65,0,7,0,7,-1,1,2},{65,0,7,0,7,-1,1,2},{65,0,7,0,7,-1,1,2},{65,0,7,0,7,-1,1,2},{65,0,7,0,7,-1,1,2},{65,0,7,0,7,-1,1,2},{65,0,7,0,7,-1,1,2},{65,0,7,0,7,-1,1,2},{65,0,7,0,7,-1,1,2}}, - {{65,0,7,0,7,-1,1,2},{65,0,7,0,7,-1,1,2},{65,0,7,0,7,-1,1,2},{65,0,7,0,7,-1,1,2},{65,0,7,0,7,-1,1,2},{65,0,7,0,7,-1,1,2},{65,0,7,0,7,-1,1,2},{65,0,7,0,7,-1,1,2},{65,0,7,0,7,-1,1,2},{65,0,7,0,7,-1,1,2},{65,0,7,0,7,-1,1,2},{65,0,7,0,7,-1,1,2},{65,0,7,0,7,-1,1,2},{65,0,7,0,7,-1,1,2},{65,0,7,0,7,-1,1,2},{65,0,7,0,7,-1,1,2}}, - {{65,0,7,0,7,-1,1,2},{65,0,7,0,7,-1,1,2},{65,0,7,0,7,-1,1,2},{65,0,7,0,7,-1,1,2},{65,0,7,0,7,-1,1,2},{65,0,7,0,7,-1,1,2},{65,0,7,0,7,-1,1,2},{65,0,7,0,7,-1,1,2},{65,0,12,17,7,-1,1,9},{65,0,12,17,7,-1,1,9},{65,0,12,17,7,-1,1,9},{65,0,12,17,7,-1,1,9},{65,0,12,17,7,-1,1,9},{65,0,12,17,7,-1,1,9},{65,0,12,17,7,-1,1,9},{65,0,12,17,7,-1,1,9}}, - {{65,0,12,17,7,-1,1,9},{65,0,12,17,7,-1,1,9},{65,0,12,17,7,-1,1,9},{65,0,12,17,7,-1,1,9},{65,0,12,17,7,-1,1,9},{65,0,12,17,7,-1,1,9},{65,0,12,17,7,-1,1,9},{65,0,21,0,8,-1,1,4},{65,0,21,0,8,-1,1,4},{65,0,21,0,8,-1,1,2},{65,0,21,0,8,-1,1,2},{65,0,21,0,8,-1,1,2},{65,0,21,0,8,-1,1,2},{65,0,21,0,8,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{65,0,15,10,8,1,1,2},{65,0,15,10,8,2,1,2},{65,0,15,10,8,3,1,2},{65,0,15,10,8,4,1,2},{65,0,15,10,8,5,1,2},{65,0,15,10,8,6,1,2},{65,0,15,10,8,7,1,2},{65,0,15,10,8,8,1,2},{65,0,15,10,8,9,1,2},{65,0,15,10,8,-1,1,2},{65,0,15,10,8,-1,1,2},{65,0,15,10,8,-1,1,2},{65,0,15,10,8,-1,1,2},{65,0,15,10,8,-1,1,2}}, - {{65,0,15,10,8,-1,1,2},{65,0,15,10,8,-1,1,2},{65,0,15,10,8,-1,1,2},{65,0,15,10,8,-1,1,2},{65,0,15,10,8,-1,1,2},{65,0,15,10,8,-1,1,2},{65,0,13,0,7,0,1,19},{65,0,13,0,7,1,1,19},{65,0,13,0,7,2,1,19},{65,0,13,0,7,3,1,19},{65,0,13,0,7,4,1,19},{65,0,13,0,7,5,1,19},{65,0,13,0,7,6,1,19},{65,0,13,0,7,7,1,19},{65,0,13,0,7,8,1,19},{65,0,13,0,7,9,1,19}}, - {{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{65,0,12,17,7,-1,1,9}}, - {{120,0,12,17,7,-1,1,9},{120,0,12,17,7,-1,1,9},{120,0,10,0,7,-1,1,9},{120,0,7,0,7,-1,1,2},{120,0,7,0,7,-1,1,2},{120,0,7,0,7,-1,1,2},{120,0,7,0,7,-1,1,2},{120,0,7,0,7,-1,1,2},{120,0,7,0,7,-1,1,2},{120,0,7,0,7,-1,1,2},{120,0,7,0,7,-1,1,2},{120,0,7,0,7,-1,1,2},{120,0,7,0,7,-1,1,2},{120,0,7,0,7,-1,1,2},{120,0,7,0,7,-1,1,2},{120,0,7,0,7,-1,1,2}}, - {{120,0,7,0,7,-1,1,2},{120,0,7,0,7,-1,1,2},{120,0,7,0,7,-1,1,2},{120,0,7,0,7,-1,1,2},{120,0,7,0,7,-1,1,2},{120,0,7,0,7,-1,1,2},{120,0,7,0,7,-1,1,2},{120,0,7,0,7,-1,1,2},{120,0,7,0,7,-1,1,2},{120,0,7,0,7,-1,1,2},{120,0,7,0,7,-1,1,2},{120,0,7,0,7,-1,1,2},{120,0,7,0,7,-1,1,2},{120,0,7,0,7,-1,1,2},{120,0,7,0,7,-1,1,2},{120,0,7,0,7,-1,1,2}}, - {{120,0,10,0,7,-1,1,9},{120,0,10,0,7,-1,1,9},{120,0,10,0,7,-1,1,9},{120,0,12,17,7,-1,1,9},{120,0,12,17,7,-1,1,9},{120,0,12,17,7,-1,1,9},{120,0,12,17,7,-1,1,9},{120,0,10,0,7,-1,1,9},{120,0,10,0,7,-1,1,9},{120,0,12,17,7,-1,1,9},{120,0,12,17,7,-1,1,9},{120,0,21,0,8,-1,1,2},{120,0,21,0,8,-1,1,2},{120,0,1,0,8,-1,1,2},{120,0,21,0,8,-1,1,4},{120,0,21,0,8,-1,1,4}}, - {{120,0,21,0,8,-1,1,4},{120,0,21,0,8,-1,1,4},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{152,0,7,0,7,-1,1,2},{152,0,7,0,7,-1,1,2},{152,0,7,0,7,-1,1,2},{152,0,7,0,7,-1,1,2},{152,0,7,0,7,-1,1,2},{152,0,7,0,7,-1,1,2},{152,0,7,0,7,-1,1,2},{152,0,7,0,7,-1,1,2},{152,0,7,0,7,-1,1,2},{152,0,7,0,7,-1,1,2},{152,0,7,0,7,-1,1,2},{152,0,7,0,7,-1,1,2},{152,0,7,0,7,-1,1,2},{152,0,7,0,7,-1,1,2},{152,0,7,0,7,-1,1,2},{152,0,7,0,7,-1,1,2}}, - {{152,0,7,0,7,-1,1,2},{152,0,7,0,7,-1,1,2},{152,0,7,0,7,-1,1,2},{152,0,7,0,7,-1,1,2},{152,0,7,0,7,-1,1,2},{152,0,7,0,7,-1,1,2},{152,0,7,0,7,-1,1,2},{152,0,7,0,7,-1,1,2},{152,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{152,0,13,0,7,0,1,19},{152,0,13,0,7,1,1,19},{152,0,13,0,7,2,1,19},{152,0,13,0,7,3,1,19},{152,0,13,0,7,4,1,19},{152,0,13,0,7,5,1,19},{152,0,13,0,7,6,1,19},{152,0,13,0,7,7,1,19},{152,0,13,0,7,8,1,19},{152,0,13,0,7,9,1,19},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{118,0,12,17,6,-1,1,9},{118,0,12,17,6,-1,1,9},{118,0,12,17,6,-1,1,9},{118,0,7,0,6,-1,1,2},{118,0,7,0,6,-1,1,2},{118,0,7,0,6,-1,1,2},{118,0,7,0,6,-1,1,2},{118,0,7,0,6,-1,1,2},{118,0,7,0,6,-1,1,2},{118,0,7,0,6,-1,1,2},{118,0,7,0,6,-1,1,2},{118,0,7,0,6,-1,1,2},{118,0,7,0,6,-1,1,2},{118,0,7,0,6,-1,1,2},{118,0,7,0,6,-1,1,2},{118,0,7,0,6,-1,1,2}}, - {{118,0,7,0,6,-1,1,2},{118,0,7,0,6,-1,1,2},{118,0,7,0,6,-1,1,2},{118,0,7,0,6,-1,1,2},{118,0,7,0,6,-1,1,2},{118,0,7,0,6,-1,1,2},{118,0,7,0,6,-1,1,2},{118,0,7,0,6,-1,1,2},{118,0,7,0,6,-1,1,2},{118,0,7,0,6,-1,1,2},{118,0,7,0,6,-1,1,2},{118,0,7,0,6,-1,1,2},{118,0,7,0,6,-1,1,2},{118,0,7,0,6,-1,1,2},{118,0,7,0,6,-1,1,2},{118,0,7,0,6,-1,1,2}}, - {{118,0,7,0,6,-1,1,2},{118,0,7,0,6,-1,1,2},{118,0,7,0,6,-1,1,2},{118,0,7,0,6,-1,1,2},{118,0,7,0,6,-1,1,2},{118,0,7,0,6,-1,1,2},{118,0,7,0,6,-1,1,2},{118,0,12,17,6,-1,1,9},{118,0,12,17,6,-1,1,9},{118,0,12,17,6,-1,1,9},{118,0,12,17,6,-1,1,9},{118,0,12,17,6,-1,1,9},{118,0,10,0,6,-1,1,9},{118,0,12,17,6,-1,1,9},{118,0,12,17,6,-1,1,9},{118,0,12,17,6,-1,1,9}}, - {{118,0,12,17,6,-1,1,9},{118,0,12,17,6,-1,1,9},{118,0,12,17,6,-1,1,9},{118,0,12,17,6,-1,1,9},{118,0,12,17,6,-1,1,9},{103,0,2,0,12,-1,1,0},{118,0,13,0,6,0,1,19},{118,0,13,0,6,1,1,19},{118,0,13,0,6,2,1,19},{118,0,13,0,6,3,1,19},{118,0,13,0,6,4,1,19},{118,0,13,0,6,5,1,19},{118,0,13,0,6,6,1,19},{118,0,13,0,6,7,1,19},{118,0,13,0,6,8,1,19},{118,0,13,0,6,9,1,19}}, - {{118,0,21,0,8,-1,1,4},{118,0,21,0,8,-1,1,4},{118,0,21,0,8,-1,1,4},{118,0,21,0,8,-1,1,4},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{160,0,7,0,7,-1,1,2},{160,0,7,0,7,-1,1,2},{160,0,7,0,7,-1,1,2},{160,0,7,0,7,-1,1,2},{160,0,7,0,7,-1,1,2},{160,0,7,0,7,-1,1,2},{160,0,7,0,7,-1,1,2},{160,0,7,0,7,-1,1,2},{160,0,7,0,7,-1,1,2},{160,0,7,0,7,-1,1,2},{160,0,7,0,7,-1,1,2},{160,0,7,0,7,-1,1,2},{160,0,7,0,7,-1,1,2},{160,0,7,0,7,-1,1,2},{160,0,7,0,7,-1,1,2},{160,0,7,0,7,-1,1,2}}, - {{160,0,7,0,7,-1,1,2},{160,0,7,0,7,-1,1,2},{160,0,7,0,7,-1,1,2},{160,0,12,17,7,-1,1,9},{160,0,21,0,8,-1,1,2},{160,0,21,0,8,-1,1,5},{160,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{151,0,12,17,7,-1,1,9},{151,0,12,17,7,-1,1,9},{151,0,10,0,7,-1,1,9},{151,0,7,0,7,-1,1,2},{151,0,7,0,7,-1,1,2},{151,0,7,0,7,-1,1,2},{151,0,7,0,7,-1,1,2},{151,0,7,0,7,-1,1,2},{151,0,7,0,7,-1,1,2},{151,0,7,0,7,-1,1,2},{151,0,7,0,7,-1,1,2},{151,0,7,0,7,-1,1,2},{151,0,7,0,7,-1,1,2},{151,0,7,0,7,-1,1,2},{151,0,7,0,7,-1,1,2},{151,0,7,0,7,-1,1,2}}, - {{151,0,7,0,7,-1,1,2},{151,0,7,0,7,-1,1,2},{151,0,7,0,7,-1,1,2},{151,0,7,0,7,-1,1,2},{151,0,7,0,7,-1,1,2},{151,0,7,0,7,-1,1,2},{151,0,7,0,7,-1,1,2},{151,0,7,0,7,-1,1,2},{151,0,7,0,7,-1,1,2},{151,0,7,0,7,-1,1,2},{151,0,7,0,7,-1,1,2},{151,0,7,0,7,-1,1,2},{151,0,7,0,7,-1,1,2},{151,0,7,0,7,-1,1,2},{151,0,7,0,7,-1,1,2},{151,0,7,0,7,-1,1,2}}, - {{151,0,7,0,7,-1,1,2},{151,0,7,0,7,-1,1,2},{151,0,7,0,7,-1,1,2},{151,0,10,0,7,-1,1,9},{151,0,10,0,7,-1,1,9},{151,0,10,0,7,-1,1,9},{151,0,12,17,7,-1,1,9},{151,0,12,17,7,-1,1,9},{151,0,12,17,7,-1,1,9},{151,0,12,17,7,-1,1,9},{151,0,12,17,7,-1,1,9},{151,0,12,17,7,-1,1,9},{151,0,12,17,7,-1,1,9},{151,0,12,17,7,-1,1,9},{151,0,12,17,7,-1,1,9},{151,0,10,0,7,-1,1,9}}, - {{151,0,10,0,7,-1,1,9},{151,0,7,0,7,-1,1,2},{151,0,7,0,7,-1,1,2},{151,0,7,0,7,-1,1,2},{151,0,7,0,7,-1,1,2},{151,0,21,0,8,-1,1,4},{151,0,21,0,8,-1,1,4},{151,0,21,0,8,-1,1,2},{151,0,21,0,8,-1,1,4},{151,0,21,0,8,-1,1,2},{151,0,12,17,7,-1,1,9},{151,0,12,17,7,-1,1,9},{151,0,12,17,7,-1,1,9},{151,0,21,0,8,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{151,0,13,0,7,0,1,19},{151,0,13,0,7,1,1,19},{151,0,13,0,7,2,1,19},{151,0,13,0,7,3,1,19},{151,0,13,0,7,4,1,19},{151,0,13,0,7,5,1,19},{151,0,13,0,7,6,1,19},{151,0,13,0,7,7,1,19},{151,0,13,0,7,8,1,19},{151,0,13,0,7,9,1,19},{151,0,7,0,7,-1,1,2},{151,0,21,0,8,-1,1,5},{151,0,7,0,7,-1,1,2},{151,0,21,0,8,-1,1,4},{151,0,21,0,8,-1,1,4},{151,0,21,0,8,-1,1,4}}, - {{103,0,2,0,12,-1,1,0},{33,0,15,0,8,-1,1,2},{33,0,15,0,8,-1,1,2},{33,0,15,0,8,-1,1,2},{33,0,15,0,8,-1,1,2},{33,0,15,0,8,-1,1,2},{33,0,15,0,8,-1,1,2},{33,0,15,0,8,-1,1,2},{33,0,15,0,8,-1,1,2},{33,0,15,0,8,-1,1,2},{33,0,15,0,8,-1,1,2},{33,0,15,0,8,-1,1,2},{33,0,15,0,8,-1,1,2},{33,0,15,0,8,-1,1,2},{33,0,15,0,8,-1,1,2},{33,0,15,0,8,-1,1,2}}, - {{33,0,15,0,8,-1,1,2},{33,0,15,0,8,-1,1,2},{33,0,15,0,8,-1,1,2},{33,0,15,0,8,-1,1,2},{33,0,15,0,8,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{157,0,7,0,7,-1,1,2},{157,0,7,0,7,-1,1,2},{157,0,7,0,7,-1,1,2},{157,0,7,0,7,-1,1,2},{157,0,7,0,7,-1,1,2},{157,0,7,0,7,-1,1,2},{157,0,7,0,7,-1,1,2},{157,0,7,0,7,-1,1,2},{157,0,7,0,7,-1,1,2},{157,0,7,0,7,-1,1,2},{157,0,7,0,7,-1,1,2},{157,0,7,0,7,-1,1,2},{157,0,7,0,7,-1,1,2},{157,0,7,0,7,-1,1,2},{157,0,7,0,7,-1,1,2},{157,0,7,0,7,-1,1,2}}, - {{157,0,7,0,7,-1,1,2},{157,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{157,0,7,0,7,-1,1,2},{157,0,7,0,7,-1,1,2},{157,0,7,0,7,-1,1,2},{157,0,7,0,7,-1,1,2},{157,0,7,0,7,-1,1,2},{157,0,7,0,7,-1,1,2},{157,0,7,0,7,-1,1,2},{157,0,7,0,7,-1,1,2},{157,0,7,0,7,-1,1,2},{157,0,7,0,7,-1,1,2},{157,0,7,0,7,-1,1,2},{157,0,7,0,7,-1,1,2},{157,0,7,0,7,-1,1,2}}, - {{157,0,7,0,7,-1,1,2},{157,0,7,0,7,-1,1,2},{157,0,7,0,7,-1,1,2},{157,0,7,0,7,-1,1,2},{157,0,7,0,7,-1,1,2},{157,0,7,0,7,-1,1,2},{157,0,7,0,7,-1,1,2},{157,0,7,0,7,-1,1,2},{157,0,7,0,7,-1,1,2},{157,0,7,0,7,-1,1,2},{157,0,7,0,7,-1,1,2},{157,0,7,0,7,-1,1,2},{157,0,10,0,7,-1,1,9},{157,0,10,0,7,-1,1,9},{157,0,10,0,7,-1,1,9},{157,0,12,17,7,-1,1,9}}, - {{157,0,12,17,7,-1,1,9},{157,0,12,17,7,-1,1,9},{157,0,10,0,7,-1,1,9},{157,0,10,0,7,-1,1,9},{157,0,12,17,7,-1,1,9},{157,0,10,0,7,-1,1,9},{157,0,12,17,7,-1,1,9},{157,0,12,17,7,-1,1,9},{157,0,21,0,8,-1,1,4},{157,0,21,0,8,-1,1,4},{157,0,21,0,8,-1,1,2},{157,0,21,0,8,-1,1,4},{157,0,21,0,8,-1,1,4},{157,0,21,0,8,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{164,0,7,0,7,-1,1,2},{164,0,7,0,7,-1,1,2},{164,0,7,0,7,-1,1,2},{164,0,7,0,7,-1,1,2},{164,0,7,0,7,-1,1,2},{164,0,7,0,7,-1,1,2},{164,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{164,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{164,0,7,0,7,-1,1,2},{164,0,7,0,7,-1,1,2},{164,0,7,0,7,-1,1,2},{164,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{164,0,7,0,7,-1,1,2}}, - {{164,0,7,0,7,-1,1,2},{164,0,7,0,7,-1,1,2},{164,0,7,0,7,-1,1,2},{164,0,7,0,7,-1,1,2},{164,0,7,0,7,-1,1,2},{164,0,7,0,7,-1,1,2},{164,0,7,0,7,-1,1,2},{164,0,7,0,7,-1,1,2},{164,0,7,0,7,-1,1,2},{164,0,7,0,7,-1,1,2},{164,0,7,0,7,-1,1,2},{164,0,7,0,7,-1,1,2},{164,0,7,0,7,-1,1,2},{164,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{164,0,7,0,7,-1,1,2}}, - {{164,0,7,0,7,-1,1,2},{164,0,7,0,7,-1,1,2},{164,0,7,0,7,-1,1,2},{164,0,7,0,7,-1,1,2},{164,0,7,0,7,-1,1,2},{164,0,7,0,7,-1,1,2},{164,0,7,0,7,-1,1,2},{164,0,7,0,7,-1,1,2},{164,0,7,0,7,-1,1,2},{164,0,21,0,8,-1,1,4},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{145,0,7,0,7,-1,1,2},{145,0,7,0,7,-1,1,2},{145,0,7,0,7,-1,1,2},{145,0,7,0,7,-1,1,2},{145,0,7,0,7,-1,1,2},{145,0,7,0,7,-1,1,2},{145,0,7,0,7,-1,1,2},{145,0,7,0,7,-1,1,2},{145,0,7,0,7,-1,1,2},{145,0,7,0,7,-1,1,2},{145,0,7,0,7,-1,1,2},{145,0,7,0,7,-1,1,2},{145,0,7,0,7,-1,1,2},{145,0,7,0,7,-1,1,2},{145,0,7,0,7,-1,1,2},{145,0,7,0,7,-1,1,2}}, - {{145,0,7,0,7,-1,1,2},{145,0,7,0,7,-1,1,2},{145,0,7,0,7,-1,1,2},{145,0,7,0,7,-1,1,2},{145,0,7,0,7,-1,1,2},{145,0,7,0,7,-1,1,2},{145,0,7,0,7,-1,1,2},{145,0,7,0,7,-1,1,2},{145,0,7,0,7,-1,1,2},{145,0,7,0,7,-1,1,2},{145,0,7,0,7,-1,1,2},{145,0,7,0,7,-1,1,2},{145,0,7,0,7,-1,1,2},{145,0,7,0,7,-1,1,2},{145,0,7,0,7,-1,1,2},{145,0,12,17,7,-1,1,9}}, - {{145,0,10,0,7,-1,1,9},{145,0,10,0,7,-1,1,9},{145,0,10,0,7,-1,1,9},{145,0,12,17,7,-1,1,9},{145,0,12,17,7,-1,1,9},{145,0,12,17,7,-1,1,9},{145,0,12,17,7,-1,1,9},{145,0,12,17,7,-1,1,9},{145,0,12,17,7,-1,1,9},{145,0,12,17,7,-1,1,9},{145,0,12,17,7,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{145,0,13,0,7,0,1,19},{145,0,13,0,7,1,1,19},{145,0,13,0,7,2,1,19},{145,0,13,0,7,3,1,19},{145,0,13,0,7,4,1,19},{145,0,13,0,7,5,1,19},{145,0,13,0,7,6,1,19},{145,0,13,0,7,7,1,19},{145,0,13,0,7,8,1,19},{145,0,13,0,7,9,1,19},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{137,0,12,17,7,-1,1,9},{137,0,12,17,7,-1,1,9},{137,0,10,0,7,-1,1,9},{137,0,10,0,7,-1,1,9},{103,0,2,0,12,-1,1,0},{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{137,0,7,0,7,-1,1,2}}, - {{137,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2}}, - {{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2}}, - {{137,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{137,0,12,17,7,-1,1,9},{137,0,7,0,7,-1,1,2},{137,0,10,0,7,-1,1,9},{137,0,10,0,7,-1,1,9}}, - {{137,0,12,17,7,-1,1,9},{137,0,10,0,7,-1,1,9},{137,0,10,0,7,-1,1,9},{137,0,10,0,7,-1,1,9},{137,0,10,0,7,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{137,0,10,0,7,-1,1,9},{137,0,10,0,7,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{137,0,10,0,7,-1,1,9},{137,0,10,0,7,-1,1,9},{137,0,10,0,7,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{137,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{137,0,10,0,7,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2}}, - {{137,0,7,0,7,-1,1,2},{137,0,7,0,7,-1,1,2},{137,0,10,0,7,-1,1,9},{137,0,10,0,7,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{137,0,12,17,7,-1,1,9},{137,0,12,17,7,-1,1,9},{137,0,12,17,7,-1,1,9},{137,0,12,17,7,-1,1,9},{137,0,12,17,7,-1,1,9},{137,0,12,17,7,-1,1,9},{137,0,12,17,7,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{137,0,12,17,7,-1,1,9},{137,0,12,17,7,-1,1,9},{137,0,12,17,7,-1,1,9},{137,0,12,17,7,-1,1,9},{137,0,12,17,7,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{158,0,7,0,7,-1,1,2},{158,0,7,0,7,-1,1,2},{158,0,7,0,7,-1,1,2},{158,0,7,0,7,-1,1,2},{158,0,7,0,7,-1,1,2},{158,0,7,0,7,-1,1,2},{158,0,7,0,7,-1,1,2},{158,0,7,0,7,-1,1,2},{158,0,7,0,7,-1,1,2},{158,0,7,0,7,-1,1,2},{158,0,7,0,7,-1,1,2},{158,0,7,0,7,-1,1,2},{158,0,7,0,7,-1,1,2},{158,0,7,0,7,-1,1,2},{158,0,7,0,7,-1,1,2},{158,0,7,0,7,-1,1,2}}, - {{158,0,10,0,7,-1,1,9},{158,0,10,0,7,-1,1,9},{158,0,10,0,7,-1,1,9},{158,0,12,17,7,-1,1,9},{158,0,12,17,7,-1,1,9},{158,0,12,17,7,-1,1,9},{158,0,12,17,7,-1,1,9},{158,0,12,17,7,-1,1,9},{158,0,12,17,7,-1,1,9},{158,0,10,0,7,-1,1,9},{158,0,12,17,7,-1,1,9},{158,0,10,0,7,-1,1,9},{158,0,10,0,7,-1,1,9},{158,0,10,0,7,-1,1,9},{158,0,10,0,7,-1,1,9},{158,0,12,17,7,-1,1,9}}, - {{158,0,12,17,7,-1,1,9},{158,0,10,0,7,-1,1,9},{158,0,12,17,7,-1,1,9},{158,0,12,17,7,-1,1,9},{158,0,7,0,7,-1,1,2},{158,0,7,0,7,-1,1,2},{158,0,21,0,8,-1,1,2},{158,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{158,0,13,0,7,0,1,19},{158,0,13,0,7,1,1,19},{158,0,13,0,7,2,1,19},{158,0,13,0,7,3,1,19},{158,0,13,0,7,4,1,19},{158,0,13,0,7,5,1,19},{158,0,13,0,7,6,1,19},{158,0,13,0,7,7,1,19},{158,0,13,0,7,8,1,19},{158,0,13,0,7,9,1,19},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{166,0,7,0,7,-1,0,2},{166,0,7,0,7,-1,0,2},{166,0,7,0,7,-1,0,2},{166,0,7,0,7,-1,0,2},{166,0,7,0,7,-1,0,2},{166,0,7,0,7,-1,0,2},{166,0,7,0,7,-1,0,2},{166,0,7,0,7,-1,0,2},{166,0,7,0,7,-1,0,2},{166,0,7,0,7,-1,0,2},{166,0,7,0,7,-1,0,2},{166,0,7,0,7,-1,0,2},{166,0,7,0,7,-1,0,2},{166,0,7,0,7,-1,0,2},{166,0,7,0,7,-1,0,2},{166,0,7,0,7,-1,0,2}}, - {{166,0,7,0,7,-1,0,2},{166,0,7,0,7,-1,0,2},{166,0,7,0,7,-1,0,2},{166,0,7,0,7,-1,0,2},{166,0,7,0,7,-1,0,2},{166,0,7,0,7,-1,0,2},{166,0,7,0,7,-1,0,2},{166,0,7,0,7,-1,0,2},{166,0,7,0,7,-1,0,2},{166,0,7,0,7,-1,0,2},{166,0,7,0,7,-1,0,2},{166,0,7,0,7,-1,0,2},{166,0,7,0,7,-1,0,2},{166,0,7,0,7,-1,0,2},{166,0,7,0,7,-1,0,2},{166,0,10,0,7,-1,0,9}}, - {{166,0,10,0,7,-1,0,9},{166,0,10,0,7,-1,0,9},{166,0,12,17,7,-1,0,9},{166,0,12,17,7,-1,0,9},{166,0,12,17,7,-1,0,9},{166,0,12,17,7,-1,0,9},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{166,0,10,0,7,-1,0,9},{166,0,10,0,7,-1,0,9},{166,0,10,0,7,-1,0,9},{166,0,10,0,7,-1,0,9},{166,0,12,17,7,-1,0,9},{166,0,12,17,7,-1,0,9},{166,0,10,0,7,-1,0,9},{166,0,12,17,7,-1,0,9}}, - {{166,0,12,17,7,-1,0,9},{166,0,21,0,8,-1,0,5},{166,0,21,0,8,-1,0,4},{166,0,21,0,8,-1,0,4},{166,0,21,0,8,-1,0,11},{166,0,21,0,8,-1,0,11},{166,0,21,0,8,-1,0,2},{166,0,21,0,8,-1,0,2},{166,0,21,0,8,-1,0,2},{166,0,21,0,8,-1,0,4},{166,0,21,0,8,-1,0,4},{166,0,21,0,8,-1,0,4},{166,0,21,0,8,-1,0,4},{166,0,21,0,8,-1,0,4},{166,0,21,0,8,-1,0,4},{166,0,21,0,8,-1,0,4}}, - {{166,0,21,0,8,-1,0,4},{166,0,21,0,8,-1,0,4},{166,0,21,0,8,-1,0,4},{166,0,21,0,8,-1,0,4},{166,0,21,0,8,-1,0,4},{166,0,21,0,8,-1,0,4},{166,0,21,0,8,-1,0,4},{166,0,21,0,8,-1,0,4},{166,0,7,0,7,-1,0,2},{166,0,7,0,7,-1,0,2},{166,0,7,0,7,-1,0,2},{166,0,7,0,7,-1,0,2},{166,0,12,17,7,-1,0,9},{166,0,12,17,7,-1,0,9},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0}}, - {{163,0,7,0,7,-1,1,2},{163,0,7,0,7,-1,1,2},{163,0,7,0,7,-1,1,2},{163,0,7,0,7,-1,1,2},{163,0,7,0,7,-1,1,2},{163,0,7,0,7,-1,1,2},{163,0,7,0,7,-1,1,2},{163,0,7,0,7,-1,1,2},{163,0,7,0,7,-1,1,2},{163,0,7,0,7,-1,1,2},{163,0,7,0,7,-1,1,2},{163,0,7,0,7,-1,1,2},{163,0,7,0,7,-1,1,2},{163,0,7,0,7,-1,1,2},{163,0,7,0,7,-1,1,2},{163,0,7,0,7,-1,1,2}}, - {{163,0,10,0,7,-1,1,9},{163,0,10,0,7,-1,1,9},{163,0,10,0,7,-1,1,9},{163,0,12,17,7,-1,1,9},{163,0,12,17,7,-1,1,9},{163,0,12,17,7,-1,1,9},{163,0,12,17,7,-1,1,9},{163,0,12,17,7,-1,1,9},{163,0,12,17,7,-1,1,9},{163,0,12,17,7,-1,1,9},{163,0,12,17,7,-1,1,9},{163,0,10,0,7,-1,1,9},{163,0,10,0,7,-1,1,9},{163,0,12,17,7,-1,1,9},{163,0,10,0,7,-1,1,9},{163,0,12,17,7,-1,1,9}}, - {{163,0,12,17,7,-1,1,9},{163,0,21,0,8,-1,1,4},{163,0,21,0,8,-1,1,4},{163,0,21,0,8,-1,1,2},{163,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{163,0,13,0,7,0,1,19},{163,0,13,0,7,1,1,19},{163,0,13,0,7,2,1,19},{163,0,13,0,7,3,1,19},{163,0,13,0,7,4,1,19},{163,0,13,0,7,5,1,19},{163,0,13,0,7,6,1,19},{163,0,13,0,7,7,1,19},{163,0,13,0,7,8,1,19},{163,0,13,0,7,9,1,19},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{153,0,7,0,7,-1,1,2},{153,0,7,0,7,-1,1,2},{153,0,7,0,7,-1,1,2},{153,0,7,0,7,-1,1,2},{153,0,7,0,7,-1,1,2},{153,0,7,0,7,-1,1,2},{153,0,7,0,7,-1,1,2},{153,0,7,0,7,-1,1,2},{153,0,7,0,7,-1,1,2},{153,0,7,0,7,-1,1,2},{153,0,7,0,7,-1,1,2},{153,0,7,0,7,-1,1,2},{153,0,7,0,7,-1,1,2},{153,0,7,0,7,-1,1,2},{153,0,7,0,7,-1,1,2},{153,0,7,0,7,-1,1,2}}, - {{153,0,7,0,7,-1,1,2},{153,0,7,0,7,-1,1,2},{153,0,7,0,7,-1,1,2},{153,0,7,0,7,-1,1,2},{153,0,7,0,7,-1,1,2},{153,0,7,0,7,-1,1,2},{153,0,7,0,7,-1,1,2},{153,0,7,0,7,-1,1,2},{153,0,7,0,7,-1,1,2},{153,0,7,0,7,-1,1,2},{153,0,7,0,7,-1,1,2},{153,0,12,17,7,-1,1,9},{153,0,10,0,7,-1,1,9},{153,0,12,17,7,-1,1,9},{153,0,10,0,7,-1,1,9},{153,0,10,0,7,-1,1,9}}, - {{153,0,12,17,7,-1,1,9},{153,0,12,17,7,-1,1,9},{153,0,12,17,7,-1,1,9},{153,0,12,17,7,-1,1,9},{153,0,12,17,7,-1,1,9},{153,0,12,17,7,-1,1,9},{153,0,10,0,7,-1,1,9},{153,0,12,17,7,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{153,0,13,0,7,0,1,19},{153,0,13,0,7,1,1,19},{153,0,13,0,7,2,1,19},{153,0,13,0,7,3,1,19},{153,0,13,0,7,4,1,19},{153,0,13,0,7,5,1,19},{153,0,13,0,7,6,1,19},{153,0,13,0,7,7,1,19},{153,0,13,0,7,8,1,19},{153,0,13,0,7,9,1,19},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{161,0,7,0,7,-1,1,24},{161,0,7,0,7,-1,1,24},{161,0,7,0,7,-1,1,24},{161,0,7,0,7,-1,1,24},{161,0,7,0,7,-1,1,24},{161,0,7,0,7,-1,1,24},{161,0,7,0,7,-1,1,24},{161,0,7,0,7,-1,1,24},{161,0,7,0,7,-1,1,24},{161,0,7,0,7,-1,1,24},{161,0,7,0,7,-1,1,24},{161,0,7,0,7,-1,1,24},{161,0,7,0,7,-1,1,24},{161,0,7,0,7,-1,1,24},{161,0,7,0,7,-1,1,24},{161,0,7,0,7,-1,1,24}}, - {{161,0,7,0,7,-1,1,24},{161,0,7,0,7,-1,1,24},{161,0,7,0,7,-1,1,24},{161,0,7,0,7,-1,1,24},{161,0,7,0,7,-1,1,24},{161,0,7,0,7,-1,1,24},{161,0,7,0,7,-1,1,24},{161,0,7,0,7,-1,1,24},{161,0,7,0,7,-1,1,24},{161,0,7,0,7,-1,1,24},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{161,0,12,17,7,-1,1,24},{161,0,12,17,7,-1,1,24},{161,0,12,17,7,-1,1,24}}, - {{161,0,10,0,7,-1,1,24},{161,0,10,0,7,-1,1,24},{161,0,12,17,7,-1,1,24},{161,0,12,17,7,-1,1,24},{161,0,12,17,7,-1,1,24},{161,0,12,17,7,-1,1,24},{161,0,10,0,7,-1,1,24},{161,0,12,17,7,-1,1,24},{161,0,12,17,7,-1,1,24},{161,0,12,17,7,-1,1,24},{161,0,12,17,7,-1,1,24},{161,0,12,17,7,-1,1,24},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{161,0,13,0,7,0,1,19},{161,0,13,0,7,1,1,19},{161,0,13,0,7,2,1,19},{161,0,13,0,7,3,1,19},{161,0,13,0,7,4,1,19},{161,0,13,0,7,5,1,19},{161,0,13,0,7,6,1,19},{161,0,13,0,7,7,1,19},{161,0,13,0,7,8,1,19},{161,0,13,0,7,9,1,19},{161,0,15,0,8,-1,1,24},{161,0,15,0,8,-1,1,24},{161,0,21,0,8,-1,1,4},{161,0,21,0,8,-1,1,4},{161,0,21,0,8,-1,1,4},{161,0,26,0,8,-1,1,24}}, - {{146,0,9,0,7,-1,1,2},{146,0,9,0,7,-1,1,2},{146,0,9,0,7,-1,1,2},{146,0,9,0,7,-1,1,2},{146,0,9,0,7,-1,1,2},{146,0,9,0,7,-1,1,2},{146,0,9,0,7,-1,1,2},{146,0,9,0,7,-1,1,2},{146,0,9,0,7,-1,1,2},{146,0,9,0,7,-1,1,2},{146,0,9,0,7,-1,1,2},{146,0,9,0,7,-1,1,2},{146,0,9,0,7,-1,1,2},{146,0,9,0,7,-1,1,2},{146,0,9,0,7,-1,1,2},{146,0,9,0,7,-1,1,2}}, - {{146,0,5,0,7,-1,1,2},{146,0,5,0,7,-1,1,2},{146,0,5,0,7,-1,1,2},{146,0,5,0,7,-1,1,2},{146,0,5,0,7,-1,1,2},{146,0,5,0,7,-1,1,2},{146,0,5,0,7,-1,1,2},{146,0,5,0,7,-1,1,2},{146,0,5,0,7,-1,1,2},{146,0,5,0,7,-1,1,2},{146,0,5,0,7,-1,1,2},{146,0,5,0,7,-1,1,2},{146,0,5,0,7,-1,1,2},{146,0,5,0,7,-1,1,2},{146,0,5,0,7,-1,1,2},{146,0,5,0,7,-1,1,2}}, - {{146,0,13,0,7,0,1,19},{146,0,13,0,7,1,1,19},{146,0,13,0,7,2,1,19},{146,0,13,0,7,3,1,19},{146,0,13,0,7,4,1,19},{146,0,13,0,7,5,1,19},{146,0,13,0,7,6,1,19},{146,0,13,0,7,7,1,19},{146,0,13,0,7,8,1,19},{146,0,13,0,7,9,1,19},{146,0,15,0,8,-1,1,2},{146,0,15,0,8,-1,1,2},{146,0,15,0,8,-1,1,2},{146,0,15,0,8,-1,1,2},{146,0,15,0,8,-1,1,2},{146,0,15,0,8,-1,1,2}}, - {{146,0,15,0,8,-1,1,2},{146,0,15,0,8,-1,1,2},{146,0,15,0,8,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{146,0,7,0,7,-1,1,2}}, - {{165,0,7,0,7,-1,1,2},{165,0,7,0,7,-1,1,2},{165,0,7,0,7,-1,1,2},{165,0,7,0,7,-1,1,2},{165,0,7,0,7,-1,1,2},{165,0,7,0,7,-1,1,2},{165,0,7,0,7,-1,1,2},{165,0,7,0,7,-1,1,2},{165,0,7,0,7,-1,1,2},{165,0,7,0,7,-1,1,2},{165,0,7,0,7,-1,1,2},{165,0,7,0,7,-1,1,2},{165,0,7,0,7,-1,1,2},{165,0,7,0,7,-1,1,2},{165,0,7,0,7,-1,1,2},{165,0,7,0,7,-1,1,2}}, - {{165,0,7,0,7,-1,1,2},{165,0,7,0,7,-1,1,2},{165,0,7,0,7,-1,1,2},{165,0,7,0,7,-1,1,2},{165,0,7,0,7,-1,1,2},{165,0,7,0,7,-1,1,2},{165,0,7,0,7,-1,1,2},{165,0,7,0,7,-1,1,2},{165,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{101,0,7,0,7,-1,1,2},{101,0,7,0,7,-1,1,2},{101,0,7,0,7,-1,1,2},{101,0,7,0,7,-1,1,2},{101,0,7,0,7,-1,1,2},{101,0,7,0,7,-1,1,2},{101,0,7,0,7,-1,1,2},{101,0,7,0,7,-1,1,2},{101,0,7,0,7,-1,1,2},{101,0,7,0,7,-1,1,2},{101,0,7,0,7,-1,1,2},{101,0,7,0,7,-1,1,2},{101,0,7,0,7,-1,1,2},{101,0,7,0,7,-1,1,2},{101,0,7,0,7,-1,1,2},{101,0,7,0,7,-1,1,2}}, - {{101,0,7,0,7,-1,1,2},{101,0,7,0,7,-1,1,2},{101,0,7,0,7,-1,1,2},{101,0,7,0,7,-1,1,2},{101,0,7,0,7,-1,1,2},{101,0,7,0,7,-1,1,2},{101,0,7,0,7,-1,1,2},{101,0,7,0,7,-1,1,2},{101,0,7,0,7,-1,1,2},{101,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{101,0,14,0,7,-1,1,2},{101,0,14,0,7,-1,1,2},{101,0,14,0,7,-1,1,2},{101,0,14,0,7,-1,1,2},{101,0,14,0,7,-1,1,2},{101,0,14,0,7,-1,1,2},{101,0,14,0,7,-1,1,2},{101,0,14,0,7,-1,1,2},{101,0,14,0,7,-1,1,2},{101,0,14,0,7,-1,1,2},{101,0,14,0,7,-1,1,2},{101,0,14,0,7,-1,1,2},{101,0,14,0,7,-1,1,2},{101,0,14,0,7,-1,1,2},{101,0,14,0,7,-1,1,2},{101,0,14,0,7,-1,1,2}}, - {{101,0,14,0,7,-1,1,2},{101,0,14,0,7,-1,1,2},{101,0,14,0,7,-1,1,2},{101,0,14,0,7,-1,1,2},{101,0,14,0,7,-1,1,2},{101,0,14,0,7,-1,1,2},{101,0,14,0,7,-1,1,2},{101,0,14,0,7,-1,1,2},{101,0,14,0,7,-1,1,2},{101,0,14,0,7,-1,1,2},{101,0,14,0,7,-1,1,2},{101,0,14,0,7,-1,1,2},{101,0,14,0,7,-1,1,2},{101,0,14,0,7,-1,1,2},{101,0,14,0,7,-1,1,2},{103,0,2,0,12,-1,1,0}}, - {{101,0,21,0,8,-1,1,4},{101,0,21,0,8,-1,1,4},{101,0,21,0,8,-1,1,4},{101,0,21,0,8,-1,1,4},{101,0,21,0,8,-1,1,4},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{101,0,7,0,7,-1,1,2},{101,0,7,0,7,-1,1,2},{101,0,7,0,7,-1,1,2},{101,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2}}, - {{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,20},{71,0,7,0,7,-1,0,20},{71,0,7,0,7,-1,0,20},{71,0,7,0,7,-1,0,8},{71,0,7,0,7,-1,0,8},{71,0,7,0,7,-1,0,8},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2}}, - {{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,8},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,20},{71,0,7,0,7,-1,0,8},{71,0,7,0,7,-1,0,20},{71,0,7,0,7,-1,0,8},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2}}, - {{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,20},{71,0,7,0,7,-1,0,8},{71,0,7,0,7,-1,0,8},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2}}, - {{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{71,0,7,0,7,-1,0,2},{103,0,2,0,12,-1,0,0}}, - {{156,0,7,0,7,-1,1,2},{156,0,7,0,7,-1,1,2},{156,0,7,0,7,-1,1,2},{156,0,7,0,7,-1,1,2},{156,0,7,0,7,-1,1,2},{156,0,7,0,7,-1,1,2},{156,0,7,0,7,-1,1,2},{156,0,7,0,7,-1,1,2},{156,0,7,0,7,-1,1,2},{156,0,7,0,7,-1,1,2},{156,0,7,0,7,-1,1,2},{156,0,7,0,7,-1,1,2},{156,0,7,0,7,-1,1,2},{156,0,7,0,7,-1,1,2},{156,0,7,0,7,-1,1,2},{156,0,7,0,7,-1,1,2}}, - {{156,0,7,0,7,-1,1,2},{156,0,7,0,7,-1,1,2},{156,0,7,0,7,-1,1,2},{156,0,7,0,7,-1,1,2},{156,0,7,0,7,-1,1,2},{156,0,7,0,7,-1,1,2},{156,0,7,0,7,-1,1,2},{156,0,7,0,7,-1,1,2},{156,0,7,0,7,-1,1,2},{156,0,7,0,7,-1,1,2},{156,0,7,0,7,-1,1,2},{156,0,7,0,7,-1,1,2},{156,0,7,0,7,-1,1,2},{156,0,7,0,7,-1,1,2},{156,0,7,0,7,-1,1,20},{156,0,7,0,7,-1,1,8}}, - {{156,0,7,0,7,-1,1,2},{156,0,7,0,7,-1,1,2},{156,0,7,0,7,-1,1,2},{156,0,7,0,7,-1,1,2},{156,0,7,0,7,-1,1,2},{156,0,7,0,7,-1,1,2},{156,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{130,0,7,0,6,-1,1,2},{130,0,7,0,6,-1,1,2},{130,0,7,0,6,-1,1,2},{130,0,7,0,6,-1,1,2},{130,0,7,0,6,-1,1,2},{130,0,7,0,6,-1,1,2},{130,0,7,0,6,-1,1,2},{130,0,7,0,6,-1,1,2},{130,0,7,0,6,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{149,0,7,0,7,-1,1,2},{149,0,7,0,7,-1,1,2},{149,0,7,0,7,-1,1,2},{149,0,7,0,7,-1,1,2},{149,0,7,0,7,-1,1,2},{149,0,7,0,7,-1,1,2},{149,0,7,0,7,-1,1,2},{149,0,7,0,7,-1,1,2},{149,0,7,0,7,-1,1,2},{149,0,7,0,7,-1,1,2},{149,0,7,0,7,-1,1,2},{149,0,7,0,7,-1,1,2},{149,0,7,0,7,-1,1,2},{149,0,7,0,7,-1,1,2},{149,0,7,0,7,-1,1,2},{149,0,7,0,7,-1,1,2}}, - {{149,0,7,0,7,-1,1,2},{149,0,7,0,7,-1,1,2},{149,0,7,0,7,-1,1,2},{149,0,7,0,7,-1,1,2},{149,0,7,0,7,-1,1,2},{149,0,7,0,7,-1,1,2},{149,0,7,0,7,-1,1,2},{149,0,7,0,7,-1,1,2},{149,0,7,0,7,-1,1,2},{149,0,7,0,7,-1,1,2},{149,0,7,0,7,-1,1,2},{149,0,7,0,7,-1,1,2},{149,0,7,0,7,-1,1,2},{149,0,7,0,7,-1,1,2},{149,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0}}, - {{149,0,13,0,7,0,1,19},{149,0,13,0,7,1,1,19},{149,0,13,0,7,2,1,19},{149,0,13,0,7,3,1,19},{149,0,13,0,7,4,1,19},{149,0,13,0,7,5,1,19},{149,0,13,0,7,6,1,19},{149,0,13,0,7,7,1,19},{149,0,13,0,7,8,1,19},{149,0,13,0,7,9,1,19},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{149,0,21,0,8,-1,1,4},{149,0,21,0,8,-1,1,4}}, - {{134,0,7,0,7,-1,1,2},{134,0,7,0,7,-1,1,2},{134,0,7,0,7,-1,1,2},{134,0,7,0,7,-1,1,2},{134,0,7,0,7,-1,1,2},{134,0,7,0,7,-1,1,2},{134,0,7,0,7,-1,1,2},{134,0,7,0,7,-1,1,2},{134,0,7,0,7,-1,1,2},{134,0,7,0,7,-1,1,2},{134,0,7,0,7,-1,1,2},{134,0,7,0,7,-1,1,2},{134,0,7,0,7,-1,1,2},{134,0,7,0,7,-1,1,2},{134,0,7,0,7,-1,1,2},{134,0,7,0,7,-1,1,2}}, - {{134,0,7,0,7,-1,1,2},{134,0,7,0,7,-1,1,2},{134,0,7,0,7,-1,1,2},{134,0,7,0,7,-1,1,2},{134,0,7,0,7,-1,1,2},{134,0,7,0,7,-1,1,2},{134,0,7,0,7,-1,1,2},{134,0,7,0,7,-1,1,2},{134,0,7,0,7,-1,1,2},{134,0,7,0,7,-1,1,2},{134,0,7,0,7,-1,1,2},{134,0,7,0,7,-1,1,2},{134,0,7,0,7,-1,1,2},{134,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{134,0,12,17,7,-1,1,9},{134,0,12,17,7,-1,1,9},{134,0,12,17,7,-1,1,9},{134,0,12,17,7,-1,1,9},{134,0,12,17,7,-1,1,9},{134,0,21,0,8,-1,1,4},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{75,0,7,0,7,-1,1,2},{75,0,7,0,7,-1,1,2},{75,0,7,0,7,-1,1,2},{75,0,7,0,7,-1,1,2},{75,0,7,0,7,-1,1,2},{75,0,7,0,7,-1,1,2},{75,0,7,0,7,-1,1,2},{75,0,7,0,7,-1,1,2},{75,0,7,0,7,-1,1,2},{75,0,7,0,7,-1,1,2},{75,0,7,0,7,-1,1,2},{75,0,7,0,7,-1,1,2},{75,0,7,0,7,-1,1,2},{75,0,7,0,7,-1,1,2},{75,0,7,0,7,-1,1,2},{75,0,7,0,7,-1,1,2}}, - {{75,0,12,17,7,-1,1,9},{75,0,12,17,7,-1,1,9},{75,0,12,17,7,-1,1,9},{75,0,12,17,7,-1,1,9},{75,0,12,17,7,-1,1,9},{75,0,12,17,7,-1,1,9},{75,0,12,17,7,-1,1,9},{75,0,21,0,8,-1,1,4},{75,0,21,0,8,-1,1,4},{75,0,21,0,8,-1,1,4},{75,0,21,0,8,-1,1,2},{75,0,21,0,8,-1,1,2},{75,0,26,0,8,-1,1,2},{75,0,26,0,8,-1,1,2},{75,0,26,0,8,-1,1,2},{75,0,26,0,8,-1,1,2}}, - {{75,0,6,0,7,-1,1,2},{75,0,6,0,7,-1,1,2},{75,0,6,0,7,-1,1,2},{75,0,6,0,7,-1,1,2},{75,0,21,0,8,-1,1,4},{75,0,26,0,8,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{75,0,13,0,7,0,1,19},{75,0,13,0,7,1,1,19},{75,0,13,0,7,2,1,19},{75,0,13,0,7,3,1,19},{75,0,13,0,7,4,1,19},{75,0,13,0,7,5,1,19},{75,0,13,0,7,6,1,19},{75,0,13,0,7,7,1,19},{75,0,13,0,7,8,1,19},{75,0,13,0,7,9,1,19},{103,0,2,0,12,-1,1,0},{75,0,15,0,8,-1,1,2},{75,0,15,0,8,-1,1,2},{75,0,15,0,8,-1,1,2},{75,0,15,0,8,-1,1,2},{75,0,15,0,8,-1,1,2}}, - {{75,0,15,0,8,-1,1,2},{75,0,15,0,8,-1,1,2},{103,0,2,0,12,-1,1,0},{75,0,7,0,7,-1,1,2},{75,0,7,0,7,-1,1,2},{75,0,7,0,7,-1,1,2},{75,0,7,0,7,-1,1,2},{75,0,7,0,7,-1,1,2},{75,0,7,0,7,-1,1,2},{75,0,7,0,7,-1,1,2},{75,0,7,0,7,-1,1,2},{75,0,7,0,7,-1,1,2},{75,0,7,0,7,-1,1,2},{75,0,7,0,7,-1,1,2},{75,0,7,0,7,-1,1,2},{75,0,7,0,7,-1,1,2}}, - {{75,0,7,0,7,-1,1,2},{75,0,7,0,7,-1,1,2},{75,0,7,0,7,-1,1,2},{75,0,7,0,7,-1,1,2},{75,0,7,0,7,-1,1,2},{75,0,7,0,7,-1,1,2},{75,0,7,0,7,-1,1,2},{75,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{75,0,7,0,7,-1,1,2},{75,0,7,0,7,-1,1,2},{75,0,7,0,7,-1,1,2}}, - {{92,0,7,0,5,-1,1,2},{92,0,7,0,5,-1,1,2},{92,0,7,0,5,-1,1,2},{92,0,7,0,5,-1,1,2},{92,0,7,0,5,-1,1,2},{92,0,7,0,5,-1,1,2},{92,0,7,0,5,-1,1,2},{92,0,7,0,5,-1,1,2},{92,0,7,0,5,-1,1,2},{92,0,7,0,5,-1,1,2},{92,0,7,0,5,-1,1,2},{92,0,7,0,5,-1,1,2},{92,0,7,0,5,-1,1,2},{92,0,7,0,5,-1,1,2},{92,0,7,0,5,-1,1,2},{92,0,7,0,5,-1,1,2}}, - {{92,0,7,0,5,-1,1,2},{92,0,7,0,5,-1,1,2},{92,0,7,0,5,-1,1,2},{92,0,7,0,5,-1,1,2},{92,0,7,0,5,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{92,0,7,0,5,-1,1,2},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9}}, - {{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9}}, - {{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{92,0,10,0,5,-1,1,9},{103,0,2,0,12,-1,1,0}}, - {{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{92,0,12,17,5,-1,1,9}}, - {{92,0,12,17,5,-1,1,9},{92,0,12,17,5,-1,1,9},{92,0,12,17,5,-1,1,9},{92,0,6,0,5,-1,1,2},{92,0,6,0,5,-1,1,2},{92,0,6,0,5,-1,1,2},{92,0,6,0,5,-1,1,2},{92,0,6,0,5,-1,1,2},{92,0,6,0,5,-1,1,2},{92,0,6,0,5,-1,1,2},{92,0,6,0,5,-1,1,2},{92,0,6,0,5,-1,1,2},{92,0,6,0,5,-1,1,2},{92,0,6,0,5,-1,1,2},{92,0,6,0,5,-1,1,2},{92,0,6,0,5,-1,1,2}}, - {{22,0,7,0,4,-1,0,14},{20,0,7,0,4,-1,0,14},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0}}, - {{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2}}, - {{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{135,0,7,0,7,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{135,0,26,0,8,-1,1,2},{135,0,12,17,7,-1,1,9},{135,0,12,17,7,-1,1,9},{135,0,21,0,8,-1,1,4}}, - {{0,0,1,18,10,-1,1,9},{0,0,1,18,10,-1,1,9},{0,0,1,18,10,-1,1,9},{0,0,1,18,10,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2}}, - {{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0}}, - {{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2}}, - {{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,9,-1,0,2},{0,0,26,0,9,-1,0,2}}, - {{0,0,26,0,9,-1,0,2},{0,0,26,0,9,-1,0,2},{0,0,26,0,9,-1,0,2},{0,0,26,0,9,-1,0,2},{0,0,26,0,9,-1,0,2},{0,0,10,0,7,-1,0,9},{0,0,10,0,7,-1,0,9},{1,0,12,17,7,-1,0,9},{1,0,12,17,7,-1,0,9},{1,0,12,17,7,-1,0,9},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,10,0,7,-1,0,9},{0,0,10,0,7,-1,0,9},{0,0,10,0,7,-1,0,9}}, - {{0,0,10,0,7,-1,0,9},{0,0,10,0,7,-1,0,9},{0,0,10,0,7,-1,0,9},{0,0,1,18,10,-1,0,9},{0,0,1,18,10,-1,0,9},{0,0,1,18,10,-1,0,9},{0,0,1,18,10,-1,0,9},{0,0,1,18,10,-1,0,9},{0,0,1,18,10,-1,0,9},{0,0,1,18,10,-1,0,9},{0,0,1,18,10,-1,0,9},{1,0,12,17,7,-1,0,9},{1,0,12,17,7,-1,0,9},{1,0,12,17,7,-1,0,9},{1,0,12,17,7,-1,0,9},{1,0,12,17,7,-1,0,9}}, - {{1,0,12,17,7,-1,0,9},{1,0,12,17,7,-1,0,9},{1,0,12,17,7,-1,0,9},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{1,0,12,17,7,-1,0,9},{1,0,12,17,7,-1,0,9},{1,0,12,17,7,-1,0,9},{1,0,12,17,7,-1,0,9},{1,0,12,17,7,-1,0,9},{1,0,12,17,7,-1,0,9},{1,0,12,17,7,-1,0,9},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2}}, - {{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{1,0,12,17,7,-1,0,9},{1,0,12,17,7,-1,0,9},{1,0,12,17,7,-1,0,9},{1,0,12,17,7,-1,0,9},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2}}, - {{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,9,-1,0,2},{0,0,26,0,9,-1,0,2},{0,0,26,0,9,-1,0,2},{0,0,26,0,9,-1,0,2},{0,0,26,0,9,-1,0,2}}, - {{0,0,26,0,9,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2}}, - {{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{0,0,26,0,8,-1,0,2},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0}}, - {{14,0,26,10,8,-1,1,2},{14,0,26,10,8,-1,1,2},{14,0,26,10,8,-1,1,2},{14,0,26,10,8,-1,1,2},{14,0,26,10,8,-1,1,2},{14,0,26,10,8,-1,1,2},{14,0,26,10,8,-1,1,2},{14,0,26,10,8,-1,1,2},{14,0,26,10,8,-1,1,2},{14,0,26,10,8,-1,1,2},{14,0,26,10,8,-1,1,2},{14,0,26,10,8,-1,1,2},{14,0,26,10,8,-1,1,2},{14,0,26,10,8,-1,1,2},{14,0,26,10,8,-1,1,2},{14,0,26,10,8,-1,1,2}}, - {{14,0,26,10,8,-1,1,2},{14,0,26,10,8,-1,1,2},{14,0,12,17,7,-1,1,9},{14,0,12,17,7,-1,1,9},{14,0,12,17,7,-1,1,9},{14,0,26,10,8,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0}}, - {{0,0,15,0,8,-1,0,2},{0,0,15,0,8,-1,0,2},{0,0,15,0,8,-1,0,2},{0,0,15,0,8,-1,0,2},{0,0,15,0,8,-1,0,2},{0,0,15,0,8,-1,0,2},{0,0,15,0,8,-1,0,2},{0,0,15,0,8,-1,0,2},{0,0,15,0,8,-1,0,2},{0,0,15,0,8,-1,0,2},{0,0,15,0,8,-1,0,2},{0,0,15,0,8,-1,0,2},{0,0,15,0,8,-1,0,2},{0,0,15,0,8,-1,0,2},{0,0,15,0,8,-1,0,2},{0,0,15,0,8,-1,0,2}}, - {{0,0,15,0,8,-1,0,2},{0,0,15,0,8,-1,0,2},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0}}, - {{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2}}, - {{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2}}, - {{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2}}, - {{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2}}, - {{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2}}, - {{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{103,0,2,0,12,-1,1,0},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2}}, - {{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2}}, - {{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2}}, - {{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{103,0,2,0,12,-1,1,0},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2}}, - {{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{0,0,9,0,9,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{103,0,2,0,12,-1,1,0},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2}}, - {{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{103,0,2,0,12,-1,1,0},{0,0,5,0,9,-1,1,2},{103,0,2,0,12,-1,1,0},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2}}, - {{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{103,0,2,0,12,-1,1,0},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2}}, - {{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{103,0,2,0,12,-1,1,0},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2}}, - {{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{103,0,2,0,12,-1,1,0},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{103,0,2,0,12,-1,1,0},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2}}, - {{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{103,0,2,0,12,-1,1,0},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{103,0,2,0,12,-1,1,0}}, - {{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{103,0,2,0,12,-1,1,0},{0,0,9,0,9,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2}}, - {{0,0,9,0,9,-1,1,2},{103,0,2,0,12,-1,1,0},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2}}, - {{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2}}, - {{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2}}, - {{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2}}, - {{0,0,9,0,9,-1,1,2},{0,0,25,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2}}, - {{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,25,10,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2}}, - {{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2}}, - {{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,25,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2}}, - {{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,25,10,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2}}, - {{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,25,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2}}, - {{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,25,10,9,-1,1,2}}, - {{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2}}, - {{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,25,0,9,-1,1,2}}, - {{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,25,10,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2}}, - {{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,25,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2}}, - {{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,25,10,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{0,0,9,0,9,-1,1,2},{0,0,5,0,9,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{0,0,13,2,9,0,1,19},{0,0,13,2,9,1,1,19}}, - {{0,0,13,2,9,2,1,19},{0,0,13,2,9,3,1,19},{0,0,13,2,9,4,1,19},{0,0,13,2,9,5,1,19},{0,0,13,2,9,6,1,19},{0,0,13,2,9,7,1,19},{0,0,13,2,9,8,1,19},{0,0,13,2,9,9,1,19},{0,0,13,2,9,0,1,19},{0,0,13,2,9,1,1,19},{0,0,13,2,9,2,1,19},{0,0,13,2,9,3,1,19},{0,0,13,2,9,4,1,19},{0,0,13,2,9,5,1,19},{0,0,13,2,9,6,1,19},{0,0,13,2,9,7,1,19}}, - {{0,0,13,2,9,8,1,19},{0,0,13,2,9,9,1,19},{0,0,13,2,9,0,1,19},{0,0,13,2,9,1,1,19},{0,0,13,2,9,2,1,19},{0,0,13,2,9,3,1,19},{0,0,13,2,9,4,1,19},{0,0,13,2,9,5,1,19},{0,0,13,2,9,6,1,19},{0,0,13,2,9,7,1,19},{0,0,13,2,9,8,1,19},{0,0,13,2,9,9,1,19},{0,0,13,2,9,0,1,19},{0,0,13,2,9,1,1,19},{0,0,13,2,9,2,1,19},{0,0,13,2,9,3,1,19}}, - {{0,0,13,2,9,4,1,19},{0,0,13,2,9,5,1,19},{0,0,13,2,9,6,1,19},{0,0,13,2,9,7,1,19},{0,0,13,2,9,8,1,19},{0,0,13,2,9,9,1,19},{0,0,13,2,9,0,1,19},{0,0,13,2,9,1,1,19},{0,0,13,2,9,2,1,19},{0,0,13,2,9,3,1,19},{0,0,13,2,9,4,1,19},{0,0,13,2,9,5,1,19},{0,0,13,2,9,6,1,19},{0,0,13,2,9,7,1,19},{0,0,13,2,9,8,1,19},{0,0,13,2,9,9,1,19}}, - {{112,0,26,0,8,-1,1,2},{112,0,26,0,8,-1,1,2},{112,0,26,0,8,-1,1,2},{112,0,26,0,8,-1,1,2},{112,0,26,0,8,-1,1,2},{112,0,26,0,8,-1,1,2},{112,0,26,0,8,-1,1,2},{112,0,26,0,8,-1,1,2},{112,0,26,0,8,-1,1,2},{112,0,26,0,8,-1,1,2},{112,0,26,0,8,-1,1,2},{112,0,26,0,8,-1,1,2},{112,0,26,0,8,-1,1,2},{112,0,26,0,8,-1,1,2},{112,0,26,0,8,-1,1,2},{112,0,26,0,8,-1,1,2}}, - {{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9}}, - {{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,26,0,8,-1,1,2},{112,0,26,0,8,-1,1,2},{112,0,26,0,8,-1,1,2},{112,0,26,0,8,-1,1,2},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9}}, - {{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,26,0,8,-1,1,2},{112,0,26,0,8,-1,1,2},{112,0,26,0,8,-1,1,2}}, - {{112,0,26,0,8,-1,1,2},{112,0,26,0,8,-1,1,2},{112,0,26,0,8,-1,1,2},{112,0,26,0,8,-1,1,2},{112,0,26,0,8,-1,1,2},{112,0,12,17,7,-1,1,9},{112,0,26,0,8,-1,1,2},{112,0,26,0,8,-1,1,2},{112,0,26,0,8,-1,1,2},{112,0,26,0,8,-1,1,2},{112,0,26,0,8,-1,1,2},{112,0,26,0,8,-1,1,2},{112,0,26,0,8,-1,1,2},{112,0,26,0,8,-1,1,2},{112,0,26,0,8,-1,1,2},{112,0,26,0,8,-1,1,2}}, - {{112,0,26,0,8,-1,1,2},{112,0,26,0,8,-1,1,2},{112,0,26,0,8,-1,1,2},{112,0,26,0,8,-1,1,2},{112,0,12,17,7,-1,1,9},{112,0,26,0,8,-1,1,2},{112,0,26,0,8,-1,1,2},{112,0,21,0,8,-1,1,4},{112,0,21,0,8,-1,1,4},{112,0,21,0,8,-1,1,4},{112,0,21,0,8,-1,1,4},{112,0,21,0,8,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9}}, - {{103,0,2,0,12,-1,1,0},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9},{112,0,12,17,7,-1,1,9}}, - {{140,0,7,1,7,-1,1,2},{140,0,7,1,7,-1,1,2},{140,0,7,1,7,-1,1,2},{140,0,7,1,7,-1,1,2},{140,0,7,1,7,-1,1,2},{140,0,7,1,7,-1,1,2},{140,0,7,1,7,-1,1,2},{140,0,7,1,7,-1,1,2},{140,0,7,1,7,-1,1,2},{140,0,7,1,7,-1,1,2},{140,0,7,1,7,-1,1,2},{140,0,7,1,7,-1,1,2},{140,0,7,1,7,-1,1,2},{140,0,7,1,7,-1,1,2},{140,0,7,1,7,-1,1,2},{140,0,7,1,7,-1,1,2}}, - {{140,0,7,1,7,-1,1,2},{140,0,7,1,7,-1,1,2},{140,0,7,1,7,-1,1,2},{140,0,7,1,7,-1,1,2},{140,0,7,1,7,-1,1,2},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{140,0,15,1,8,-1,1,2},{140,0,15,1,8,-1,1,2},{140,0,15,1,8,-1,1,2},{140,0,15,1,8,-1,1,2},{140,0,15,1,8,-1,1,2},{140,0,15,1,8,-1,1,2},{140,0,15,1,8,-1,1,2},{140,0,15,1,8,-1,1,2},{140,0,15,1,8,-1,1,2}}, - {{140,0,12,17,7,-1,1,9},{140,0,12,17,7,-1,1,9},{140,0,12,17,7,-1,1,9},{140,0,12,17,7,-1,1,9},{140,0,12,17,7,-1,1,9},{140,0,12,17,7,-1,1,9},{140,0,12,17,7,-1,1,9},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0},{103,0,2,1,12,-1,1,0}}, - {{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{103,0,2,13,12,-1,1,0},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2}}, - {{103,0,2,13,12,-1,1,0},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{103,0,2,13,12,-1,1,0},{2,0,7,13,9,-1,1,2},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{2,0,7,13,9,-1,1,2},{103,0,2,13,12,-1,1,0},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2}}, - {{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{103,0,2,13,12,-1,1,0},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{103,0,2,13,12,-1,1,0},{2,0,7,13,9,-1,1,2},{103,0,2,13,12,-1,1,0},{2,0,7,13,9,-1,1,2},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0}}, - {{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{2,0,7,13,9,-1,1,2},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{2,0,7,13,9,-1,1,2},{103,0,2,13,12,-1,1,0},{2,0,7,13,9,-1,1,2},{103,0,2,13,12,-1,1,0},{2,0,7,13,9,-1,1,2},{103,0,2,13,12,-1,1,0},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2}}, - {{103,0,2,13,12,-1,1,0},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{103,0,2,13,12,-1,1,0},{2,0,7,13,9,-1,1,2},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{2,0,7,13,9,-1,1,2},{103,0,2,13,12,-1,1,0},{2,0,7,13,9,-1,1,2},{103,0,2,13,12,-1,1,0},{2,0,7,13,9,-1,1,2},{103,0,2,13,12,-1,1,0},{2,0,7,13,9,-1,1,2},{103,0,2,13,12,-1,1,0},{2,0,7,13,9,-1,1,2}}, - {{103,0,2,13,12,-1,1,0},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{103,0,2,13,12,-1,1,0},{2,0,7,13,9,-1,1,2},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{103,0,2,13,12,-1,1,0},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2}}, - {{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{103,0,2,13,12,-1,1,0},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{103,0,2,13,12,-1,1,0},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{103,0,2,13,12,-1,1,0},{2,0,7,13,9,-1,1,2},{103,0,2,13,12,-1,1,0}}, - {{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{103,0,2,13,12,-1,1,0},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2}}, - {{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0}}, - {{103,0,2,13,12,-1,1,0},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{103,0,2,13,12,-1,1,0},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{103,0,2,13,12,-1,1,0},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2},{2,0,7,13,9,-1,1,2}}, - {{2,0,25,10,8,-1,1,2},{2,0,25,10,8,-1,1,2},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0},{103,0,2,13,12,-1,1,0}}, - {{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{103,0,2,0,12,-1,0,0}}, - {{103,0,2,0,12,-1,0,0},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14}}, - {{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0}}, - {{0,0,15,2,9,0,0,1},{0,0,15,2,9,0,0,1},{0,0,15,2,9,1,0,1},{0,0,15,2,9,2,0,1},{0,0,15,2,9,3,0,1},{0,0,15,2,9,4,0,1},{0,0,15,2,9,5,0,1},{0,0,15,2,9,6,0,1},{0,0,15,2,9,7,0,1},{0,0,15,2,9,8,0,1},{0,0,15,2,9,9,0,1},{0,0,15,10,8,-1,0,1},{0,0,15,10,8,-1,0,1},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0}}, - {{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,1},{0,0,26,0,9,-1,0,2},{103,0,2,0,12,-1,0,0}}, - {{0,0,26,0,8,-1,0,1},{0,0,26,0,8,-1,0,1},{0,0,26,0,8,-1,0,1},{0,0,26,0,8,-1,0,1},{0,0,26,0,8,-1,0,1},{0,0,26,0,8,-1,0,1},{0,0,26,0,8,-1,0,1},{0,0,26,0,8,-1,0,1},{0,0,26,0,8,-1,0,1},{0,0,26,0,8,-1,0,1},{0,0,26,0,8,-1,0,1},{0,0,26,0,8,-1,0,1},{0,0,26,0,8,-1,0,1},{0,0,26,0,8,-1,0,1},{0,0,26,0,8,-1,0,1},{0,0,26,0,8,-1,0,1}}, - {{0,0,26,0,8,-1,0,1},{0,0,26,0,8,-1,0,1},{0,0,26,0,8,-1,0,1},{0,0,26,0,8,-1,0,1},{0,0,26,0,8,-1,0,1},{0,0,26,0,8,-1,0,1},{0,0,26,0,8,-1,0,1},{0,0,26,0,8,-1,0,1},{0,0,26,0,8,-1,0,1},{0,0,26,0,8,-1,0,1},{0,0,26,10,9,-1,0,2},{0,0,26,10,9,-1,0,2},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0}}, - {{0,0,26,0,9,-1,0,1},{0,0,26,0,8,-1,0,1},{0,0,26,0,8,-1,0,1},{0,0,26,0,8,-1,0,1},{0,0,26,0,8,-1,0,1},{0,0,26,0,8,-1,0,1},{0,0,26,0,8,-1,0,1},{0,0,26,0,8,-1,0,1},{0,0,26,0,8,-1,0,1},{0,0,26,0,8,-1,0,1},{0,0,26,0,8,-1,0,1},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0}}, - {{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{0,0,26,0,8,-1,0,39},{0,0,26,0,8,-1,0,39},{0,0,26,0,8,-1,0,39},{0,0,26,0,8,-1,0,39},{0,0,26,0,8,-1,0,39},{0,0,26,0,8,-1,0,39},{0,0,26,0,8,-1,0,39},{0,0,26,0,8,-1,0,39},{0,0,26,0,8,-1,0,39},{0,0,26,0,8,-1,0,39}}, - {{0,0,26,0,8,-1,0,39},{0,0,26,0,8,-1,0,39},{0,0,26,0,8,-1,0,39},{0,0,26,0,8,-1,0,39},{0,0,26,0,8,-1,0,39},{0,0,26,0,8,-1,0,39},{0,0,26,0,8,-1,0,39},{0,0,26,0,8,-1,0,39},{0,0,26,0,8,-1,0,39},{0,0,26,0,8,-1,0,39},{0,0,26,0,8,-1,0,39},{0,0,26,0,8,-1,0,39},{0,0,26,0,8,-1,0,39},{0,0,26,0,8,-1,0,39},{0,0,26,0,8,-1,0,39},{0,0,26,0,8,-1,0,39}}, - {{20,0,26,0,9,-1,2,14},{0,0,26,0,9,-1,2,14},{0,0,26,0,9,-1,0,14},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0}}, - {{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0}}, - {{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0}}, - {{0,0,26,0,9,-1,0,14},{0,0,26,0,9,-1,0,14},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0}}, - {{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14}}, - {{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14}}, - {{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,24,10,8,-1,0,2},{0,0,24,10,8,-1,0,2},{0,0,24,10,8,-1,0,2},{0,0,24,10,8,-1,0,2},{0,0,24,10,8,-1,0,2}}, - {{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,2}}, - {{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14}}, - {{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14}}, - {{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2}}, - {{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14}}, - {{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2}}, - {{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14}}, - {{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{103,0,2,0,12,-1,0,0},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14}}, - {{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{103,0,2,0,12,-1,0,0},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14}}, - {{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14}}, - {{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14}}, - {{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,23},{0,0,26,10,8,-1,0,23},{0,0,26,10,8,-1,0,23},{0,0,26,10,8,-1,0,18},{0,0,26,10,8,-1,0,18},{0,0,26,10,8,-1,0,18},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2}}, - {{0,0,26,10,8,-1,0,14},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0}}, - {{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{0,0,26,10,8,-1,0,14},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0}}, - {{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0}}, - {{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{0,0,26,10,8,-1,0,2},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0},{103,0,2,0,12,-1,0,0}}, - {{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{0,0,26,10,8,-1,1,2},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{0,0,26,10,8,-1,1,14},{0,0,26,10,8,-1,1,14},{0,0,26,10,8,-1,1,14},{0,0,26,10,8,-1,1,14},{0,0,26,10,8,-1,1,14},{0,0,26,10,8,-1,1,14},{0,0,26,10,8,-1,1,14},{0,0,26,10,8,-1,1,14},{0,0,26,10,8,-1,1,14},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{0,0,26,10,8,-1,1,14},{0,0,26,10,8,-1,1,14},{0,0,26,10,8,-1,1,14},{0,0,26,10,8,-1,1,14},{0,0,26,10,8,-1,1,14},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{0,0,26,10,8,-1,1,14},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14}}, - {{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14}}, - {{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14}}, - {{17,0,7,0,0,-1,0,14},{17,0,7,0,0,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14}}, - {{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,0,14},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{103,0,2,0,12,-1,1,0},{0,0,1,18,11,-1,1,9},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}}, - {{0,0,1,18,10,-1,1,9},{0,0,1,18,10,-1,1,9},{0,0,1,18,10,-1,1,9},{0,0,1,18,10,-1,1,9},{0,0,1,18,10,-1,1,9},{0,0,1,18,10,-1,1,9},{0,0,1,18,10,-1,1,9},{0,0,1,18,10,-1,1,9},{0,0,1,18,10,-1,1,9},{0,0,1,18,10,-1,1,9},{0,0,1,18,10,-1,1,9},{0,0,1,18,10,-1,1,9},{0,0,1,18,10,-1,1,9},{0,0,1,18,10,-1,1,9},{0,0,1,18,10,-1,1,9},{0,0,1,18,10,-1,1,9}}, - {{0,0,1,18,10,-1,1,9},{0,0,1,18,10,-1,1,9},{0,0,1,18,10,-1,1,9},{0,0,1,18,10,-1,1,9},{0,0,1,18,10,-1,1,9},{0,0,1,18,10,-1,1,9},{0,0,1,18,10,-1,1,9},{0,0,1,18,10,-1,1,9},{0,0,1,18,10,-1,1,9},{0,0,1,18,10,-1,1,9},{0,0,1,18,10,-1,1,9},{0,0,1,18,10,-1,1,9},{0,0,1,18,10,-1,1,9},{0,0,1,18,10,-1,1,9},{0,0,1,18,10,-1,1,9},{0,0,1,18,11,-1,1,9}}, - {{103,0,3,0,12,-1,0,0},{103,0,3,0,12,-1,0,0},{103,0,3,0,12,-1,0,0},{103,0,3,0,12,-1,0,0},{103,0,3,0,12,-1,0,0},{103,0,3,0,12,-1,0,0},{103,0,3,0,12,-1,0,0},{103,0,3,0,12,-1,0,0},{103,0,3,0,12,-1,0,0},{103,0,3,0,12,-1,0,0},{103,0,3,0,12,-1,0,0},{103,0,3,0,12,-1,0,0},{103,0,3,0,12,-1,0,0},{103,0,3,0,12,-1,0,0},{103,0,2,0,12,-1,1,0},{103,0,2,0,12,-1,1,0}} +static const nsCharProps2 sCharProp2Values[1005][16] = { + {{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,8,8,-1,1,4},{0,0,0,0,7,8,-1,1,17},{0,0,0,0,8,8,-1,1,6},{0,0,0,0,9,8,-1,1,6},{0,0,0,0,7,8,-1,1,10},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9}}, + {{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,7,12,-1,1,9},{0,0,0,0,7,12,-1,1,9},{0,0,0,0,7,12,-1,1,9},{0,0,0,0,8,12,-1,1,9}}, + {{0,0,0,29,9,8,-1,1,26},{0,0,0,21,10,8,-1,1,11},{0,0,0,21,10,8,-1,1,23},{0,0,0,21,4,8,-1,1,2},{0,0,0,23,4,8,-1,1,22},{0,0,0,21,4,8,-1,1,21},{0,0,0,21,10,8,-1,1,2},{0,0,0,21,10,1,-1,1,23},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,36},{0,0,0,21,10,8,-1,1,2},{0,0,0,25,3,8,-1,1,22},{0,0,0,21,6,8,-1,1,16},{0,0,0,17,3,1,-1,1,13},{0,0,0,21,6,1,-1,1,16},{0,0,0,21,6,8,-1,1,27}}, + {{0,0,0,13,2,0,0,1,19},{0,0,0,13,2,0,1,1,19},{0,0,0,13,2,0,2,1,19},{0,0,0,13,2,0,3,1,19},{0,0,0,13,2,0,4,1,19},{0,0,0,13,2,0,5,1,19},{0,0,0,13,2,0,6,1,19},{0,0,0,13,2,0,7,1,19},{0,0,0,13,2,0,8,1,19},{0,0,0,13,2,0,9,1,19},{0,0,0,21,6,1,-1,1,16},{0,0,0,21,10,8,-1,1,16},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,21,10,8,-1,1,11}}, + {{0,0,0,21,10,8,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2}}, + {{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{0,1,0,22,10,8,-1,1,20},{0,0,0,21,10,8,-1,1,22},{0,2,0,18,10,8,-1,1,36},{0,0,0,24,10,8,-1,1,2},{0,0,0,16,10,0,-1,1,2}}, + {{0,0,0,24,10,8,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2}}, + {{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{0,1,0,22,10,8,-1,1,20},{0,0,0,25,10,8,-1,1,4},{0,2,0,18,10,8,-1,1,8},{0,0,0,25,10,8,-1,1,2},{0,0,0,0,18,12,-1,1,9}}, + {{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,7,8,-1,1,29},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9}}, + {{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9},{0,0,0,0,18,12,-1,1,9}}, + {{0,0,0,29,6,9,-1,1,12},{0,0,0,21,10,8,-1,1,20},{0,0,0,23,4,8,-1,1,21},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,26,10,8,-1,1,2},{0,0,0,21,10,8,-1,0,1},{0,0,0,24,10,9,-1,1,1},{0,0,0,26,10,8,-1,0,2},{25,0,0,7,0,9,-1,1,1},{0,0,0,20,10,8,-1,1,23},{0,0,0,25,10,8,-1,1,2},{0,0,0,1,18,10,-1,1,4},{0,0,0,26,10,8,-1,0,2},{0,0,0,24,10,9,-1,1,2}}, + {{0,0,0,26,4,8,-1,1,21},{0,0,0,25,4,8,-1,0,22},{0,0,0,15,2,9,2,1,1},{0,0,0,15,2,9,3,1,1},{0,0,0,24,10,9,-1,1,5},{0,0,0,5,0,9,-1,1,2},{0,0,0,21,10,8,-1,1,1},{0,0,0,21,10,1,-1,1,1},{0,0,0,24,10,9,-1,1,1},{0,0,0,15,2,9,1,1,1},{25,0,0,7,0,9,-1,1,1},{0,0,0,19,10,8,-1,1,23},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,21,10,8,-1,1,20}}, + {{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2}}, + {{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{0,0,0,25,10,8,-1,0,1},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2}}, + {{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2}}, + {{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{0,0,0,25,10,8,-1,0,1},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2}}, + {{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2}}, + {{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,9,-1,1,2},{25,0,0,5,0,9,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,9,-1,1,2}}, + {{25,0,0,5,0,9,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,11,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2}}, + {{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,9,-1,1,2}}, + {{25,0,0,5,0,3,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,0,-1,1,2}}, + {{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2}}, + {{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,0,-1,1,2}}, + {{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,7,0,4,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2}}, + {{25,0,0,7,0,3,-1,1,2},{25,0,0,7,0,3,-1,1,2},{25,0,0,7,0,3,-1,1,2},{25,0,0,7,0,3,-1,1,2},{25,0,0,9,0,9,-1,1,2},{25,0,0,8,0,9,-1,1,2},{25,0,0,5,0,9,-1,1,2},{25,0,0,9,0,9,-1,1,2},{25,0,0,8,0,9,-1,1,2},{25,0,0,5,0,9,-1,1,2},{25,0,0,9,0,9,-1,1,2},{25,0,0,8,0,9,-1,1,2},{25,0,0,5,0,9,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2}}, + {{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2}}, + {{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2}}, + {{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,9,-1,1,2},{25,0,0,8,0,9,-1,1,2},{25,0,0,5,0,9,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2}}, + {{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2}}, + {{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2}}, + {{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2}}, + {{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2}}, + {{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,4,-1,1,2}}, + {{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,2,-1,1,2}}, + {{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2}}, + {{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2}}, + {{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,7,0,2,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,3,-1,1,2}}, + {{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2}}, + {{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{0,0,0,6,10,3,-1,1,2},{0,0,0,6,10,3,-1,1,2},{0,0,0,6,0,0,-1,1,2},{0,0,0,6,0,0,-1,1,2},{0,0,0,6,0,3,-1,1,2},{0,0,0,6,0,3,-1,1,2},{0,0,0,6,0,3,-1,1,2}}, + {{0,0,0,6,0,3,-1,1,2},{0,0,0,6,0,3,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,6,10,3,-1,1,2},{0,0,0,6,10,3,-1,1,1},{0,0,0,6,10,3,-1,1,5},{0,0,0,6,10,3,-1,1,1},{0,0,0,6,10,3,-1,1,1},{0,0,0,6,10,3,-1,1,1},{0,0,0,6,10,3,-1,1,5},{0,0,0,6,10,3,-1,1,1},{0,0,0,6,10,3,-1,1,2},{0,0,0,6,10,3,-1,1,2}}, + {{0,0,0,6,0,3,-1,1,1},{0,0,0,6,0,3,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,9,-1,1,1},{0,0,0,24,10,9,-1,1,1},{0,0,0,24,10,9,-1,1,1},{0,0,0,24,10,9,-1,1,1},{0,0,0,24,10,9,-1,1,2},{0,0,0,24,10,9,-1,1,1},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,5}}, + {{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{5,0,0,24,10,8,-1,0,2},{5,0,0,24,10,8,-1,0,2},{0,0,0,6,10,0,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,6,0,3,-1,1,2},{0,0,0,24,10,8,-1,1,2}}, + {{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2}}, + {{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,2,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,2,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,0,-1,1,9}}, + {{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,2,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9}}, + {{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,2,-1,1,9},{1,0,0,12,17,2,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,3,-1,1,9}}, + {{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,2,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,2,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,2,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9}}, + {{1,0,0,12,17,9,-1,1,9},{1,0,0,12,17,9,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,9,-1,1,9},{1,0,0,12,17,9,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,10,-1,1,12}}, + {{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,2,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,12},{1,0,0,12,17,3,-1,1,12},{1,0,0,12,17,3,-1,1,12},{1,0,0,12,17,3,-1,1,12}}, + {{1,0,0,12,17,3,-1,1,12},{1,0,0,12,17,3,-1,1,12},{1,0,0,12,17,3,-1,1,12},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9}}, + {{14,0,0,9,0,4,-1,1,2},{14,0,0,5,0,4,-1,1,2},{14,0,0,9,0,4,-1,1,2},{14,0,0,5,0,4,-1,1,2},{0,0,0,6,10,9,-1,1,2},{14,0,0,24,10,1,-1,1,2},{14,0,0,9,0,4,-1,1,2},{14,0,0,5,0,4,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{14,0,0,6,0,9,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{0,0,0,21,10,9,-1,1,16},{14,0,0,9,0,4,-1,1,2}}, + {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{14,0,0,24,10,9,-1,1,2},{0,0,0,24,10,9,-1,1,2},{14,0,0,9,0,0,-1,1,2},{0,0,0,21,10,9,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{14,0,0,9,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2}}, + {{14,0,0,5,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2}}, + {{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2}}, + {{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2}}, + {{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,9,0,3,-1,1,2}}, + {{14,0,0,5,0,9,-1,1,2},{14,0,0,5,0,9,-1,1,2},{14,0,0,9,0,9,-1,1,2},{14,0,0,9,0,9,-1,1,2},{14,0,0,9,0,9,-1,1,2},{14,0,0,5,0,9,-1,1,2},{14,0,0,5,0,9,-1,1,2},{14,0,0,5,0,3,-1,1,2},{14,0,0,9,0,4,-1,1,2},{14,0,0,5,0,4,-1,1,2},{14,0,0,9,0,4,-1,1,2},{14,0,0,5,0,4,-1,1,2},{14,0,0,9,0,4,-1,1,2},{14,0,0,5,0,4,-1,1,2},{14,0,0,9,0,4,-1,1,2},{14,0,0,5,0,4,-1,1,2}}, + {{14,0,0,9,0,4,-1,1,2},{14,0,0,5,0,4,-1,1,2},{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2},{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2},{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2},{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2},{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2},{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2},{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2}}, + {{14,0,0,5,0,9,-1,1,2},{14,0,0,5,0,9,-1,1,2},{14,0,0,5,0,9,-1,1,2},{14,0,0,5,0,4,-1,1,2},{14,0,0,9,0,9,-1,1,2},{14,0,0,5,0,9,-1,1,2},{14,0,0,25,10,8,-1,1,2},{14,0,0,9,0,4,-1,1,2},{14,0,0,5,0,4,-1,1,2},{14,0,0,9,0,9,-1,1,2},{14,0,0,9,0,4,-1,1,2},{14,0,0,5,0,4,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2}}, + {{8,0,0,9,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2}}, + {{8,0,0,5,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2}}, + {{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2}}, + {{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,26,0,8,-1,1,2},{8,0,0,12,17,4,-1,1,9},{8,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{8,0,0,12,17,4,-1,1,9},{8,0,0,11,17,8,-1,1,9},{8,0,0,11,17,8,-1,1,9},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2}}, + {{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2}}, + {{8,0,0,9,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2}}, + {{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2}}, + {{103,0,0,2,0,12,-1,1,0},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2}}, + {{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2}}, + {{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{3,0,0,9,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{3,0,0,6,0,0,-1,1,2},{3,0,0,21,0,8,-1,1,2},{3,0,0,21,0,8,-1,1,2},{3,0,0,21,0,8,-1,1,2},{3,0,0,21,0,8,-1,1,2},{3,0,0,21,0,8,-1,1,2},{3,0,0,21,0,8,-1,1,2}}, + {{103,0,0,2,0,12,-1,1,0},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2}}, + {{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2}}, + {{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,0,-1,1,2},{3,0,0,5,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{0,0,0,21,0,8,-1,1,16},{3,0,0,17,10,1,-1,1,4},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{3,0,0,26,10,8,-1,1,2},{3,0,0,26,10,8,-1,1,2},{3,0,0,23,4,8,-1,1,22}}, + {{103,0,0,2,1,12,-1,1,0},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9}}, + {{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,4,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9}}, + {{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,0,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,17,1,8,-1,1,4},{19,0,0,12,17,2,-1,1,9}}, + {{19,0,0,21,1,8,-1,1,2},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,2,-1,1,9},{19,0,0,21,1,8,-1,1,2},{19,0,0,12,17,2,-1,1,9},{19,0,0,12,17,4,-1,1,9},{19,0,0,21,1,8,-1,1,11},{19,0,0,12,17,4,-1,1,9},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0}}, + {{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38}}, + {{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0}}, + {{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,7,1,0,-1,1,38},{19,0,0,21,1,1,-1,1,2},{19,0,0,21,1,1,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0}}, + {{2,0,0,1,5,8,-1,1,2},{2,0,0,1,5,8,-1,1,2},{2,0,0,1,5,8,-1,1,2},{2,0,0,1,5,8,-1,1,2},{2,0,0,1,5,8,-1,1,2},{0,0,0,1,5,8,-1,1,2},{2,0,0,25,10,8,-1,1,2},{2,0,0,25,10,8,-1,1,2},{2,0,0,25,13,8,-1,1,2},{2,0,0,21,4,8,-1,1,21},{2,0,0,21,4,8,-1,1,21},{2,0,0,23,13,8,-1,1,21},{0,0,0,21,6,8,-1,1,16},{2,0,0,21,13,8,-1,1,16},{2,0,0,26,10,8,-1,1,2},{2,0,0,26,10,8,-1,1,2}}, + {{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{0,0,0,21,13,8,-1,1,11},{0,0,0,1,13,10,-1,1,9},{103,0,0,2,13,12,-1,1,0},{2,0,0,21,13,8,-1,1,11},{0,0,0,21,13,8,-1,1,11}}, + {{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2}}, + {{0,0,0,6,13,7,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9}}, + {{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{1,0,0,12,17,0,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9}}, + {{2,0,0,13,5,0,0,1,19},{2,0,0,13,5,0,1,1,19},{2,0,0,13,5,0,2,1,19},{2,0,0,13,5,0,3,1,19},{2,0,0,13,5,0,4,1,19},{2,0,0,13,5,0,5,1,19},{2,0,0,13,5,0,6,1,19},{2,0,0,13,5,0,7,1,19},{2,0,0,13,5,0,8,1,19},{2,0,0,13,5,0,9,1,19},{2,0,0,21,4,8,-1,1,21},{2,0,0,21,5,8,-1,1,19},{2,0,0,21,5,8,-1,1,19},{2,0,0,21,13,8,-1,1,2},{2,0,0,7,13,4,-1,1,2},{2,0,0,7,13,4,-1,1,2}}, + {{1,0,0,12,17,0,-1,1,9},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,11,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2}}, + {{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,4,-1,1,2},{2,0,0,7,13,0,-1,1,2}}, + {{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,21,13,8,-1,1,11},{2,0,0,7,13,0,-1,1,2},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{0,0,0,1,5,8,-1,1,2},{2,0,0,26,10,8,-1,1,2},{2,0,0,12,17,2,-1,1,9}}, + {{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,6,13,0,-1,1,2},{2,0,0,6,13,0,-1,1,2},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,26,10,8,-1,1,2},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2}}, + {{2,0,0,13,2,0,0,1,19},{2,0,0,13,2,0,1,1,19},{2,0,0,13,2,0,2,1,19},{2,0,0,13,2,0,3,1,19},{2,0,0,13,2,0,4,1,19},{2,0,0,13,2,0,5,1,19},{2,0,0,13,2,0,6,1,19},{2,0,0,13,2,0,7,1,19},{2,0,0,13,2,0,8,1,19},{2,0,0,13,2,0,9,1,19},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,26,13,1,-1,1,2},{2,0,0,26,13,1,-1,1,2},{2,0,0,7,13,0,-1,1,2}}, + {{34,0,0,21,13,8,-1,1,2},{34,0,0,21,13,8,-1,1,2},{34,0,0,21,13,8,-1,1,2},{34,0,0,21,13,8,-1,1,2},{34,0,0,21,13,8,-1,1,2},{34,0,0,21,13,8,-1,1,2},{34,0,0,21,13,8,-1,1,2},{34,0,0,21,13,8,-1,1,2},{34,0,0,21,13,8,-1,1,2},{34,0,0,21,13,8,-1,1,2},{34,0,0,21,13,8,-1,1,2},{34,0,0,21,13,8,-1,1,2},{34,0,0,21,13,8,-1,1,2},{34,0,0,21,13,8,-1,1,2},{103,0,0,2,13,12,-1,1,0},{34,0,0,1,13,8,-1,1,2}}, + {{34,0,0,7,13,6,-1,1,2},{34,0,0,12,17,6,-1,1,9},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2}}, + {{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2}}, + {{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9}}, + {{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{34,0,0,12,17,6,-1,1,9},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2},{34,0,0,7,13,6,-1,1,2}}, + {{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2}}, + {{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2},{37,0,0,7,13,0,-1,1,2},{37,0,0,12,17,0,-1,1,9},{37,0,0,12,17,0,-1,1,9},{37,0,0,12,17,0,-1,1,9},{37,0,0,12,17,0,-1,1,9},{37,0,0,12,17,0,-1,1,9},{37,0,0,12,17,0,-1,1,9},{37,0,0,12,17,0,-1,1,9},{37,0,0,12,17,0,-1,1,9},{37,0,0,12,17,0,-1,1,9},{37,0,0,12,17,0,-1,1,9}}, + {{37,0,0,12,17,0,-1,1,9},{37,0,0,7,13,0,-1,1,2},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0}}, + {{87,0,0,13,1,6,0,1,19},{87,0,0,13,1,6,1,1,19},{87,0,0,13,1,6,2,1,19},{87,0,0,13,1,6,3,1,19},{87,0,0,13,1,6,4,1,19},{87,0,0,13,1,6,5,1,19},{87,0,0,13,1,6,6,1,19},{87,0,0,13,1,6,7,1,19},{87,0,0,13,1,6,8,1,19},{87,0,0,13,1,6,9,1,19},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2}}, + {{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2}}, + {{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,7,1,6,-1,1,2},{87,0,0,12,17,6,-1,1,9},{87,0,0,12,17,6,-1,1,9},{87,0,0,12,17,6,-1,1,9},{87,0,0,12,17,6,-1,1,9},{87,0,0,12,17,6,-1,1,9}}, + {{87,0,0,12,17,6,-1,1,9},{87,0,0,12,17,6,-1,1,9},{87,0,0,12,17,6,-1,1,9},{87,0,0,12,17,6,-1,1,9},{87,0,0,6,1,6,-1,1,2},{87,0,0,6,1,6,-1,1,2},{87,0,0,26,10,8,-1,1,2},{87,0,0,21,10,8,-1,1,2},{87,0,0,21,10,8,-1,1,16},{87,0,0,21,10,8,-1,1,11},{87,0,0,6,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0}}, + {{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2}}, + {{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2},{126,0,0,7,1,7,-1,1,2},{126,0,0,12,17,7,-1,1,9},{126,0,0,12,17,7,-1,1,9},{126,0,0,12,17,7,-1,1,9},{126,0,0,12,17,7,-1,1,9},{126,0,0,6,1,7,-1,1,2},{126,0,0,12,17,7,-1,1,9},{126,0,0,12,17,7,-1,1,9},{126,0,0,12,17,7,-1,1,9},{126,0,0,12,17,7,-1,1,9},{126,0,0,12,17,7,-1,1,9}}, + {{126,0,0,12,17,7,-1,1,9},{126,0,0,12,17,7,-1,1,9},{126,0,0,12,17,7,-1,1,9},{126,0,0,12,17,7,-1,1,9},{126,0,0,6,1,7,-1,1,2},{126,0,0,12,17,7,-1,1,9},{126,0,0,12,17,7,-1,1,9},{126,0,0,12,17,7,-1,1,9},{126,0,0,6,1,7,-1,1,2},{126,0,0,12,17,7,-1,1,9},{126,0,0,12,17,7,-1,1,9},{126,0,0,12,17,7,-1,1,9},{126,0,0,12,17,7,-1,1,9},{126,0,0,12,17,7,-1,1,9},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0}}, + {{126,0,0,21,1,8,-1,1,2},{126,0,0,21,1,8,-1,1,2},{126,0,0,21,1,8,-1,1,2},{126,0,0,21,1,8,-1,1,2},{126,0,0,21,1,8,-1,1,2},{126,0,0,21,1,8,-1,1,2},{126,0,0,21,1,8,-1,1,2},{126,0,0,21,1,8,-1,1,2},{126,0,0,21,1,8,-1,1,2},{126,0,0,21,1,8,-1,1,2},{126,0,0,21,1,8,-1,1,2},{126,0,0,21,1,8,-1,1,2},{126,0,0,21,1,8,-1,1,2},{126,0,0,21,1,8,-1,1,2},{126,0,0,21,1,8,-1,1,2},{103,0,0,2,1,12,-1,1,0}}, + {{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2}}, + {{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,7,1,6,-1,1,2},{84,0,0,12,17,6,-1,1,9},{84,0,0,12,17,6,-1,1,9},{84,0,0,12,17,6,-1,1,9},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{84,0,0,21,1,8,-1,1,2},{103,0,0,2,1,12,-1,1,0}}, + {{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0}}, + {{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,4,-1,1,2},{2,0,0,7,13,4,-1,1,2},{2,0,0,7,13,4,-1,1,2}}, + {{2,0,0,7,13,4,-1,1,2},{2,0,0,7,13,4,-1,1,2},{2,0,0,7,13,0,-1,1,2},{2,0,0,7,13,2,-1,1,2},{2,0,0,7,13,2,-1,1,2},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0}}, + {{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0}}, + {{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9}}, + {{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9},{2,0,0,12,17,2,-1,1,9}}, + {{10,0,0,12,17,2,-1,1,9},{10,0,0,12,17,0,-1,1,9},{10,0,0,12,17,0,-1,1,9},{10,0,0,10,0,0,-1,1,9},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2}}, + {{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2}}, + {{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,12,17,0,-1,1,9},{10,0,0,10,0,0,-1,1,9},{10,0,0,12,17,0,-1,1,9},{10,0,0,7,0,0,-1,1,2},{10,0,0,10,0,0,-1,1,9},{10,0,0,10,0,0,-1,1,9}}, + {{10,0,0,10,0,0,-1,1,9},{10,0,0,12,17,0,-1,1,9},{10,0,0,12,17,0,-1,1,9},{10,0,0,12,17,0,-1,1,9},{10,0,0,12,17,0,-1,1,9},{10,0,0,12,17,0,-1,1,9},{10,0,0,12,17,0,-1,1,9},{10,0,0,12,17,0,-1,1,9},{10,0,0,12,17,0,-1,1,9},{10,0,0,10,0,0,-1,1,9},{10,0,0,10,0,0,-1,1,9},{10,0,0,10,0,0,-1,1,9},{10,0,0,10,0,0,-1,1,9},{10,0,0,12,17,0,-1,1,9},{10,0,0,10,0,4,-1,1,9},{10,0,0,10,0,0,-1,1,9}}, + {{10,0,0,7,0,0,-1,1,2},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{10,0,0,12,17,3,-1,1,9},{10,0,0,12,17,3,-1,1,9},{10,0,0,12,17,2,-1,1,9},{10,0,0,12,17,0,-1,1,9},{10,0,0,12,17,0,-1,1,9},{10,0,0,7,0,9,-1,1,2},{10,0,0,7,0,9,-1,1,2},{10,0,0,7,0,9,-1,1,2},{10,0,0,7,0,9,-1,1,2},{10,0,0,7,0,9,-1,1,2},{10,0,0,7,0,9,-1,1,2},{10,0,0,7,0,9,-1,1,2},{10,0,0,7,0,9,-1,1,2}}, + {{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,12,17,0,-1,1,9},{10,0,0,12,17,0,-1,1,9},{0,0,0,21,0,8,-1,1,4},{0,0,0,21,0,8,-1,1,4},{10,0,0,13,0,0,0,1,19},{10,0,0,13,0,0,1,1,19},{10,0,0,13,0,0,2,1,19},{10,0,0,13,0,0,3,1,19},{10,0,0,13,0,0,4,1,19},{10,0,0,13,0,0,5,1,19},{10,0,0,13,0,0,6,1,19},{10,0,0,13,0,0,7,1,19},{10,0,0,13,0,0,8,1,19},{10,0,0,13,0,0,9,1,19}}, + {{10,0,0,21,0,8,-1,1,2},{10,0,0,6,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,4,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2},{10,0,0,7,0,0,-1,1,2}}, + {{4,0,0,7,0,4,-1,1,2},{4,0,0,12,17,0,-1,1,9},{4,0,0,10,0,0,-1,1,9},{4,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{4,0,0,7,0,0,-1,1,2}}, + {{4,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2}}, + {{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2}}, + {{4,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{4,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{4,0,0,12,17,0,-1,1,9},{4,0,0,7,0,0,-1,1,2},{4,0,0,10,0,0,-1,1,9},{4,0,0,10,0,0,-1,1,9}}, + {{4,0,0,10,0,0,-1,1,9},{4,0,0,12,17,0,-1,1,9},{4,0,0,12,17,0,-1,1,9},{4,0,0,12,17,0,-1,1,9},{4,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{4,0,0,10,0,0,-1,1,9},{4,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{4,0,0,10,0,0,-1,1,9},{4,0,0,10,0,0,-1,1,9},{4,0,0,12,17,0,-1,1,9},{4,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0}}, + {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{4,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{4,0,0,7,0,9,-1,1,2},{4,0,0,7,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{4,0,0,7,0,9,-1,1,2}}, + {{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,12,17,0,-1,1,9},{4,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{4,0,0,13,0,0,0,1,19},{4,0,0,13,0,0,1,1,19},{4,0,0,13,0,0,2,1,19},{4,0,0,13,0,0,3,1,19},{4,0,0,13,0,0,4,1,19},{4,0,0,13,0,0,5,1,19},{4,0,0,13,0,0,6,1,19},{4,0,0,13,0,0,7,1,19},{4,0,0,13,0,0,8,1,19},{4,0,0,13,0,0,9,1,19}}, + {{4,0,0,7,0,0,-1,1,2},{4,0,0,7,0,0,-1,1,2},{4,0,0,23,4,8,-1,1,21},{4,0,0,23,4,8,-1,1,21},{4,0,0,15,0,8,-1,1,2},{4,0,0,15,0,8,-1,1,2},{4,0,0,15,0,8,-1,1,2},{4,0,0,15,0,8,-1,1,2},{4,0,0,15,0,8,-1,1,2},{4,0,0,15,0,8,-1,1,21},{4,0,0,26,0,8,-1,1,2},{4,0,0,23,4,8,-1,1,22},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{103,0,0,2,0,12,-1,1,0},{16,0,0,12,17,0,-1,1,9},{16,0,0,12,17,0,-1,1,9},{16,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{16,0,0,7,0,0,-1,1,2}}, + {{16,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2}}, + {{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2}}, + {{16,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{16,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{16,0,0,10,0,0,-1,1,9},{16,0,0,10,0,0,-1,1,9}}, + {{16,0,0,10,0,0,-1,1,9},{16,0,0,12,17,0,-1,1,9},{16,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{16,0,0,12,17,0,-1,1,9},{16,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{16,0,0,12,17,0,-1,1,9},{16,0,0,12,17,0,-1,1,9},{16,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{103,0,0,2,0,12,-1,1,0},{16,0,0,12,17,2,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{16,0,0,7,0,9,-1,1,2},{16,0,0,7,0,9,-1,1,2},{16,0,0,7,0,9,-1,1,2},{16,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{16,0,0,7,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0}}, + {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{16,0,0,13,0,0,0,1,19},{16,0,0,13,0,0,1,1,19},{16,0,0,13,0,0,2,1,19},{16,0,0,13,0,0,3,1,19},{16,0,0,13,0,0,4,1,19},{16,0,0,13,0,0,5,1,19},{16,0,0,13,0,0,6,1,19},{16,0,0,13,0,0,7,1,19},{16,0,0,13,0,0,8,1,19},{16,0,0,13,0,0,9,1,19}}, + {{16,0,0,12,17,0,-1,1,9},{16,0,0,12,17,0,-1,1,9},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,7,0,0,-1,1,2},{16,0,0,12,17,2,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{103,0,0,2,0,12,-1,1,0},{15,0,0,12,17,0,-1,1,9},{15,0,0,12,17,0,-1,1,9},{15,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{15,0,0,7,0,0,-1,1,2}}, + {{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2}}, + {{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2}}, + {{15,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{15,0,0,12,17,0,-1,1,9},{15,0,0,7,0,0,-1,1,2},{15,0,0,10,0,0,-1,1,9},{15,0,0,10,0,0,-1,1,9}}, + {{15,0,0,10,0,0,-1,1,9},{15,0,0,12,17,0,-1,1,9},{15,0,0,12,17,0,-1,1,9},{15,0,0,12,17,0,-1,1,9},{15,0,0,12,17,0,-1,1,9},{15,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{15,0,0,12,17,0,-1,1,9},{15,0,0,12,17,0,-1,1,9},{15,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{15,0,0,10,0,0,-1,1,9},{15,0,0,10,0,0,-1,1,9},{15,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{15,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{15,0,0,7,0,0,-1,1,2},{15,0,0,7,0,0,-1,1,2},{15,0,0,12,17,0,-1,1,9},{15,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{15,0,0,13,0,0,0,1,19},{15,0,0,13,0,0,1,1,19},{15,0,0,13,0,0,2,1,19},{15,0,0,13,0,0,3,1,19},{15,0,0,13,0,0,4,1,19},{15,0,0,13,0,0,5,1,19},{15,0,0,13,0,0,6,1,19},{15,0,0,13,0,0,7,1,19},{15,0,0,13,0,0,8,1,19},{15,0,0,13,0,0,9,1,19}}, + {{15,0,0,21,0,8,-1,1,2},{15,0,0,23,4,8,-1,1,22},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{15,0,0,7,0,2,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{103,0,0,2,0,12,-1,1,0},{31,0,0,12,17,0,-1,1,9},{31,0,0,10,0,0,-1,1,9},{31,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{31,0,0,7,0,0,-1,1,2}}, + {{31,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2}}, + {{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2}}, + {{31,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{31,0,0,12,17,0,-1,1,9},{31,0,0,7,0,0,-1,1,2},{31,0,0,10,0,0,-1,1,9},{31,0,0,12,17,0,-1,1,9}}, + {{31,0,0,10,0,0,-1,1,9},{31,0,0,12,17,0,-1,1,9},{31,0,0,12,17,0,-1,1,9},{31,0,0,12,17,0,-1,1,9},{31,0,0,12,17,2,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{31,0,0,10,0,0,-1,1,9},{31,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{31,0,0,10,0,0,-1,1,9},{31,0,0,10,0,0,-1,1,9},{31,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{31,0,0,12,17,0,-1,1,9},{31,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{31,0,0,7,0,9,-1,1,2},{31,0,0,7,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{31,0,0,7,0,0,-1,1,2}}, + {{31,0,0,7,0,0,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,12,17,2,-1,1,9},{31,0,0,12,17,2,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{31,0,0,13,0,0,0,1,19},{31,0,0,13,0,0,1,1,19},{31,0,0,13,0,0,2,1,19},{31,0,0,13,0,0,3,1,19},{31,0,0,13,0,0,4,1,19},{31,0,0,13,0,0,5,1,19},{31,0,0,13,0,0,6,1,19},{31,0,0,13,0,0,7,1,19},{31,0,0,13,0,0,8,1,19},{31,0,0,13,0,0,9,1,19}}, + {{31,0,0,26,0,8,-1,1,2},{31,0,0,7,0,0,-1,1,2},{31,0,0,15,0,8,-1,1,2},{31,0,0,15,0,8,-1,1,2},{31,0,0,15,0,8,-1,1,2},{31,0,0,15,0,8,-1,1,2},{31,0,0,15,0,8,-1,1,2},{31,0,0,15,0,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{35,0,0,12,17,0,-1,1,9},{35,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2}}, + {{35,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{35,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2}}, + {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2}}, + {{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{35,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{35,0,0,10,0,0,-1,1,9},{35,0,0,10,0,0,-1,1,9}}, + {{35,0,0,12,17,0,-1,1,9},{35,0,0,10,0,0,-1,1,9},{35,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{35,0,0,10,0,0,-1,1,9},{35,0,0,10,0,0,-1,1,9},{35,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{35,0,0,10,0,0,-1,1,9},{35,0,0,10,0,0,-1,1,9},{35,0,0,10,0,0,-1,1,9},{35,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{35,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{35,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{35,0,0,13,0,0,0,1,19},{35,0,0,13,0,0,1,1,19},{35,0,0,13,0,0,2,1,19},{35,0,0,13,0,0,3,1,19},{35,0,0,13,0,0,4,1,19},{35,0,0,13,0,0,5,1,19},{35,0,0,13,0,0,6,1,19},{35,0,0,13,0,0,7,1,19},{35,0,0,13,0,0,8,1,19},{35,0,0,13,0,0,9,1,19}}, + {{35,0,0,15,0,8,-1,1,2},{35,0,0,15,0,8,-1,1,2},{35,0,0,15,0,8,-1,1,2},{35,0,0,26,10,8,-1,1,2},{35,0,0,26,10,8,-1,1,2},{35,0,0,26,10,8,-1,1,2},{35,0,0,26,10,8,-1,1,2},{35,0,0,26,10,8,-1,1,2},{35,0,0,26,10,8,-1,1,2},{35,0,0,23,4,8,-1,1,22},{35,0,0,26,10,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{36,0,0,12,17,4,-1,1,9},{36,0,0,10,0,0,-1,1,9},{36,0,0,10,0,0,-1,1,9},{36,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2}}, + {{36,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2}}, + {{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2}}, + {{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,4,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{36,0,0,7,0,0,-1,1,2},{36,0,0,12,17,0,-1,1,9},{36,0,0,12,17,0,-1,1,9}}, + {{36,0,0,12,17,0,-1,1,9},{36,0,0,10,0,0,-1,1,9},{36,0,0,10,0,0,-1,1,9},{36,0,0,10,0,0,-1,1,9},{36,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{36,0,0,12,17,0,-1,1,9},{36,0,0,12,17,0,-1,1,9},{36,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{36,0,0,12,17,0,-1,1,9},{36,0,0,12,17,0,-1,1,9},{36,0,0,12,17,0,-1,1,9},{36,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{36,0,0,12,17,0,-1,1,9},{36,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{36,0,0,7,0,4,-1,1,2},{36,0,0,7,0,4,-1,1,2},{36,0,0,7,0,2,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{36,0,0,7,0,0,-1,1,2},{36,0,0,7,0,0,-1,1,2},{36,0,0,12,17,2,-1,1,9},{36,0,0,12,17,2,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{36,0,0,13,0,0,0,1,19},{36,0,0,13,0,0,1,1,19},{36,0,0,13,0,0,2,1,19},{36,0,0,13,0,0,3,1,19},{36,0,0,13,0,0,4,1,19},{36,0,0,13,0,0,5,1,19},{36,0,0,13,0,0,6,1,19},{36,0,0,13,0,0,7,1,19},{36,0,0,13,0,0,8,1,19},{36,0,0,13,0,0,9,1,19}}, + {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{36,0,0,15,10,8,-1,1,2},{36,0,0,15,10,8,-1,1,2},{36,0,0,15,10,8,-1,1,2},{36,0,0,15,10,8,-1,1,2},{36,0,0,15,10,8,-1,1,2},{36,0,0,15,10,8,-1,1,2},{36,0,0,15,10,8,-1,1,2},{36,0,0,26,0,8,-1,1,2}}, + {{103,0,0,2,0,12,-1,1,0},{21,0,0,12,17,4,-1,1,9},{21,0,0,10,0,0,-1,1,9},{21,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2}}, + {{21,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2}}, + {{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2}}, + {{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{21,0,0,12,17,0,-1,1,9},{21,0,0,7,0,0,-1,1,2},{21,0,0,10,0,0,-1,1,9},{21,0,0,12,0,0,-1,1,9}}, + {{21,0,0,10,0,0,-1,1,9},{21,0,0,10,0,0,-1,1,9},{21,0,0,10,0,0,-1,1,9},{21,0,0,10,0,0,-1,1,9},{21,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{21,0,0,12,0,0,-1,1,9},{21,0,0,10,0,0,-1,1,9},{21,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{21,0,0,10,0,0,-1,1,9},{21,0,0,10,0,0,-1,1,9},{21,0,0,12,17,0,-1,1,9},{21,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{21,0,0,10,0,0,-1,1,9},{21,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{21,0,0,7,0,4,-1,1,2},{103,0,0,2,0,12,-1,1,0}}, + {{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{21,0,0,12,17,0,-1,1,9},{21,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{21,0,0,13,0,0,0,1,19},{21,0,0,13,0,0,1,1,19},{21,0,0,13,0,0,2,1,19},{21,0,0,13,0,0,3,1,19},{21,0,0,13,0,0,4,1,19},{21,0,0,13,0,0,5,1,19},{21,0,0,13,0,0,6,1,19},{21,0,0,13,0,0,7,1,19},{21,0,0,13,0,0,8,1,19},{21,0,0,13,0,0,9,1,19}}, + {{103,0,0,2,0,12,-1,1,0},{21,0,0,7,0,0,-1,1,2},{21,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{103,0,0,2,0,12,-1,1,0},{26,0,0,12,17,4,-1,1,9},{26,0,0,10,0,0,-1,1,9},{26,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2}}, + {{26,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2}}, + {{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2}}, + {{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{26,0,0,7,0,0,-1,1,2},{26,0,0,10,0,0,-1,1,9},{26,0,0,10,0,0,-1,1,9}}, + {{26,0,0,10,0,0,-1,1,9},{26,0,0,12,17,0,-1,1,9},{26,0,0,12,17,0,-1,1,9},{26,0,0,12,17,0,-1,1,9},{26,0,0,12,17,2,-1,1,9},{103,0,0,2,0,12,-1,1,0},{26,0,0,10,0,0,-1,1,9},{26,0,0,10,0,0,-1,1,9},{26,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{26,0,0,10,0,0,-1,1,9},{26,0,0,10,0,0,-1,1,9},{26,0,0,10,0,0,-1,1,9},{26,0,0,12,17,0,-1,1,9},{26,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0}}, + {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{26,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{26,0,0,7,0,4,-1,1,2}}, + {{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,12,17,2,-1,1,9},{26,0,0,12,17,2,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{26,0,0,13,0,0,0,1,19},{26,0,0,13,0,0,1,1,19},{26,0,0,13,0,0,2,1,19},{26,0,0,13,0,0,3,1,19},{26,0,0,13,0,0,4,1,19},{26,0,0,13,0,0,5,1,19},{26,0,0,13,0,0,6,1,19},{26,0,0,13,0,0,7,1,19},{26,0,0,13,0,0,8,1,19},{26,0,0,13,0,0,9,1,19}}, + {{26,0,0,15,0,8,-1,1,2},{26,0,0,15,0,8,-1,1,2},{26,0,0,15,0,8,-1,1,2},{26,0,0,15,0,8,-1,1,2},{26,0,0,15,0,8,-1,1,2},{26,0,0,15,0,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{26,0,0,26,0,8,-1,1,21},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2},{26,0,0,7,0,0,-1,1,2}}, + {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{33,0,0,10,0,0,-1,1,9},{33,0,0,10,0,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,3,-1,1,2}}, + {{33,0,0,7,0,3,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2}}, + {{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,3,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2}}, + {{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{33,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{33,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{33,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{33,0,0,10,0,0,-1,1,9}}, + {{33,0,0,10,0,0,-1,1,9},{33,0,0,10,0,0,-1,1,9},{33,0,0,12,17,0,-1,1,9},{33,0,0,12,17,0,-1,1,9},{33,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{33,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{33,0,0,10,0,0,-1,1,9},{33,0,0,10,0,0,-1,1,9},{33,0,0,10,0,0,-1,1,9},{33,0,0,10,0,0,-1,1,9},{33,0,0,10,0,0,-1,1,9},{33,0,0,10,0,0,-1,1,9},{33,0,0,10,0,0,-1,1,9},{33,0,0,10,0,3,-1,1,9}}, + {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{33,0,0,13,0,4,0,1,19},{33,0,0,13,0,4,1,1,19},{33,0,0,13,0,4,2,1,19},{33,0,0,13,0,4,3,1,19},{33,0,0,13,0,4,4,1,19},{33,0,0,13,0,4,5,1,19},{33,0,0,13,0,4,6,1,19},{33,0,0,13,0,4,7,1,19},{33,0,0,13,0,4,8,1,19},{33,0,0,13,0,4,9,1,19}}, + {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{33,0,0,10,0,0,-1,1,9},{33,0,0,10,0,3,-1,1,9},{33,0,0,21,0,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{103,0,0,2,0,12,-1,1,0},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24}}, + {{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24}}, + {{38,0,0,7,0,0,-1,1,24},{38,0,0,12,17,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,9,-1,1,24},{38,0,0,12,17,0,-1,1,24},{38,0,0,12,17,0,-1,1,24},{38,0,0,12,17,0,-1,1,24},{38,0,0,12,17,0,-1,1,24},{38,0,0,12,17,0,-1,1,24},{38,0,0,12,17,0,-1,1,24},{38,0,0,12,17,0,-1,1,24},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{0,0,0,23,4,8,-1,1,22}}, + {{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,7,0,0,-1,1,24},{38,0,0,6,0,0,-1,1,24},{38,0,0,12,17,0,-1,1,24},{38,0,0,12,17,0,-1,1,24},{38,0,0,12,17,0,-1,1,24},{38,0,0,12,17,0,-1,1,24},{38,0,0,12,17,0,-1,1,24},{38,0,0,12,17,0,-1,1,24},{38,0,0,12,17,0,-1,1,24},{38,0,0,12,17,0,-1,1,24},{38,0,0,21,0,8,-1,1,2}}, + {{38,0,0,13,0,0,0,1,19},{38,0,0,13,0,0,1,1,19},{38,0,0,13,0,0,2,1,19},{38,0,0,13,0,0,3,1,19},{38,0,0,13,0,0,4,1,19},{38,0,0,13,0,0,5,1,19},{38,0,0,13,0,0,6,1,19},{38,0,0,13,0,0,7,1,19},{38,0,0,13,0,0,8,1,19},{38,0,0,13,0,0,9,1,19},{38,0,0,21,0,8,-1,1,4},{38,0,0,21,0,8,-1,1,4},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{103,0,0,2,0,12,-1,1,0},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{103,0,0,2,0,12,-1,1,0},{24,0,0,7,0,0,-1,1,24},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{103,0,0,2,0,12,-1,1,0},{24,0,0,7,0,0,-1,1,24},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{24,0,0,7,0,0,-1,1,24},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{103,0,0,2,0,12,-1,1,0},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24}}, + {{103,0,0,2,0,12,-1,1,0},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{103,0,0,2,0,12,-1,1,0},{24,0,0,7,0,0,-1,1,24},{103,0,0,2,0,12,-1,1,0},{24,0,0,7,0,0,-1,1,24},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{103,0,0,2,0,12,-1,1,0},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24}}, + {{24,0,0,7,0,0,-1,1,24},{24,0,0,12,17,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,9,-1,1,24},{24,0,0,12,17,0,-1,1,24},{24,0,0,12,17,0,-1,1,24},{24,0,0,12,17,0,-1,1,24},{24,0,0,12,17,0,-1,1,24},{24,0,0,12,17,0,-1,1,24},{24,0,0,12,17,0,-1,1,24},{103,0,0,2,0,12,-1,1,0},{24,0,0,12,17,0,-1,1,24},{24,0,0,12,17,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24},{103,0,0,2,0,12,-1,1,0},{24,0,0,6,0,0,-1,1,24},{103,0,0,2,0,12,-1,1,0},{24,0,0,12,17,0,-1,1,24},{24,0,0,12,17,0,-1,1,24},{24,0,0,12,17,0,-1,1,24},{24,0,0,12,17,0,-1,1,24},{24,0,0,12,17,0,-1,1,24},{24,0,0,12,17,0,-1,1,24},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{24,0,0,13,0,0,0,1,19},{24,0,0,13,0,0,1,1,19},{24,0,0,13,0,0,2,1,19},{24,0,0,13,0,0,3,1,19},{24,0,0,13,0,0,4,1,19},{24,0,0,13,0,0,5,1,19},{24,0,0,13,0,0,6,1,19},{24,0,0,13,0,0,7,1,19},{24,0,0,13,0,0,8,1,19},{24,0,0,13,0,0,9,1,19},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{24,0,0,7,0,9,-1,1,24},{24,0,0,7,0,9,-1,1,24},{24,0,0,7,0,0,-1,1,24},{24,0,0,7,0,0,-1,1,24}}, + {{39,0,0,7,0,0,-1,1,2},{39,0,0,26,0,8,-1,1,5},{39,0,0,26,0,8,-1,1,5},{39,0,0,26,0,8,-1,1,5},{39,0,0,21,0,8,-1,1,5},{39,0,0,21,0,8,-1,1,2},{39,0,0,21,0,8,-1,1,5},{39,0,0,21,0,8,-1,1,5},{39,0,0,21,0,8,-1,1,12},{39,0,0,21,0,8,-1,1,5},{39,0,0,21,0,8,-1,1,5},{39,0,0,21,0,1,-1,1,4},{39,0,0,21,0,9,-1,1,12},{39,0,0,21,0,8,-1,1,11},{39,0,0,21,0,8,-1,1,11},{39,0,0,21,0,8,-1,1,11}}, + {{39,0,0,21,0,8,-1,1,11},{39,0,0,21,0,8,-1,1,11},{39,0,0,21,0,8,-1,1,12},{39,0,0,26,0,8,-1,1,2},{39,0,0,21,0,8,-1,1,11},{39,0,0,26,0,8,-1,1,2},{39,0,0,26,0,8,-1,1,2},{39,0,0,26,0,8,-1,1,2},{39,0,0,12,17,3,-1,1,9},{39,0,0,12,17,3,-1,1,9},{39,0,0,26,0,8,-1,1,2},{39,0,0,26,0,8,-1,1,2},{39,0,0,26,0,8,-1,1,2},{39,0,0,26,0,8,-1,1,2},{39,0,0,26,0,8,-1,1,2},{39,0,0,26,0,8,-1,1,2}}, + {{39,0,0,13,0,0,0,1,19},{39,0,0,13,0,0,1,1,19},{39,0,0,13,0,0,2,1,19},{39,0,0,13,0,0,3,1,19},{39,0,0,13,0,0,4,1,19},{39,0,0,13,0,0,5,1,19},{39,0,0,13,0,0,6,1,19},{39,0,0,13,0,0,7,1,19},{39,0,0,13,0,0,8,1,19},{39,0,0,13,0,0,9,1,19},{39,0,0,15,0,8,-1,1,2},{39,0,0,15,0,8,-1,1,2},{39,0,0,15,0,8,-1,1,2},{39,0,0,15,0,8,-1,1,2},{39,0,0,15,0,8,-1,1,2},{39,0,0,15,0,8,-1,1,2}}, + {{39,0,0,15,0,8,-1,1,2},{39,0,0,15,0,8,-1,1,2},{39,0,0,15,0,8,-1,1,2},{39,0,0,15,0,8,-1,1,2},{39,0,0,26,0,8,-1,1,4},{39,0,0,12,17,0,-1,1,9},{39,0,0,26,0,8,-1,1,2},{39,0,0,12,17,0,-1,1,9},{39,0,0,26,0,8,-1,1,2},{39,0,0,12,17,2,-1,1,9},{39,1,0,22,10,8,-1,1,20},{39,2,0,18,10,8,-1,1,8},{39,1,0,22,10,8,-1,1,20},{39,2,0,18,10,8,-1,1,8},{39,0,0,10,0,0,-1,1,9},{39,0,0,10,0,0,-1,1,9}}, + {{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,9,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,9,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2}}, + {{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,9,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,9,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,9,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2}}, + {{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,9,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{103,0,0,2,0,12,-1,1,0},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,9,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,9,-1,1,9},{39,0,0,12,17,9,-1,1,9},{39,0,0,12,17,11,-1,1,9},{39,0,0,12,17,9,-1,1,9},{39,0,0,12,17,11,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,10,0,0,-1,1,4}}, + {{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,9,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,21,0,8,-1,1,4},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,7,0,0,-1,1,2},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9}}, + {{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,9,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,9,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9}}, + {{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,9,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,9,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,9,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9}}, + {{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,9,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{39,0,0,12,17,0,-1,1,9},{103,0,0,2,0,12,-1,1,0},{39,0,0,26,0,8,-1,1,4},{39,0,0,26,0,8,-1,1,4}}, + {{39,0,0,26,0,8,-1,1,2},{39,0,0,26,0,8,-1,1,2},{39,0,0,26,0,8,-1,1,2},{39,0,0,26,0,8,-1,1,2},{39,0,0,26,0,8,-1,1,2},{39,0,0,26,0,8,-1,1,2},{39,0,0,12,17,0,-1,1,9},{39,0,0,26,0,8,-1,1,2},{39,0,0,26,0,8,-1,1,2},{39,0,0,26,0,8,-1,1,2},{39,0,0,26,0,8,-1,1,2},{39,0,0,26,0,8,-1,1,2},{39,0,0,26,0,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{39,0,0,26,0,8,-1,1,2},{39,0,0,26,0,8,-1,1,2}}, + {{39,0,0,21,0,8,-1,1,5},{39,0,0,21,0,8,-1,1,5},{39,0,0,21,0,8,-1,1,4},{39,0,0,21,0,8,-1,1,5},{39,0,0,21,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{39,0,0,21,0,8,-1,1,12},{39,0,0,21,0,8,-1,1,12},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24}}, + {{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,12,17,0,-1,1,24}}, + {{28,0,0,12,17,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,7,0,0,-1,1,24}}, + {{28,0,0,13,0,0,0,1,19},{28,0,0,13,0,0,1,1,19},{28,0,0,13,0,0,2,1,19},{28,0,0,13,0,0,3,1,19},{28,0,0,13,0,0,4,1,19},{28,0,0,13,0,0,5,1,19},{28,0,0,13,0,0,6,1,19},{28,0,0,13,0,0,7,1,19},{28,0,0,13,0,0,8,1,19},{28,0,0,13,0,0,9,1,19},{28,0,0,21,0,8,-1,1,4},{28,0,0,21,0,8,-1,1,4},{28,0,0,21,0,8,-1,1,2},{28,0,0,21,0,8,-1,1,2},{28,0,0,21,0,8,-1,1,2},{28,0,0,21,0,8,-1,1,2}}, + {{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,12,17,0,-1,1,24}}, + {{28,0,0,12,17,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24}}, + {{28,0,0,7,0,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24}}, + {{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24}}, + {{28,0,0,13,0,0,0,1,19},{28,0,0,13,0,0,1,1,19},{28,0,0,13,0,0,2,1,19},{28,0,0,13,0,0,3,1,19},{28,0,0,13,0,0,4,1,19},{28,0,0,13,0,0,5,1,19},{28,0,0,13,0,0,6,1,19},{28,0,0,13,0,0,7,1,19},{28,0,0,13,0,0,8,1,19},{28,0,0,13,0,0,9,1,19},{28,0,0,10,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,26,0,8,-1,1,24},{28,0,0,26,0,8,-1,1,24}}, + {{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2}}, + {{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2},{12,0,0,9,0,4,-1,1,2},{103,0,0,2,0,12,-1,1,0},{12,0,0,9,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{12,0,0,9,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2}}, + {{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,4,-1,1,2},{12,0,0,7,0,4,-1,1,2},{12,0,0,7,0,4,-1,1,2},{12,0,0,7,0,4,-1,1,2},{12,0,0,7,0,4,-1,1,2},{12,0,0,7,0,4,-1,1,2},{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2},{0,0,0,21,0,8,-1,1,2},{12,0,0,6,0,9,-1,1,2},{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2},{12,0,0,7,0,0,-1,1,2}}, + {{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33}}, + {{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,10,-1,0,33}}, + {{18,0,0,7,0,10,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35}}, + {{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35}}, + {{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34}}, + {{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34}}, + {{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2}}, + {{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{11,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{11,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0}}, + {{11,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2}}, + {{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2}}, + {{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{11,0,0,12,17,0,-1,1,9},{11,0,0,12,17,0,-1,1,9},{11,0,0,12,17,0,-1,1,9}}, + {{11,0,0,21,0,8,-1,1,2},{11,0,0,21,0,8,-1,1,4},{11,0,0,21,0,8,-1,1,2},{11,0,0,21,0,8,-1,1,2},{11,0,0,21,0,8,-1,1,2},{11,0,0,21,0,8,-1,1,2},{11,0,0,21,0,8,-1,1,2},{11,0,0,21,0,8,-1,1,2},{11,0,0,21,0,8,-1,1,2},{11,0,0,15,0,4,1,1,2},{11,0,0,15,0,4,2,1,2},{11,0,0,15,0,4,3,1,2},{11,0,0,15,0,4,4,1,2},{11,0,0,15,0,4,5,1,2},{11,0,0,15,0,4,6,1,2},{11,0,0,15,0,4,7,1,2}}, + {{11,0,0,15,0,4,8,1,2},{11,0,0,15,0,4,9,1,2},{11,0,0,15,0,8,-1,1,2},{11,0,0,15,0,8,-1,1,2},{11,0,0,15,0,8,-1,1,2},{11,0,0,15,0,8,-1,1,2},{11,0,0,15,0,8,-1,1,2},{11,0,0,15,0,8,-1,1,2},{11,0,0,15,0,8,-1,1,2},{11,0,0,15,0,8,-1,1,2},{11,0,0,15,0,8,-1,1,2},{11,0,0,15,0,8,-1,1,2},{11,0,0,15,0,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{11,0,0,26,10,8,-1,1,2},{11,0,0,26,10,8,-1,1,2},{11,0,0,26,10,8,-1,1,2},{11,0,0,26,10,8,-1,1,2},{11,0,0,26,10,8,-1,1,2},{11,0,0,26,10,8,-1,1,2},{11,0,0,26,10,8,-1,1,2},{11,0,0,26,10,8,-1,1,2},{11,0,0,26,10,8,-1,1,2},{11,0,0,26,10,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2}}, + {{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2},{6,0,0,9,0,6,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{40,0,0,17,10,8,-1,1,4},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2}}, + {{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2}}, + {{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,21,0,8,-1,0,2},{40,0,0,21,0,8,-1,0,2},{40,0,0,7,0,5,-1,0,2}}, + {{29,0,0,29,9,8,-1,1,4},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2}}, + {{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,0,0,7,0,7,-1,1,2},{29,1,0,22,10,8,-1,1,20},{29,2,0,18,10,8,-1,1,8},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2}}, + {{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{0,0,0,21,0,8,-1,1,4},{0,0,0,21,0,8,-1,1,4},{0,0,0,21,0,8,-1,1,4},{32,0,0,14,0,7,-1,1,2},{32,0,0,14,0,7,-1,1,2}}, + {{32,0,0,14,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{32,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{42,0,0,7,0,7,-1,1,2},{42,0,0,7,0,7,-1,1,2},{42,0,0,7,0,7,-1,1,2},{42,0,0,7,0,7,-1,1,2},{42,0,0,7,0,7,-1,1,2},{42,0,0,7,0,7,-1,1,2},{42,0,0,7,0,7,-1,1,2},{42,0,0,7,0,7,-1,1,2},{42,0,0,7,0,7,-1,1,2},{42,0,0,7,0,7,-1,1,2},{42,0,0,7,0,7,-1,1,2},{42,0,0,7,0,7,-1,1,2},{42,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{42,0,0,7,0,7,-1,1,2},{42,0,0,7,0,7,-1,1,2}}, + {{42,0,0,7,0,7,-1,1,2},{42,0,0,7,0,7,-1,1,2},{42,0,0,12,17,7,-1,1,9},{42,0,0,12,17,7,-1,1,9},{42,0,0,12,17,7,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{43,0,0,7,0,7,-1,1,2},{43,0,0,7,0,7,-1,1,2},{43,0,0,7,0,7,-1,1,2},{43,0,0,7,0,7,-1,1,2},{43,0,0,7,0,7,-1,1,2},{43,0,0,7,0,7,-1,1,2},{43,0,0,7,0,7,-1,1,2},{43,0,0,7,0,7,-1,1,2},{43,0,0,7,0,7,-1,1,2},{43,0,0,7,0,7,-1,1,2},{43,0,0,7,0,7,-1,1,2},{43,0,0,7,0,7,-1,1,2},{43,0,0,7,0,7,-1,1,2},{43,0,0,7,0,7,-1,1,2},{43,0,0,7,0,7,-1,1,2},{43,0,0,7,0,7,-1,1,2}}, + {{43,0,0,7,0,7,-1,1,2},{43,0,0,7,0,7,-1,1,2},{43,0,0,12,17,7,-1,1,9},{43,0,0,12,17,7,-1,1,9},{43,0,0,12,17,7,-1,1,9},{0,0,0,21,0,8,-1,1,4},{0,0,0,21,0,8,-1,1,4},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{44,0,0,7,0,7,-1,1,2},{44,0,0,7,0,7,-1,1,2},{44,0,0,7,0,7,-1,1,2},{44,0,0,7,0,7,-1,1,2},{44,0,0,7,0,7,-1,1,2},{44,0,0,7,0,7,-1,1,2},{44,0,0,7,0,7,-1,1,2},{44,0,0,7,0,7,-1,1,2},{44,0,0,7,0,7,-1,1,2},{44,0,0,7,0,7,-1,1,2},{44,0,0,7,0,7,-1,1,2},{44,0,0,7,0,7,-1,1,2},{44,0,0,7,0,7,-1,1,2},{44,0,0,7,0,7,-1,1,2},{44,0,0,7,0,7,-1,1,2},{44,0,0,7,0,7,-1,1,2}}, + {{44,0,0,7,0,7,-1,1,2},{44,0,0,7,0,7,-1,1,2},{44,0,0,12,17,7,-1,1,9},{44,0,0,12,17,7,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{45,0,0,7,0,7,-1,1,2},{45,0,0,7,0,7,-1,1,2},{45,0,0,7,0,7,-1,1,2},{45,0,0,7,0,7,-1,1,2},{45,0,0,7,0,7,-1,1,2},{45,0,0,7,0,7,-1,1,2},{45,0,0,7,0,7,-1,1,2},{45,0,0,7,0,7,-1,1,2},{45,0,0,7,0,7,-1,1,2},{45,0,0,7,0,7,-1,1,2},{45,0,0,7,0,7,-1,1,2},{45,0,0,7,0,7,-1,1,2},{45,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{45,0,0,7,0,7,-1,1,2},{45,0,0,7,0,7,-1,1,2}}, + {{45,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{45,0,0,12,17,7,-1,1,9},{45,0,0,12,17,7,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24}}, + {{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,11,-1,1,24},{23,0,0,7,0,11,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,4,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24}}, + {{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,7,0,0,-1,1,24},{23,0,0,12,17,10,-1,1,24},{23,0,0,12,17,10,-1,1,24},{23,0,0,10,0,0,-1,1,24},{23,0,0,12,17,0,-1,1,24},{23,0,0,12,17,0,-1,1,24},{23,0,0,12,17,0,-1,1,24},{23,0,0,12,17,0,-1,1,24},{23,0,0,12,17,0,-1,1,24},{23,0,0,12,17,0,-1,1,24},{23,0,0,12,17,0,-1,1,24},{23,0,0,10,0,0,-1,1,24},{23,0,0,10,0,0,-1,1,24}}, + {{23,0,0,10,0,0,-1,1,24},{23,0,0,10,0,0,-1,1,24},{23,0,0,10,0,0,-1,1,24},{23,0,0,10,0,0,-1,1,24},{23,0,0,10,0,0,-1,1,24},{23,0,0,10,0,0,-1,1,24},{23,0,0,12,17,0,-1,1,24},{23,0,0,10,0,0,-1,1,24},{23,0,0,10,0,0,-1,1,24},{23,0,0,12,17,0,-1,1,24},{23,0,0,12,17,0,-1,1,24},{23,0,0,12,17,3,-1,1,24},{23,0,0,12,17,3,-1,1,24},{23,0,0,12,17,3,-1,1,24},{23,0,0,12,17,3,-1,1,24},{23,0,0,12,17,3,-1,1,24}}, + {{23,0,0,12,17,3,-1,1,24},{23,0,0,12,17,4,-1,1,24},{23,0,0,12,17,0,-1,1,24},{23,0,0,12,17,4,-1,1,24},{23,0,0,21,0,8,-1,1,4},{23,0,0,21,0,8,-1,1,4},{23,0,0,21,0,8,-1,1,18},{23,0,0,6,0,0,-1,1,24},{23,0,0,21,0,8,-1,1,4},{23,0,0,21,0,8,-1,1,2},{23,0,0,21,0,8,-1,1,4},{23,0,0,23,4,8,-1,1,22},{23,0,0,7,0,0,-1,1,24},{23,0,0,12,17,4,-1,1,24},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{23,0,0,13,0,0,0,1,19},{23,0,0,13,0,0,1,1,19},{23,0,0,13,0,0,2,1,19},{23,0,0,13,0,0,3,1,19},{23,0,0,13,0,0,4,1,19},{23,0,0,13,0,0,5,1,19},{23,0,0,13,0,0,6,1,19},{23,0,0,13,0,0,7,1,19},{23,0,0,13,0,0,8,1,19},{23,0,0,13,0,0,9,1,19},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{23,0,0,15,10,8,-1,1,2},{23,0,0,15,10,8,-1,1,2},{23,0,0,15,10,8,-1,1,2},{23,0,0,15,10,8,-1,1,2},{23,0,0,15,10,8,-1,1,2},{23,0,0,15,10,8,-1,1,2},{23,0,0,15,10,8,-1,1,2},{23,0,0,15,10,8,-1,1,2},{23,0,0,15,10,8,-1,1,2},{23,0,0,15,10,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{27,0,0,21,10,8,-1,1,2},{27,0,0,21,10,8,-1,1,2},{0,0,0,21,10,8,-1,1,11},{0,0,0,21,10,8,-1,1,11},{27,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,4},{27,0,0,17,10,8,-1,1,5},{27,0,0,21,10,8,-1,1,2},{27,0,0,21,10,8,-1,1,11},{27,0,0,21,10,8,-1,1,11},{27,0,0,21,10,8,-1,1,2},{27,0,0,12,17,10,-1,1,9},{27,0,0,12,17,10,-1,1,9},{27,0,0,12,17,10,-1,1,9},{27,0,0,1,18,10,-1,1,12},{103,0,0,2,0,12,-1,1,0}}, + {{27,0,0,13,0,5,0,1,19},{27,0,0,13,0,5,1,1,19},{27,0,0,13,0,5,2,1,19},{27,0,0,13,0,5,3,1,19},{27,0,0,13,0,5,4,1,19},{27,0,0,13,0,5,5,1,19},{27,0,0,13,0,5,6,1,19},{27,0,0,13,0,5,7,1,19},{27,0,0,13,0,5,8,1,19},{27,0,0,13,0,5,9,1,19},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2}}, + {{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,6,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2}}, + {{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,7,0,5,-1,1,2},{27,0,0,12,17,5,-1,1,9},{27,0,0,7,0,5,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{40,0,0,7,0,5,-1,0,2},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2}}, + {{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{48,0,0,7,0,6,-1,1,2},{103,0,0,2,0,12,-1,1,0}}, + {{48,0,0,12,17,6,-1,1,9},{48,0,0,12,17,6,-1,1,9},{48,0,0,12,17,6,-1,1,9},{48,0,0,10,0,6,-1,1,9},{48,0,0,10,0,6,-1,1,9},{48,0,0,10,0,6,-1,1,9},{48,0,0,10,0,6,-1,1,9},{48,0,0,12,17,6,-1,1,9},{48,0,0,12,17,6,-1,1,9},{48,0,0,10,0,6,-1,1,9},{48,0,0,10,0,6,-1,1,9},{48,0,0,10,0,6,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{48,0,0,10,0,6,-1,1,9},{48,0,0,10,0,6,-1,1,9},{48,0,0,12,17,6,-1,1,9},{48,0,0,10,0,6,-1,1,9},{48,0,0,10,0,6,-1,1,9},{48,0,0,10,0,6,-1,1,9},{48,0,0,10,0,6,-1,1,9},{48,0,0,10,0,6,-1,1,9},{48,0,0,10,0,6,-1,1,9},{48,0,0,12,17,6,-1,1,9},{48,0,0,12,17,6,-1,1,9},{48,0,0,12,17,6,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{48,0,0,26,10,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{48,0,0,21,10,8,-1,1,11},{48,0,0,21,10,8,-1,1,11},{48,0,0,13,0,6,0,1,19},{48,0,0,13,0,6,1,1,19},{48,0,0,13,0,6,2,1,19},{48,0,0,13,0,6,3,1,19},{48,0,0,13,0,6,4,1,19},{48,0,0,13,0,6,5,1,19},{48,0,0,13,0,6,6,1,19},{48,0,0,13,0,6,7,1,19},{48,0,0,13,0,6,8,1,19},{48,0,0,13,0,6,9,1,19}}, + {{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24}}, + {{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{52,0,0,7,0,6,-1,1,24},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24}}, + {{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{59,0,0,7,0,6,-1,1,24},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{59,0,0,13,0,6,0,1,19},{59,0,0,13,0,6,1,1,19},{59,0,0,13,0,6,2,1,19},{59,0,0,13,0,6,3,1,19},{59,0,0,13,0,6,4,1,19},{59,0,0,13,0,6,5,1,19},{59,0,0,13,0,6,6,1,19},{59,0,0,13,0,6,7,1,19},{59,0,0,13,0,6,8,1,19},{59,0,0,13,0,6,9,1,19},{59,0,0,15,0,6,1,1,24},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{59,0,0,26,10,8,-1,1,24},{59,0,0,26,10,8,-1,1,24}}, + {{23,0,0,26,10,8,-1,1,2},{23,0,0,26,10,8,-1,1,2},{23,0,0,26,10,8,-1,1,2},{23,0,0,26,10,8,-1,1,2},{23,0,0,26,10,8,-1,1,2},{23,0,0,26,10,8,-1,1,2},{23,0,0,26,10,8,-1,1,2},{23,0,0,26,10,8,-1,1,2},{23,0,0,26,10,8,-1,1,2},{23,0,0,26,10,8,-1,1,2},{23,0,0,26,10,8,-1,1,2},{23,0,0,26,10,8,-1,1,2},{23,0,0,26,10,8,-1,1,2},{23,0,0,26,10,8,-1,1,2},{23,0,0,26,10,8,-1,1,2},{23,0,0,26,10,8,-1,1,2}}, + {{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2}}, + {{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,7,0,7,-1,1,2},{55,0,0,12,17,7,-1,1,9},{55,0,0,12,17,7,-1,1,9},{55,0,0,10,0,7,-1,1,9},{55,0,0,10,0,7,-1,1,9},{55,0,0,12,17,7,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{55,0,0,21,0,8,-1,1,2},{55,0,0,21,0,8,-1,1,2}}, + {{106,0,0,7,0,6,-1,1,24},{106,0,0,7,0,6,-1,1,24},{106,0,0,7,0,6,-1,1,24},{106,0,0,7,0,6,-1,1,24},{106,0,0,7,0,6,-1,1,24},{106,0,0,7,0,6,-1,1,24},{106,0,0,7,0,6,-1,1,24},{106,0,0,7,0,6,-1,1,24},{106,0,0,7,0,6,-1,1,24},{106,0,0,7,0,6,-1,1,24},{106,0,0,7,0,6,-1,1,24},{106,0,0,7,0,6,-1,1,24},{106,0,0,7,0,6,-1,1,24},{106,0,0,7,0,6,-1,1,24},{106,0,0,7,0,6,-1,1,24},{106,0,0,7,0,6,-1,1,24}}, + {{106,0,0,7,0,6,-1,1,24},{106,0,0,7,0,6,-1,1,24},{106,0,0,7,0,6,-1,1,24},{106,0,0,7,0,6,-1,1,24},{106,0,0,7,0,6,-1,1,24},{106,0,0,10,0,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,10,0,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{103,0,0,2,0,12,-1,1,0}}, + {{106,0,0,12,17,6,-1,1,24},{106,0,0,10,0,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,10,0,6,-1,1,24},{106,0,0,10,0,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,10,0,6,-1,1,24},{106,0,0,10,0,6,-1,1,24},{106,0,0,10,0,6,-1,1,24}}, + {{106,0,0,10,0,6,-1,1,24},{106,0,0,10,0,6,-1,1,24},{106,0,0,10,0,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{106,0,0,12,17,6,-1,1,24},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{106,0,0,12,17,6,-1,1,9}}, + {{106,0,0,13,0,6,0,1,19},{106,0,0,13,0,6,1,1,19},{106,0,0,13,0,6,2,1,19},{106,0,0,13,0,6,3,1,19},{106,0,0,13,0,6,4,1,19},{106,0,0,13,0,6,5,1,19},{106,0,0,13,0,6,6,1,19},{106,0,0,13,0,6,7,1,19},{106,0,0,13,0,6,8,1,19},{106,0,0,13,0,6,9,1,19},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{106,0,0,21,0,8,-1,1,24},{106,0,0,21,0,8,-1,1,24},{106,0,0,21,0,8,-1,1,24},{106,0,0,21,0,8,-1,1,24},{106,0,0,21,0,8,-1,1,24},{106,0,0,21,0,8,-1,1,24},{106,0,0,21,0,8,-1,1,24},{106,0,0,6,0,6,-1,1,24},{106,0,0,21,0,8,-1,1,24},{106,0,0,21,0,8,-1,1,24},{106,0,0,21,0,8,-1,1,24},{106,0,0,21,0,8,-1,1,24},{106,0,0,21,0,8,-1,1,24},{106,0,0,21,0,8,-1,1,24},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,11,17,8,-1,1,9},{103,0,0,2,0,12,-1,1,0}}, + {{62,0,0,12,17,6,-1,1,9},{62,0,0,12,17,6,-1,1,9},{62,0,0,12,17,6,-1,1,9},{62,0,0,12,17,6,-1,1,9},{62,0,0,10,0,6,-1,1,9},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2}}, + {{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2}}, + {{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,12,17,6,-1,1,9},{62,0,0,10,0,6,-1,1,9},{62,0,0,12,17,6,-1,1,9},{62,0,0,12,17,6,-1,1,9},{62,0,0,12,17,6,-1,1,9},{62,0,0,12,17,6,-1,1,9},{62,0,0,12,17,6,-1,1,9},{62,0,0,10,0,6,-1,1,9},{62,0,0,12,17,6,-1,1,9},{62,0,0,10,0,6,-1,1,9},{62,0,0,10,0,6,-1,1,9},{62,0,0,10,0,6,-1,1,9}}, + {{62,0,0,10,0,6,-1,1,9},{62,0,0,10,0,6,-1,1,9},{62,0,0,12,17,6,-1,1,9},{62,0,0,10,0,6,-1,1,9},{62,0,0,10,0,6,-1,1,9},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{62,0,0,7,0,6,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{62,0,0,13,0,6,0,1,19},{62,0,0,13,0,6,1,1,19},{62,0,0,13,0,6,2,1,19},{62,0,0,13,0,6,3,1,19},{62,0,0,13,0,6,4,1,19},{62,0,0,13,0,6,5,1,19},{62,0,0,13,0,6,6,1,19},{62,0,0,13,0,6,7,1,19},{62,0,0,13,0,6,8,1,19},{62,0,0,13,0,6,9,1,19},{62,0,0,21,0,8,-1,1,4},{62,0,0,21,0,8,-1,1,4},{62,0,0,21,0,8,-1,1,2},{62,0,0,21,0,8,-1,1,4},{62,0,0,21,0,8,-1,1,4},{62,0,0,21,0,8,-1,1,4}}, + {{62,0,0,21,0,8,-1,1,4},{62,0,0,26,0,8,-1,1,2},{62,0,0,26,0,8,-1,1,2},{62,0,0,26,0,8,-1,1,2},{62,0,0,26,0,8,-1,1,2},{62,0,0,26,0,8,-1,1,2},{62,0,0,26,0,8,-1,1,2},{62,0,0,26,0,8,-1,1,2},{62,0,0,26,0,8,-1,1,2},{62,0,0,26,0,8,-1,1,2},{62,0,0,26,0,8,-1,1,2},{62,0,0,12,17,6,-1,1,9},{62,0,0,12,17,6,-1,1,9},{62,0,0,12,17,6,-1,1,9},{62,0,0,12,17,6,-1,1,9},{62,0,0,12,17,6,-1,1,9}}, + {{62,0,0,12,17,6,-1,1,9},{62,0,0,12,17,6,-1,1,9},{62,0,0,12,17,6,-1,1,9},{62,0,0,12,17,6,-1,1,9},{62,0,0,26,0,8,-1,1,2},{62,0,0,26,0,8,-1,1,2},{62,0,0,26,0,8,-1,1,2},{62,0,0,26,0,8,-1,1,2},{62,0,0,26,0,8,-1,1,2},{62,0,0,26,0,8,-1,1,2},{62,0,0,26,0,8,-1,1,2},{62,0,0,26,0,8,-1,1,2},{62,0,0,26,0,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{113,0,0,12,17,6,-1,1,9},{113,0,0,12,17,6,-1,1,9},{113,0,0,10,0,6,-1,1,9},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2}}, + {{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2}}, + {{113,0,0,7,0,6,-1,1,2},{113,0,0,10,0,6,-1,1,9},{113,0,0,12,17,6,-1,1,9},{113,0,0,12,17,6,-1,1,9},{113,0,0,12,17,6,-1,1,9},{113,0,0,12,17,6,-1,1,9},{113,0,0,10,0,6,-1,1,9},{113,0,0,10,0,6,-1,1,9},{113,0,0,12,17,6,-1,1,9},{113,0,0,12,17,6,-1,1,9},{113,0,0,10,0,6,-1,1,9},{113,0,0,12,17,6,-1,1,9},{113,0,0,12,17,6,-1,1,9},{113,0,0,12,17,6,-1,1,9},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2}}, + {{113,0,0,13,0,6,0,1,19},{113,0,0,13,0,6,1,1,19},{113,0,0,13,0,6,2,1,19},{113,0,0,13,0,6,3,1,19},{113,0,0,13,0,6,4,1,19},{113,0,0,13,0,6,5,1,19},{113,0,0,13,0,6,6,1,19},{113,0,0,13,0,6,7,1,19},{113,0,0,13,0,6,8,1,19},{113,0,0,13,0,6,9,1,19},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2},{113,0,0,7,0,6,-1,1,2}}, + {{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2}}, + {{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2},{63,0,0,7,0,6,-1,1,2},{63,0,0,12,17,6,-1,1,9},{63,0,0,10,0,6,-1,1,9},{63,0,0,12,17,6,-1,1,9},{63,0,0,12,17,6,-1,1,9},{63,0,0,10,0,6,-1,1,9},{63,0,0,10,0,6,-1,1,9},{63,0,0,10,0,6,-1,1,9},{63,0,0,12,17,6,-1,1,9},{63,0,0,10,0,6,-1,1,9},{63,0,0,12,17,6,-1,1,9}}, + {{63,0,0,12,17,6,-1,1,9},{63,0,0,12,17,6,-1,1,9},{63,0,0,10,0,6,-1,1,9},{63,0,0,10,0,6,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{63,0,0,21,0,8,-1,1,2},{63,0,0,21,0,8,-1,1,2},{63,0,0,21,0,8,-1,1,2},{63,0,0,21,0,8,-1,1,2}}, + {{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2}}, + {{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2},{82,0,0,10,0,6,-1,1,9},{82,0,0,10,0,6,-1,1,9},{82,0,0,10,0,6,-1,1,9},{82,0,0,10,0,6,-1,1,9},{82,0,0,10,0,6,-1,1,9},{82,0,0,10,0,6,-1,1,9},{82,0,0,10,0,6,-1,1,9},{82,0,0,10,0,6,-1,1,9},{82,0,0,12,17,6,-1,1,9},{82,0,0,12,17,6,-1,1,9},{82,0,0,12,17,6,-1,1,9},{82,0,0,12,17,6,-1,1,9}}, + {{82,0,0,12,17,6,-1,1,9},{82,0,0,12,17,6,-1,1,9},{82,0,0,12,17,6,-1,1,9},{82,0,0,12,17,6,-1,1,9},{82,0,0,10,0,6,-1,1,9},{82,0,0,10,0,6,-1,1,9},{82,0,0,12,17,6,-1,1,9},{82,0,0,12,17,6,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{82,0,0,21,0,8,-1,1,4},{82,0,0,21,0,8,-1,1,4},{82,0,0,21,0,8,-1,1,4},{82,0,0,21,0,8,-1,1,4},{82,0,0,21,0,8,-1,1,4}}, + {{82,0,0,13,0,6,0,1,19},{82,0,0,13,0,6,1,1,19},{82,0,0,13,0,6,2,1,19},{82,0,0,13,0,6,3,1,19},{82,0,0,13,0,6,4,1,19},{82,0,0,13,0,6,5,1,19},{82,0,0,13,0,6,6,1,19},{82,0,0,13,0,6,7,1,19},{82,0,0,13,0,6,8,1,19},{82,0,0,13,0,6,9,1,19},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2},{82,0,0,7,0,6,-1,1,2}}, + {{109,0,0,13,0,6,0,1,19},{109,0,0,13,0,6,1,1,19},{109,0,0,13,0,6,2,1,19},{109,0,0,13,0,6,3,1,19},{109,0,0,13,0,6,4,1,19},{109,0,0,13,0,6,5,1,19},{109,0,0,13,0,6,6,1,19},{109,0,0,13,0,6,7,1,19},{109,0,0,13,0,6,8,1,19},{109,0,0,13,0,6,9,1,19},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2}}, + {{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2}}, + {{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,7,0,6,-1,1,2},{109,0,0,6,0,6,-1,1,2},{109,0,0,6,0,6,-1,1,2},{109,0,0,6,0,6,-1,1,2},{109,0,0,6,0,6,-1,1,2},{109,0,0,6,0,6,-1,1,2},{109,0,0,6,0,6,-1,1,2},{109,0,0,21,0,8,-1,1,4},{109,0,0,21,0,8,-1,1,4}}, + {{113,0,0,21,0,8,-1,1,2},{113,0,0,21,0,8,-1,1,2},{113,0,0,21,0,8,-1,1,2},{113,0,0,21,0,8,-1,1,2},{113,0,0,21,0,8,-1,1,2},{113,0,0,21,0,8,-1,1,2},{113,0,0,21,0,8,-1,1,2},{113,0,0,21,0,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{0,0,0,21,0,8,-1,1,2},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9}}, + {{1,0,0,12,17,4,-1,1,9},{0,0,0,10,0,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{0,0,0,7,0,4,-1,1,2},{0,0,0,7,0,4,-1,1,2},{0,0,0,7,0,4,-1,1,2},{0,0,0,7,0,4,-1,1,2},{1,0,0,12,17,4,-1,1,9},{0,0,0,7,0,4,-1,1,2},{0,0,0,7,0,4,-1,1,2}}, + {{0,0,0,7,0,4,-1,1,2},{0,0,0,7,0,4,-1,1,2},{0,0,0,10,0,4,-1,1,9},{0,0,0,10,0,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{0,0,0,7,0,4,-1,1,2},{0,0,0,7,0,4,-1,1,2},{103,0,0,2,0,12,-1,1,0},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{14,0,0,5,0,3,-1,1,2},{14,0,0,5,0,3,-1,1,2},{14,0,0,5,0,3,-1,1,2},{14,0,0,5,0,3,-1,1,2},{14,0,0,5,0,3,-1,1,2},{8,0,0,5,0,3,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,3,-1,1,2}}, + {{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,3,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2}}, + {{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,3,-1,1,2},{25,0,0,6,0,9,-1,1,2}}, + {{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{14,0,0,6,0,9,-1,1,2},{14,0,0,6,0,9,-1,1,2},{14,0,0,6,0,9,-1,1,2}}, + {{14,0,0,6,0,9,-1,1,2},{14,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{14,0,0,6,0,9,-1,1,2},{14,0,0,6,0,9,-1,1,2},{14,0,0,6,0,9,-1,1,2},{14,0,0,6,0,9,-1,1,2},{14,0,0,6,0,9,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2}}, + {{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{8,0,0,6,0,9,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2}}, + {{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2}}, + {{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2}}, + {{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{14,0,0,6,0,9,-1,1,2}}, + {{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,3,-1,1,9}}, + {{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9}}, + {{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,4,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9}}, + {{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9}}, + {{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,9,-1,1,2},{25,0,0,5,0,9,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,3,-1,1,2}}, + {{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,9,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,9,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2}}, + {{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2}}, + {{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{14,0,0,9,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{14,0,0,9,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{14,0,0,9,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{14,0,0,9,0,0,-1,1,2}}, + {{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,9,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,9,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,9,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,9,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,9,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,9,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,8,0,0,-1,1,2},{14,0,0,8,0,0,-1,1,2},{14,0,0,8,0,0,-1,1,2},{14,0,0,8,0,0,-1,1,2},{14,0,0,8,0,0,-1,1,2},{14,0,0,8,0,0,-1,1,2},{14,0,0,8,0,0,-1,1,2},{14,0,0,8,0,0,-1,1,2}}, + {{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,9,-1,1,2},{14,0,0,8,0,0,-1,1,2},{14,0,0,24,10,9,-1,1,2},{14,0,0,5,0,9,-1,1,2},{14,0,0,24,10,9,-1,1,2}}, + {{14,0,0,24,10,9,-1,1,2},{14,0,0,24,10,9,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,9,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,9,-1,1,2},{14,0,0,8,0,0,-1,1,2},{14,0,0,24,10,9,-1,1,2},{14,0,0,24,10,9,-1,1,2},{14,0,0,24,10,9,-1,1,2}}, + {{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{14,0,0,24,10,9,-1,1,2},{14,0,0,24,10,9,-1,1,2},{14,0,0,24,10,9,-1,1,2}}, + {{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,9,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,9,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,24,10,9,-1,1,2},{14,0,0,24,10,9,-1,1,2},{14,0,0,24,10,9,-1,1,2}}, + {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{14,0,0,5,0,0,-1,1,2},{14,0,0,5,0,0,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,9,-1,1,2},{14,0,0,9,0,0,-1,1,2},{14,0,0,9,0,9,-1,1,2},{14,0,0,8,0,0,-1,1,2},{14,0,0,24,10,9,-1,1,5},{14,0,0,24,10,9,-1,1,2},{103,0,0,2,0,12,-1,1,0}}, + {{0,0,0,29,9,9,-1,1,4},{0,0,0,29,9,9,-1,1,4},{0,0,0,29,9,9,-1,1,4},{0,0,0,29,9,9,-1,1,4},{0,0,0,29,9,9,-1,1,4},{0,0,0,29,9,9,-1,1,4},{0,0,0,29,9,9,-1,1,4},{0,0,0,29,9,9,-1,1,12},{0,0,0,29,9,9,-1,1,4},{0,0,0,29,9,9,-1,1,4},{0,0,0,29,9,9,-1,1,4},{0,0,0,1,18,10,-1,1,28},{1,0,0,1,18,1,-1,1,9},{1,0,0,1,18,1,-1,1,9},{0,0,0,1,0,10,-1,1,9},{0,0,0,1,1,10,-1,1,9}}, + {{0,0,0,17,10,1,-1,1,4},{0,0,0,17,10,9,-1,1,12},{0,0,0,17,10,8,-1,1,4},{0,0,0,17,10,8,-1,1,4},{0,0,0,17,10,8,-1,1,3},{0,0,0,17,10,8,-1,1,1},{0,0,0,21,10,8,-1,0,1},{0,0,0,21,10,9,-1,1,2},{0,0,0,20,10,8,-1,1,23},{0,0,0,19,10,1,-1,1,23},{0,0,0,22,10,8,-1,1,20},{0,0,0,20,10,8,-1,1,23},{0,0,0,20,10,8,-1,1,23},{0,0,0,19,10,8,-1,1,23},{0,0,0,22,10,8,-1,1,20},{0,0,0,20,10,8,-1,1,23}}, + {{0,0,0,21,10,8,-1,0,1},{0,0,0,21,10,8,-1,0,1},{0,0,0,21,10,8,-1,1,2},{0,0,0,21,10,8,-1,1,2},{0,0,0,21,10,9,-1,1,15},{0,0,0,21,10,9,-1,1,15},{0,0,0,21,10,9,-1,1,15},{0,0,0,21,10,1,-1,1,4},{0,0,0,27,9,8,-1,1,6},{0,0,0,28,7,8,-1,1,6},{0,0,0,1,11,10,-1,1,9},{0,0,0,1,14,10,-1,1,9},{0,0,0,1,16,10,-1,1,9},{0,0,0,1,12,10,-1,1,9},{0,0,0,1,15,10,-1,1,9},{0,0,0,29,6,9,-1,1,12}}, + {{0,0,0,21,4,8,-1,0,21},{0,0,0,21,4,8,-1,0,21},{0,0,0,21,4,8,-1,1,21},{0,0,0,21,4,9,-1,1,21},{0,0,0,21,4,9,-1,1,21},{0,0,0,21,10,8,-1,1,21},{0,0,0,21,10,9,-1,1,21},{0,0,0,21,10,9,-1,1,21},{0,0,0,21,10,8,-1,1,2},{0,0,0,20,10,8,-1,1,23},{0,0,0,19,10,8,-1,1,23},{0,0,0,21,10,8,-1,0,1},{0,0,0,21,10,9,-1,0,18},{0,0,0,21,10,8,-1,1,18},{0,0,0,21,10,9,-1,1,2},{0,0,0,16,10,3,-1,1,2}}, + {{0,0,0,16,10,3,-1,1,2},{0,0,0,21,10,8,-1,1,2},{0,0,0,21,10,8,-1,0,2},{0,0,0,21,10,8,-1,1,2},{0,0,0,25,6,8,-1,1,16},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,0,0,21,10,9,-1,0,18},{0,0,0,21,10,9,-1,0,18},{0,0,0,21,10,9,-1,0,18},{0,0,0,21,10,8,-1,1,2},{0,0,0,21,10,8,-1,1,2},{0,0,0,21,10,8,-1,1,2},{0,0,0,21,10,8,-1,1,2},{0,0,0,21,10,8,-1,1,2},{0,0,0,21,10,8,-1,1,2}}, + {{0,0,0,21,10,8,-1,1,2},{0,0,0,21,10,8,-1,0,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,21,10,8,-1,1,2},{0,0,0,16,10,2,-1,1,2},{0,0,0,21,10,8,-1,1,2},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,9,-1,1,2},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,2},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,4},{0,0,0,29,9,9,-1,1,4}}, + {{0,0,0,1,18,10,-1,1,30},{0,0,0,1,18,10,-1,1,2},{0,0,0,1,18,10,-1,1,2},{0,0,0,1,18,10,-1,1,2},{0,0,0,1,18,10,-1,1,2},{103,0,0,2,0,12,-1,0,0},{0,0,0,1,20,10,-1,1,9},{0,0,0,1,21,10,-1,1,9},{0,0,0,1,19,10,-1,1,9},{0,0,0,1,22,10,-1,1,9},{0,0,0,1,18,11,-1,1,9},{0,0,0,1,18,11,-1,1,9},{0,0,0,1,18,11,-1,1,9},{0,0,0,1,18,11,-1,1,9},{0,0,0,1,18,11,-1,1,9},{0,0,0,1,18,11,-1,1,9}}, + {{0,0,0,15,2,9,0,1,2},{25,0,0,6,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{0,0,0,15,2,9,4,1,1},{0,0,0,15,2,9,5,1,2},{0,0,0,15,2,9,6,1,2},{0,0,0,15,2,9,7,1,2},{0,0,0,15,2,9,8,1,2},{0,0,0,15,2,9,9,1,2},{0,0,0,25,3,9,-1,1,2},{0,0,0,25,3,9,-1,1,2},{0,0,0,25,10,9,-1,1,2},{0,1,0,22,10,9,-1,1,20},{0,2,0,18,10,9,-1,1,8},{25,0,0,6,0,9,-1,1,1}}, + {{0,0,0,15,2,9,0,1,2},{0,0,0,15,2,9,1,1,1},{0,0,0,15,2,9,2,1,1},{0,0,0,15,2,9,3,1,1},{0,0,0,15,2,9,4,1,1},{0,0,0,15,2,9,5,1,2},{0,0,0,15,2,9,6,1,2},{0,0,0,15,2,9,7,1,2},{0,0,0,15,2,9,8,1,2},{0,0,0,15,2,9,9,1,2},{0,0,0,25,3,9,-1,1,2},{0,0,0,25,3,9,-1,1,2},{0,0,0,25,10,9,-1,1,2},{0,1,0,22,10,9,-1,1,20},{0,2,0,18,10,9,-1,1,8},{103,0,0,2,0,12,-1,1,0}}, + {{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,21},{0,0,0,23,4,9,-1,1,22},{0,0,1,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22}}, + {{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,21},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,21},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,22},{0,0,0,23,4,8,-1,1,21},{103,0,0,2,4,12,-1,1,22}}, + {{103,0,0,2,4,12,-1,1,22},{103,0,0,2,4,12,-1,1,22},{103,0,0,2,4,12,-1,1,22},{103,0,0,2,4,12,-1,1,22},{103,0,0,2,4,12,-1,1,22},{103,0,0,2,4,12,-1,1,22},{103,0,0,2,4,12,-1,1,22},{103,0,0,2,4,12,-1,1,22},{103,0,0,2,4,12,-1,1,22},{103,0,0,2,4,12,-1,1,22},{103,0,0,2,4,12,-1,1,22},{103,0,0,2,4,12,-1,1,22},{103,0,0,2,4,12,-1,1,22},{103,0,0,2,4,12,-1,1,22},{103,0,0,2,4,12,-1,1,22},{103,0,0,2,4,12,-1,1,22}}, + {{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,11,17,8,-1,0,9},{1,0,0,11,17,8,-1,0,9},{1,0,0,11,17,8,-1,0,9}}, + {{1,0,0,11,17,8,-1,0,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,11,17,8,-1,0,9},{1,0,0,11,17,8,-1,0,9},{1,0,0,11,17,8,-1,0,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9},{1,0,0,12,17,7,-1,1,9}}, + {{1,0,0,12,17,7,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{0,0,0,26,10,9,-1,0,2},{0,0,0,26,10,9,-1,0,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,26,10,9,-1,0,21},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,9,-1,0,1},{0,0,0,26,10,9,-1,0,2},{0,0,0,9,0,9,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,9,-1,0,21},{0,0,0,5,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,0,2}}, + {{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,5,0,9,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,26,10,9,-1,0,22},{0,0,0,26,10,8,-1,0,2},{0,0,0,25,10,3,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}}, + {{0,0,0,26,10,9,-1,0,2},{0,0,0,26,10,9,-1,0,1},{0,0,0,26,10,9,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,26,10,8,-1,0,2},{14,0,0,9,0,9,-1,1,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,26,10,8,-1,0,2},{25,0,0,9,0,9,-1,1,2},{25,0,0,9,0,9,-1,1,1},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,26,4,3,-1,0,2},{0,0,0,5,0,9,-1,1,2}}, + {{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{25,0,0,9,0,4,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,7,0,9,-1,0,2},{0,0,0,7,0,9,-1,0,2},{0,0,0,7,0,9,-1,0,2},{0,0,0,7,0,9,-1,0,2},{0,0,0,5,0,9,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,9,-1,0,2},{0,0,0,5,0,9,-1,0,2},{0,0,0,5,0,9,-1,0,2},{0,0,0,9,0,9,-1,0,2},{0,0,0,9,0,9,-1,0,2}}, + {{0,0,0,25,10,9,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,9,0,9,-1,0,2},{0,0,0,5,0,9,-1,0,2},{0,0,0,5,0,9,-1,0,2},{0,0,0,5,0,9,-1,0,2},{0,0,0,5,0,9,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{25,0,0,5,0,4,-1,1,2},{0,0,0,26,0,8,-1,0,2}}, + {{0,0,0,15,10,9,-1,0,2},{0,0,0,15,10,9,-1,0,2},{0,0,0,15,10,9,-1,0,2},{0,0,0,15,10,9,-1,0,2},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,2},{0,0,0,15,10,9,-1,0,2},{0,0,0,15,10,9,-1,0,2},{0,0,0,15,10,9,-1,0,2},{0,0,0,15,10,9,-1,0,2},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,2},{0,0,0,15,10,9,-1,0,2},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,2}}, + {{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,2},{25,0,0,14,0,9,-1,0,2},{25,0,0,14,0,9,-1,0,2},{25,0,0,14,0,9,-1,0,2}}, + {{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,1},{25,0,0,14,0,9,-1,0,2},{25,0,0,14,0,9,-1,0,2},{25,0,0,14,0,9,-1,0,2},{25,0,0,14,0,9,-1,0,2},{25,0,0,14,0,9,-1,0,2},{25,0,0,14,0,9,-1,0,2}}, + {{25,0,0,14,0,4,-1,0,2},{25,0,0,14,0,4,-1,0,2},{25,0,0,14,0,4,-1,0,2},{25,0,0,9,0,4,-1,0,2},{25,0,0,5,0,4,-1,0,2},{25,0,0,14,0,4,-1,0,2},{25,0,0,14,0,4,-1,0,2},{25,0,0,14,0,4,-1,0,2},{25,0,0,14,0,4,-1,0,2},{0,0,0,15,10,9,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2}}, + {{0,0,0,25,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2}}, + {{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2}}, + {{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2}}, + {{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2}}, + {{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2}}, + {{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1}}, + {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,3,8,-1,1,22},{0,0,0,25,4,8,-1,1,22},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,0,1},{0,0,0,25,10,8,-1,1,1}}, + {{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,9,-1,1,1},{0,0,0,25,10,9,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,9,-1,1,2}}, + {{0,0,0,25,10,9,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,0,1},{0,0,0,25,10,8,-1,0,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2}}, + {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2}}, + {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2}}, + {{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1}}, + {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2}}, + {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2}}, + {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2}}, + {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2}}, + {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,1}}, + {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,15}}, + {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}}, + {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}}, + {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,1,1,22,10,11,-1,3,20},{0,2,1,18,10,11,-1,3,8},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2}}, + {{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2}}, + {{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2}}, + {{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}}, + {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}}, + {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2}}, + {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}}, + {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,0,2}}, + {{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2}}, + {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}}, + {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{0,0,0,15,10,9,1,0,1},{0,0,0,15,10,9,2,0,1},{0,0,0,15,10,9,3,0,1},{0,0,0,15,10,9,4,0,1},{0,0,0,15,10,9,5,0,1},{0,0,0,15,10,9,6,0,1},{0,0,0,15,10,9,7,0,1},{0,0,0,15,10,9,8,0,1},{0,0,0,15,10,9,9,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1}}, + {{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,1,0,1},{0,0,0,15,10,9,2,0,1},{0,0,0,15,10,9,3,0,1},{0,0,0,15,10,9,4,0,1},{0,0,0,15,10,9,5,0,1},{0,0,0,15,10,9,6,0,1},{0,0,0,15,10,9,7,0,1},{0,0,0,15,10,9,8,0,1},{0,0,0,15,10,9,9,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1}}, + {{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,10,9,-1,0,1},{0,0,0,15,2,9,1,0,1},{0,0,0,15,2,9,2,0,1},{0,0,0,15,2,9,3,0,1},{0,0,0,15,2,9,4,0,1},{0,0,0,15,2,9,5,0,1},{0,0,0,15,2,9,6,0,1},{0,0,0,15,2,9,7,0,1},{0,0,0,15,2,9,8,0,1}}, + {{0,0,0,15,2,9,9,0,1},{0,0,0,15,2,9,-1,0,1},{0,0,0,15,2,9,-1,0,1},{0,0,0,15,2,9,-1,0,1},{0,0,0,15,2,9,-1,0,1},{0,0,0,15,2,9,-1,0,1},{0,0,0,15,2,9,-1,0,1},{0,0,0,15,2,9,-1,0,1},{0,0,0,15,2,9,-1,0,1},{0,0,0,15,2,9,-1,0,1},{0,0,0,15,2,9,-1,0,1},{0,0,0,15,2,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1}}, + {{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1}}, + {{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,15,10,9,0,0,1},{0,0,0,15,10,8,-1,0,1},{0,0,0,15,10,8,-1,0,1},{0,0,0,15,10,8,-1,0,1},{0,0,0,15,10,8,-1,0,1},{0,0,0,15,10,8,-1,0,1}}, + {{0,0,0,15,10,8,-1,0,1},{0,0,0,15,10,8,-1,0,1},{0,0,0,15,10,8,-1,0,1},{0,0,0,15,10,8,-1,0,1},{0,0,0,15,10,8,-1,0,1},{0,0,0,15,10,8,1,0,1},{0,0,0,15,10,8,2,0,1},{0,0,0,15,10,8,3,0,1},{0,0,0,15,10,8,4,0,1},{0,0,0,15,10,8,5,0,1},{0,0,0,15,10,8,6,0,1},{0,0,0,15,10,8,7,0,1},{0,0,0,15,10,8,8,0,1},{0,0,0,15,10,8,9,0,1},{0,0,0,15,10,8,-1,0,1},{0,0,0,15,10,8,0,0,2}}, + {{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1}}, + {{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2}}, + {{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2}}, + {{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,1},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2}}, + {{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}}, + {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,25,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}}, + {{0,0,0,26,10,8,-1,0,1},{0,0,0,25,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1}}, + {{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}}, + {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1}}, + {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,25,10,8,-1,0,2},{0,0,0,25,10,8,-1,0,2},{0,0,0,25,10,8,-1,0,2},{0,0,0,25,10,8,-1,0,2},{0,0,0,25,10,8,-1,0,2},{0,0,0,25,10,8,-1,0,2},{0,0,0,25,10,8,-1,0,2},{0,0,0,25,10,8,-1,0,2}}, + {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1}}, + {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,1,14},{0,0,0,26,10,8,-1,1,14},{0,0,0,26,10,8,-1,1,14},{0,0,0,26,10,8,-1,1,14},{0,0,0,26,10,8,-1,1,14},{0,0,0,26,10,8,-1,1,14}}, + {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}}, + {{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}}, + {{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,25,10,8,-1,0,1}}, + {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,14}}, + {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1}}, + {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}}, + {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14}}, + {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,14}}, + {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,14}}, + {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1}}, + {{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14}}, + {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}}, + {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,23},{0,0,0,26,10,8,-1,0,23},{0,0,0,26,10,8,-1,0,23},{0,0,0,26,10,8,-1,0,23},{0,0,0,26,10,8,-1,0,23}}, + {{0,0,0,26,10,8,-1,0,23},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,11},{0,0,0,26,10,8,-1,0,11},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8}}, + {{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,0,0,15,10,8,1,0,1},{0,0,0,15,10,8,2,0,1},{0,0,0,15,10,8,3,0,1},{0,0,0,15,10,8,4,0,1},{0,0,0,15,10,8,5,0,1},{0,0,0,15,10,8,6,0,1},{0,0,0,15,10,8,7,0,1},{0,0,0,15,10,8,8,0,1},{0,0,0,15,10,8,9,0,1},{0,0,0,15,10,8,-1,0,1}}, + {{0,0,0,15,10,8,1,0,1},{0,0,0,15,10,8,2,0,1},{0,0,0,15,10,8,3,0,1},{0,0,0,15,10,8,4,0,1},{0,0,0,15,10,8,5,0,1},{0,0,0,15,10,8,6,0,1},{0,0,0,15,10,8,7,0,1},{0,0,0,15,10,8,8,0,1},{0,0,0,15,10,8,9,0,1},{0,0,0,15,10,8,-1,0,1},{0,0,0,15,10,8,1,0,1},{0,0,0,15,10,8,2,0,1},{0,0,0,15,10,8,3,0,1},{0,0,0,15,10,8,4,0,1},{0,0,0,15,10,8,5,0,1},{0,0,0,15,10,8,6,0,1}}, + {{0,0,0,15,10,8,7,0,1},{0,0,0,15,10,8,8,0,1},{0,0,0,15,10,8,9,0,1},{0,0,0,15,10,8,-1,0,1},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2}}, + {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2}}, + {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8}}, + {{46,0,0,26,0,8,-1,1,2},{46,0,0,26,0,8,-1,1,2},{46,0,0,26,0,8,-1,1,2},{46,0,0,26,0,8,-1,1,2},{46,0,0,26,0,8,-1,1,2},{46,0,0,26,0,8,-1,1,2},{46,0,0,26,0,8,-1,1,2},{46,0,0,26,0,8,-1,1,2},{46,0,0,26,0,8,-1,1,2},{46,0,0,26,0,8,-1,1,2},{46,0,0,26,0,8,-1,1,2},{46,0,0,26,0,8,-1,1,2},{46,0,0,26,0,8,-1,1,2},{46,0,0,26,0,8,-1,1,2},{46,0,0,26,0,8,-1,1,2},{46,0,0,26,0,8,-1,1,2}}, + {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20}}, + {{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2}}, + {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2}}, + {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2}}, + {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,9,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2}}, + {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,9,-1,1,2},{0,0,0,25,10,9,-1,1,2},{0,0,0,25,10,9,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2}}, + {{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}}, + {{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,25,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2}}, + {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,0,1},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2}}, + {{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2}}, + {{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2}}, + {{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}}, + {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{103,0,0,2,0,12,-1,0,0},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}}, + {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}}, + {{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2}}, + {{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{56,0,0,9,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0}}, + {{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2}}, + {{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{56,0,0,5,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0}}, + {{25,0,0,9,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,9,0,3,-1,1,2},{25,0,0,9,0,3,-1,1,2},{25,0,0,9,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2}}, + {{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,5,0,3,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2}}, + {{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2},{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2},{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2},{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2},{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2},{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2},{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2},{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2}}, + {{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2},{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2},{7,0,0,26,10,8,-1,1,2},{7,0,0,26,10,8,-1,1,2},{7,0,0,26,10,8,-1,1,2},{7,0,0,26,10,8,-1,1,2},{7,0,0,26,10,8,-1,1,2},{7,0,0,26,10,8,-1,1,2},{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2},{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2},{7,0,0,12,17,7,-1,1,9}}, + {{7,0,0,12,17,7,-1,1,9},{7,0,0,12,17,7,-1,1,9},{7,0,0,9,0,7,-1,1,2},{7,0,0,5,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{7,0,0,21,10,8,-1,1,11},{7,0,0,21,10,8,-1,1,4},{7,0,0,21,10,8,-1,1,4},{7,0,0,21,10,8,-1,1,4},{7,0,0,15,10,8,-1,1,2},{7,0,0,21,10,8,-1,1,11},{7,0,0,21,10,8,-1,1,4}}, + {{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2}}, + {{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2},{12,0,0,5,0,4,-1,1,2},{103,0,0,2,0,12,-1,1,0},{12,0,0,5,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{12,0,0,5,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2}}, + {{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{60,0,0,7,0,5,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{60,0,0,6,0,9,-1,1,2}}, + {{60,0,0,21,0,8,-1,1,4},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{60,0,0,12,17,5,-1,1,9}}, + {{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0}}, + {{8,0,0,12,17,4,-1,1,9},{8,0,0,12,17,4,-1,1,9},{8,0,0,12,17,4,-1,1,9},{8,0,0,12,17,4,-1,1,9},{8,0,0,12,17,4,-1,1,9},{8,0,0,12,17,4,-1,1,9},{8,0,0,12,17,4,-1,1,9},{8,0,0,12,17,4,-1,1,9},{8,0,0,12,17,4,-1,1,9},{8,0,0,12,17,4,-1,1,9},{8,0,0,12,17,4,-1,1,9},{8,0,0,12,17,4,-1,1,9},{8,0,0,12,17,4,-1,1,9},{8,0,0,12,17,4,-1,1,9},{8,0,0,12,17,4,-1,1,9},{8,0,0,12,17,4,-1,1,9}}, + {{0,0,0,21,10,8,-1,1,23},{0,0,0,21,10,8,-1,1,23},{0,0,0,20,10,8,-1,1,23},{0,0,0,19,10,8,-1,1,23},{0,0,0,20,10,8,-1,1,23},{0,0,0,19,10,8,-1,1,23},{0,0,0,21,10,8,-1,1,23},{0,0,0,21,10,8,-1,1,23},{0,0,0,21,10,8,-1,1,23},{0,0,0,20,10,8,-1,1,23},{0,0,0,19,10,8,-1,1,23},{0,0,0,21,10,8,-1,1,23},{0,0,0,20,10,8,-1,1,23},{0,0,0,19,10,8,-1,1,23},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,4}}, + {{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,2},{0,0,0,17,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,20},{0,0,0,21,10,8,-1,1,4},{0,0,0,17,10,8,-1,1,2},{0,0,0,21,10,8,-1,1,2},{0,0,0,20,10,8,-1,1,23},{0,0,0,19,10,8,-1,1,23},{0,0,0,21,10,8,-1,1,2},{0,0,0,21,10,8,-1,1,2}}, + {{0,0,0,20,10,8,-1,1,23},{0,0,0,19,10,8,-1,1,23},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,1,0,22,10,8,-1,1,20},{0,2,0,18,10,8,-1,1,8},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,11},{0,0,0,6,10,8,-1,1,2}}, + {{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,2},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,2},{0,0,0,21,10,8,-1,1,2},{0,0,0,21,10,8,-1,1,2},{0,0,0,21,10,8,-1,1,2},{0,0,0,21,10,8,-1,1,2},{0,0,0,17,10,8,-1,1,3},{0,0,0,17,10,8,-1,1,3},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,2}}, + {{0,0,0,17,10,8,-1,1,4},{0,0,0,21,10,8,-1,1,4},{0,0,0,22,10,8,-1,1,20},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14}}, + {{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{103,0,0,2,0,12,-1,0,0},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,9,-1,0,14}}, + {{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,8,-1,0,14},{17,0,1,26,10,9,-1,0,14},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14}}, + {{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14},{17,0,1,26,10,9,-1,0,14},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{0,0,1,29,9,9,-1,0,4},{0,0,1,21,10,8,-1,2,8},{0,0,1,21,10,8,-1,2,8},{0,0,1,21,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{17,0,1,6,0,0,-1,0,18},{0,0,1,7,0,0,-1,0,14},{17,0,1,14,0,0,-1,0,14},{0,1,1,22,10,8,-1,3,20},{0,2,1,18,10,8,-1,3,8},{0,1,1,22,10,8,-1,3,20},{0,2,1,18,10,8,-1,3,8},{0,1,1,22,10,8,-1,3,20},{0,2,1,18,10,8,-1,3,8},{0,1,1,22,10,8,-1,3,20},{0,2,1,18,10,8,-1,3,8}}, + {{0,1,1,22,10,8,-1,3,20},{0,2,1,18,10,8,-1,3,8},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,1,1,22,10,8,-1,3,20},{0,2,1,18,10,8,-1,3,8},{0,1,1,22,10,8,-1,3,20},{0,2,1,18,10,8,-1,3,8},{0,1,1,22,10,8,-1,3,20},{0,2,1,18,10,8,-1,3,8},{0,1,1,22,10,8,-1,3,20},{0,2,1,18,10,8,-1,3,8},{0,0,1,17,10,8,-1,3,18},{0,0,1,22,10,8,-1,3,20},{0,0,1,18,10,8,-1,3,8},{0,0,1,18,10,8,-1,3,8}}, + {{0,0,1,26,10,8,-1,0,14},{17,0,1,14,0,3,-1,0,14},{17,0,1,14,0,3,-1,0,14},{17,0,1,14,0,3,-1,0,14},{17,0,1,14,0,3,-1,0,14},{17,0,1,14,0,3,-1,0,14},{17,0,1,14,0,3,-1,0,14},{17,0,1,14,0,3,-1,0,14},{17,0,1,14,0,3,-1,0,14},{17,0,1,14,0,3,-1,0,14},{1,0,1,12,17,3,-1,0,9},{1,0,1,12,17,3,-1,0,9},{1,0,1,12,17,3,-1,0,9},{1,0,1,12,17,3,-1,0,9},{18,0,1,10,0,4,-1,0,9},{18,0,1,10,0,4,-1,0,9}}, + {{0,0,1,17,10,8,-1,3,14},{0,0,1,6,0,3,-1,0,14},{0,0,1,6,0,3,-1,0,14},{0,0,1,6,0,3,-1,0,14},{0,0,1,6,0,3,-1,0,14},{0,0,1,6,0,3,-1,0,9},{0,0,1,26,10,9,-1,0,14},{0,0,1,26,10,8,-1,0,14},{17,0,1,14,0,9,-1,0,14},{17,0,1,14,0,9,-1,0,14},{17,0,1,14,0,9,-1,0,14},{17,0,1,6,0,3,-1,0,18},{0,0,1,7,0,3,-1,0,18},{0,0,1,21,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14}}, + {{103,0,0,2,0,12,-1,0,0},{20,0,1,7,0,0,-1,2,37},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,2,37},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,2,37},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,2,37},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,2,37},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14}}, + {{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14}}, + {{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,2,37},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14}}, + {{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,2,37},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,2,37},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,2,37},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,2,37},{20,0,1,7,0,0,-1,0,14}}, + {{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,0,14},{20,0,1,7,0,0,-1,2,37},{20,0,1,7,0,0,-1,2,37},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{1,0,1,12,17,0,-1,0,9},{1,0,1,12,17,0,-1,0,9},{0,0,1,24,10,9,-1,2,18},{0,0,1,24,10,9,-1,2,18},{20,0,1,6,0,0,-1,0,18},{20,0,1,6,0,0,-1,0,18},{20,0,1,7,0,9,-1,0,14}}, + {{0,0,1,17,10,1,-1,3,18},{22,0,1,7,0,0,-1,2,37},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,2,37},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,2,37},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,2,37},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,2,37},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14}}, + {{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14}}, + {{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,2,37},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14}}, + {{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,2,37},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,2,37},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,2,37},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,2,37},{22,0,1,7,0,0,-1,0,14}}, + {{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,2,37},{22,0,1,7,0,0,-1,2,37},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{22,0,1,7,0,0,-1,0,14},{0,0,1,21,10,1,-1,0,18},{0,0,1,6,0,0,-1,3,37},{22,0,1,6,0,0,-1,0,18},{22,0,1,6,0,0,-1,0,18},{22,0,1,7,0,9,-1,0,14}}, + {{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14}}, + {{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14}}, + {{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,2,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{103,0,0,2,0,12,-1,0,0},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14}}, + {{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14}}, + {{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,10,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14}}, + {{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{18,0,1,7,0,9,-1,0,14},{103,0,0,2,0,12,-1,0,0}}, + {{0,0,1,26,0,8,-1,0,14},{0,0,1,26,0,8,-1,0,14},{0,0,1,15,0,9,-1,0,14},{0,0,1,15,0,9,-1,0,14},{0,0,1,15,0,9,-1,0,14},{0,0,1,15,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14}}, + {{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{5,0,1,7,0,0,-1,0,14},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14}}, + {{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{0,0,1,26,10,8,-1,0,14},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{22,0,1,7,0,3,-1,2,37},{22,0,1,7,0,3,-1,2,37},{22,0,1,7,0,3,-1,2,37},{22,0,1,7,0,3,-1,2,37},{22,0,1,7,0,3,-1,2,37},{22,0,1,7,0,3,-1,2,37},{22,0,1,7,0,3,-1,2,37},{22,0,1,7,0,3,-1,2,37},{22,0,1,7,0,3,-1,2,37},{22,0,1,7,0,3,-1,2,37},{22,0,1,7,0,3,-1,2,37},{22,0,1,7,0,3,-1,2,37},{22,0,1,7,0,3,-1,2,37},{22,0,1,7,0,3,-1,2,37},{22,0,1,7,0,3,-1,2,37},{22,0,1,7,0,3,-1,2,37}}, + {{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14}}, + {{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,10,9,-1,0,14},{18,0,1,26,10,9,-1,0,14},{103,0,0,2,0,12,-1,0,0}}, + {{0,0,1,15,0,9,-1,0,14},{0,0,1,15,0,9,-1,0,14},{0,0,1,15,0,9,-1,0,14},{0,0,1,15,0,9,-1,0,14},{0,0,1,15,0,9,-1,0,14},{0,0,1,15,0,9,-1,0,14},{0,0,1,15,0,9,-1,0,14},{0,0,1,15,0,9,-1,0,14},{0,0,1,15,0,9,-1,0,14},{0,0,1,15,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14}}, + {{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14}}, + {{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,0,15,0,8,-1,0,1},{0,0,0,15,0,8,-1,0,1},{0,0,0,15,0,8,-1,0,1},{0,0,0,15,0,8,-1,0,1},{0,0,0,15,0,8,-1,0,1},{0,0,0,15,0,8,-1,0,1},{0,0,0,15,0,8,-1,0,1},{0,0,0,15,0,8,-1,0,1}}, + {{0,0,1,26,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14}}, + {{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,0,9,-1,0,14},{18,0,1,26,10,9,-1,0,14},{18,0,1,26,10,9,-1,0,14},{18,0,1,26,10,9,-1,0,14},{0,0,1,26,0,8,-1,0,14}}, + {{0,0,1,26,0,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14},{0,0,1,15,10,9,-1,0,14}}, + {{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,10,9,-1,0,14},{0,0,1,26,10,9,-1,0,14},{0,0,1,26,10,9,-1,0,14},{0,0,1,26,10,9,-1,0,14}}, + {{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14}}, + {{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{22,0,1,26,0,9,-1,0,14},{103,0,0,2,0,12,-1,0,0}}, + {{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14}}, + {{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{22,0,1,26,0,9,-1,2,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14}}, + {{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,10,9,-1,0,14},{0,0,1,26,10,9,-1,0,14},{0,0,1,26,10,9,-1,0,14},{0,0,1,26,10,9,-1,0,14},{0,0,1,26,0,9,-1,2,14},{0,0,1,26,0,9,-1,2,14},{0,0,1,26,0,9,-1,2,14},{0,0,1,26,0,9,-1,2,14},{0,0,1,26,0,9,-1,2,14}}, + {{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,10,9,-1,0,14},{0,0,1,26,10,9,-1,0,14}}, + {{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,10,9,-1,0,14}}, + {{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14}}, + {{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14}}, + {{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14}}, + {{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14}}, + {{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,6,0,5,-1,0,18},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14}}, + {{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{41,0,1,7,0,5,-1,0,14},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14}}, + {{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{41,0,1,26,10,8,-1,0,14},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2}}, + {{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,7,0,6,-1,1,2},{131,0,0,6,0,6,-1,1,2},{131,0,0,6,0,6,-1,1,2},{131,0,0,6,0,6,-1,1,2},{131,0,0,6,0,6,-1,1,2},{131,0,0,6,0,6,-1,1,2},{131,0,0,6,0,6,-1,1,2},{131,0,0,21,0,8,-1,1,4},{131,0,0,21,0,8,-1,1,4}}, + {{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2}}, + {{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{99,0,0,6,0,6,-1,1,2},{99,0,0,21,10,8,-1,1,4},{99,0,0,21,10,8,-1,1,11},{99,0,0,21,10,8,-1,1,4}}, + {{99,0,0,13,0,6,0,1,19},{99,0,0,13,0,6,1,1,19},{99,0,0,13,0,6,2,1,19},{99,0,0,13,0,6,3,1,19},{99,0,0,13,0,6,4,1,19},{99,0,0,13,0,6,5,1,19},{99,0,0,13,0,6,6,1,19},{99,0,0,13,0,6,7,1,19},{99,0,0,13,0,6,8,1,19},{99,0,0,13,0,6,9,1,19},{99,0,0,7,0,6,-1,1,2},{99,0,0,7,0,6,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{8,0,0,9,0,0,-1,1,2},{8,0,0,5,0,0,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,7,0,4,-1,1,2},{8,0,0,12,17,2,-1,1,9}}, + {{8,0,0,11,17,8,-1,1,9},{8,0,0,11,17,8,-1,1,9},{8,0,0,11,17,8,-1,1,9},{8,0,0,21,10,8,-1,1,2},{8,0,0,12,17,0,-1,1,9},{8,0,0,12,17,0,-1,1,9},{8,0,0,12,17,0,-1,1,9},{8,0,0,12,17,0,-1,1,9},{8,0,0,12,17,0,-1,1,9},{8,0,0,12,17,0,-1,1,9},{8,0,0,12,17,0,-1,1,9},{8,0,0,12,17,0,-1,1,9},{8,0,0,12,17,2,-1,1,9},{8,0,0,12,17,2,-1,1,9},{8,0,0,21,10,8,-1,1,2},{8,0,0,6,10,0,-1,1,2}}, + {{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,9,0,4,-1,1,2},{8,0,0,5,0,4,-1,1,2},{8,0,0,6,0,9,-1,1,2},{8,0,0,6,0,9,-1,1,2},{8,0,0,12,17,2,-1,1,9},{8,0,0,12,17,0,-1,1,9}}, + {{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2}}, + {{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,14,0,6,-1,1,2},{130,0,0,14,0,6,-1,1,2},{130,0,0,14,0,6,-1,1,2},{130,0,0,14,0,6,-1,1,2},{130,0,0,14,0,6,-1,1,2},{130,0,0,14,0,6,-1,1,2},{130,0,0,14,0,6,-1,1,2},{130,0,0,14,0,6,-1,1,2},{130,0,0,14,0,6,-1,1,2},{130,0,0,14,0,6,-1,1,2}}, + {{130,0,0,12,17,6,-1,1,9},{130,0,0,12,17,6,-1,1,9},{130,0,0,21,0,8,-1,1,2},{130,0,0,21,0,8,-1,1,4},{130,0,0,21,0,8,-1,1,4},{130,0,0,21,0,8,-1,1,4},{130,0,0,21,0,8,-1,1,4},{130,0,0,21,0,8,-1,1,4},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{0,0,0,6,10,0,-1,1,2},{0,0,0,6,10,0,-1,1,2},{0,0,0,6,10,0,-1,1,2},{0,0,0,6,10,0,-1,1,2},{0,0,0,6,10,0,-1,1,2},{0,0,0,6,10,0,-1,1,2},{0,0,0,6,10,0,-1,1,2},{0,0,0,6,10,0,-1,1,2},{0,0,0,6,10,0,-1,1,2}}, + {{0,0,0,24,10,8,-1,1,2},{0,0,0,24,10,8,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2}}, + {{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2}}, + {{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2}}, + {{25,0,0,6,0,9,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2}}, + {{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{0,0,0,6,10,0,-1,1,2},{0,0,0,24,0,8,-1,1,2},{0,0,0,24,0,8,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,7,0,2,-1,1,2}}, + {{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2}}, + {{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,9,0,0,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{25,0,0,9,0,4,-1,1,2},{25,0,0,9,0,4,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,9,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{25,0,0,7,0,4,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,5,0,0,-1,1,2},{25,0,0,7,0,4,-1,1,2},{25,0,0,7,0,4,-1,1,2},{25,0,0,7,0,4,-1,1,2},{25,0,0,7,0,4,-1,1,2},{25,0,0,7,0,4,-1,1,2}}, + {{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,12,17,6,-1,1,9},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,12,17,6,-1,1,9},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,12,17,6,-1,1,9},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2}}, + {{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2}}, + {{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,7,0,6,-1,1,2},{58,0,0,10,0,6,-1,1,9},{58,0,0,10,0,6,-1,1,9},{58,0,0,12,17,6,-1,1,9},{58,0,0,12,17,6,-1,1,9},{58,0,0,10,0,6,-1,1,9},{58,0,0,26,10,8,-1,1,2},{58,0,0,26,10,8,-1,1,2},{58,0,0,26,10,8,-1,1,2},{58,0,0,26,10,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,23,4,8,-1,1,21},{0,0,0,26,4,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{90,0,0,7,0,7,-1,1,2},{90,0,0,7,0,7,-1,1,2},{90,0,0,7,0,7,-1,1,2},{90,0,0,7,0,7,-1,1,2},{90,0,0,7,0,7,-1,1,2},{90,0,0,7,0,7,-1,1,2},{90,0,0,7,0,7,-1,1,2},{90,0,0,7,0,7,-1,1,2},{90,0,0,7,0,7,-1,1,2},{90,0,0,7,0,7,-1,1,2},{90,0,0,7,0,7,-1,1,2},{90,0,0,7,0,7,-1,1,2},{90,0,0,7,0,7,-1,1,2},{90,0,0,7,0,7,-1,1,2},{90,0,0,7,0,7,-1,1,2},{90,0,0,7,0,7,-1,1,2}}, + {{90,0,0,7,0,7,-1,1,2},{90,0,0,7,0,7,-1,1,2},{90,0,0,7,0,7,-1,1,2},{90,0,0,7,0,7,-1,1,2},{90,0,0,21,10,8,-1,1,5},{90,0,0,21,10,8,-1,1,5},{90,0,0,21,10,8,-1,1,11},{90,0,0,21,10,8,-1,1,11},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{111,0,0,10,0,6,-1,1,9},{111,0,0,10,0,6,-1,1,9},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2}}, + {{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2}}, + {{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,7,0,6,-1,1,2},{111,0,0,10,0,6,-1,1,9},{111,0,0,10,0,6,-1,1,9},{111,0,0,10,0,6,-1,1,9},{111,0,0,10,0,6,-1,1,9},{111,0,0,10,0,6,-1,1,9},{111,0,0,10,0,6,-1,1,9},{111,0,0,10,0,6,-1,1,9},{111,0,0,10,0,6,-1,1,9},{111,0,0,10,0,6,-1,1,9},{111,0,0,10,0,6,-1,1,9},{111,0,0,10,0,6,-1,1,9},{111,0,0,10,0,6,-1,1,9}}, + {{111,0,0,10,0,6,-1,1,9},{111,0,0,10,0,6,-1,1,9},{111,0,0,10,0,6,-1,1,9},{111,0,0,10,0,6,-1,1,9},{111,0,0,12,17,6,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{111,0,0,21,0,8,-1,1,4},{111,0,0,21,0,8,-1,1,4}}, + {{111,0,0,13,0,6,0,1,19},{111,0,0,13,0,6,1,1,19},{111,0,0,13,0,6,2,1,19},{111,0,0,13,0,6,3,1,19},{111,0,0,13,0,6,4,1,19},{111,0,0,13,0,6,5,1,19},{111,0,0,13,0,6,6,1,19},{111,0,0,13,0,6,7,1,19},{111,0,0,13,0,6,8,1,19},{111,0,0,13,0,6,9,1,19},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{10,0,0,12,17,4,-1,1,9},{10,0,0,12,17,4,-1,1,9},{10,0,0,12,17,4,-1,1,9},{10,0,0,12,17,4,-1,1,9},{10,0,0,12,17,4,-1,1,9},{10,0,0,12,17,4,-1,1,9},{10,0,0,12,17,4,-1,1,9},{10,0,0,12,17,4,-1,1,9},{10,0,0,12,17,4,-1,1,9},{10,0,0,12,17,4,-1,1,9},{10,0,0,12,17,4,-1,1,9},{10,0,0,12,17,4,-1,1,9},{10,0,0,12,17,4,-1,1,9},{10,0,0,12,17,4,-1,1,9},{10,0,0,12,17,4,-1,1,9},{10,0,0,12,17,4,-1,1,9}}, + {{10,0,0,12,17,4,-1,1,9},{10,0,0,12,17,4,-1,1,9},{10,0,0,7,0,4,-1,1,2},{10,0,0,7,0,4,-1,1,2},{10,0,0,7,0,4,-1,1,2},{10,0,0,7,0,4,-1,1,2},{10,0,0,7,0,4,-1,1,2},{10,0,0,7,0,4,-1,1,2},{10,0,0,21,0,8,-1,1,2},{10,0,0,21,0,8,-1,1,2},{10,0,0,21,0,8,-1,1,2},{10,0,0,7,0,4,-1,1,2},{10,0,0,21,0,8,-1,1,5},{10,0,0,7,0,4,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{79,0,0,13,0,6,0,1,19},{79,0,0,13,0,6,1,1,19},{79,0,0,13,0,6,2,1,19},{79,0,0,13,0,6,3,1,19},{79,0,0,13,0,6,4,1,19},{79,0,0,13,0,6,5,1,19},{79,0,0,13,0,6,6,1,19},{79,0,0,13,0,6,7,1,19},{79,0,0,13,0,6,8,1,19},{79,0,0,13,0,6,9,1,19},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2}}, + {{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2}}, + {{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,7,0,6,-1,1,2},{79,0,0,12,17,6,-1,1,9},{79,0,0,12,17,6,-1,1,9},{79,0,0,12,17,6,-1,1,9},{79,0,0,12,17,6,-1,1,9},{79,0,0,12,17,6,-1,1,9},{79,0,0,12,17,6,-1,1,9},{79,0,0,12,17,6,-1,1,9},{79,0,0,12,17,6,-1,1,9},{0,0,0,21,0,8,-1,1,4},{79,0,0,21,0,8,-1,1,4}}, + {{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2}}, + {{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,7,0,7,-1,1,2},{110,0,0,12,17,7,-1,1,9},{110,0,0,12,17,7,-1,1,9},{110,0,0,12,17,7,-1,1,9},{110,0,0,12,17,7,-1,1,9},{110,0,0,12,17,7,-1,1,9},{110,0,0,12,17,7,-1,1,9},{110,0,0,12,17,7,-1,1,9},{110,0,0,12,17,7,-1,1,9},{110,0,0,12,17,7,-1,1,9}}, + {{110,0,0,12,17,7,-1,1,9},{110,0,0,12,17,7,-1,1,9},{110,0,0,10,0,7,-1,1,9},{110,0,0,10,0,7,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{110,0,0,21,0,8,-1,1,2}}, + {{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{18,0,1,7,0,4,-1,0,33},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{78,0,0,12,17,6,-1,1,9},{78,0,0,12,17,6,-1,1,9},{78,0,0,12,17,6,-1,1,9},{78,0,0,10,0,6,-1,1,9},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2}}, + {{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2}}, + {{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,7,0,6,-1,1,2},{78,0,0,12,17,6,-1,1,9},{78,0,0,10,0,6,-1,1,9},{78,0,0,10,0,6,-1,1,9},{78,0,0,12,17,6,-1,1,9},{78,0,0,12,17,6,-1,1,9},{78,0,0,12,17,6,-1,1,9},{78,0,0,12,17,6,-1,1,9},{78,0,0,10,0,6,-1,1,9},{78,0,0,10,0,6,-1,1,9},{78,0,0,12,17,6,-1,1,9},{78,0,0,10,0,6,-1,1,9},{78,0,0,10,0,6,-1,1,9},{78,0,0,10,0,6,-1,1,9}}, + {{78,0,0,10,0,6,-1,1,9},{78,0,0,21,0,8,-1,1,2},{78,0,0,21,0,8,-1,1,2},{78,0,0,21,0,8,-1,1,2},{78,0,0,21,0,8,-1,1,2},{78,0,0,21,0,8,-1,1,2},{78,0,0,21,0,8,-1,1,2},{78,0,0,21,0,8,-1,1,4},{78,0,0,21,0,8,-1,1,4},{78,0,0,21,0,8,-1,1,4},{78,0,0,21,0,8,-1,1,2},{78,0,0,21,0,8,-1,1,2},{78,0,0,21,0,8,-1,1,2},{78,0,0,21,0,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{0,0,0,6,0,7,-1,1,2}}, + {{78,0,0,13,0,6,0,1,19},{78,0,0,13,0,6,1,1,19},{78,0,0,13,0,6,2,1,19},{78,0,0,13,0,6,3,1,19},{78,0,0,13,0,6,4,1,19},{78,0,0,13,0,6,5,1,19},{78,0,0,13,0,6,6,1,19},{78,0,0,13,0,6,7,1,19},{78,0,0,13,0,6,8,1,19},{78,0,0,13,0,6,9,1,19},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{78,0,0,21,0,8,-1,1,2},{78,0,0,21,0,8,-1,1,2}}, + {{28,0,0,7,0,4,-1,1,24},{28,0,0,7,0,4,-1,1,24},{28,0,0,7,0,4,-1,1,24},{28,0,0,7,0,4,-1,1,24},{28,0,0,7,0,4,-1,1,24},{28,0,0,12,17,4,-1,1,24},{28,0,0,6,0,4,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24}}, + {{28,0,0,13,0,0,0,1,19},{28,0,0,13,0,0,1,1,19},{28,0,0,13,0,0,2,1,19},{28,0,0,13,0,0,3,1,19},{28,0,0,13,0,0,4,1,19},{28,0,0,13,0,0,5,1,19},{28,0,0,13,0,0,6,1,19},{28,0,0,13,0,0,7,1,19},{28,0,0,13,0,0,8,1,19},{28,0,0,13,0,0,9,1,19},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{103,0,0,2,0,12,-1,1,0}}, + {{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2}}, + {{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,12,17,6,-1,1,9},{66,0,0,12,17,6,-1,1,9},{66,0,0,12,17,6,-1,1,9},{66,0,0,12,17,6,-1,1,9},{66,0,0,12,17,6,-1,1,9},{66,0,0,12,17,6,-1,1,9},{66,0,0,10,0,6,-1,1,9}}, + {{66,0,0,10,0,6,-1,1,9},{66,0,0,12,17,6,-1,1,9},{66,0,0,12,17,6,-1,1,9},{66,0,0,10,0,6,-1,1,9},{66,0,0,10,0,6,-1,1,9},{66,0,0,12,17,6,-1,1,9},{66,0,0,12,17,6,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,12,17,6,-1,1,9},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,7,0,6,-1,1,2},{66,0,0,12,17,6,-1,1,9},{66,0,0,10,0,6,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{66,0,0,13,0,6,0,1,19},{66,0,0,13,0,6,1,1,19},{66,0,0,13,0,6,2,1,19},{66,0,0,13,0,6,3,1,19},{66,0,0,13,0,6,4,1,19},{66,0,0,13,0,6,5,1,19},{66,0,0,13,0,6,6,1,19},{66,0,0,13,0,6,7,1,19},{66,0,0,13,0,6,8,1,19},{66,0,0,13,0,6,9,1,19},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{66,0,0,21,0,8,-1,1,2},{66,0,0,21,0,8,-1,1,4},{66,0,0,21,0,8,-1,1,4},{66,0,0,21,0,8,-1,1,4}}, + {{28,0,0,6,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,26,0,8,-1,1,24},{28,0,0,26,0,8,-1,1,24},{28,0,0,26,0,8,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,12,17,0,-1,1,24},{28,0,0,10,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24},{28,0,0,7,0,0,-1,1,24}}, + {{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24}}, + {{127,0,0,12,17,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,12,17,6,-1,1,24},{127,0,0,12,17,6,-1,1,24},{127,0,0,12,17,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,12,17,6,-1,1,24},{127,0,0,12,17,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,12,17,6,-1,1,24},{127,0,0,12,17,6,-1,1,24}}, + {{127,0,0,7,0,6,-1,1,24},{127,0,0,12,17,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{127,0,0,7,0,6,-1,1,24},{127,0,0,7,0,6,-1,1,24},{127,0,0,6,0,6,-1,1,24},{127,0,0,21,0,8,-1,1,24},{127,0,0,21,0,8,-1,1,24}}, + {{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,10,0,6,-1,1,9},{115,0,0,12,17,6,-1,1,9},{115,0,0,12,17,6,-1,1,9},{115,0,0,10,0,6,-1,1,9},{115,0,0,10,0,6,-1,1,9}}, + {{115,0,0,21,0,8,-1,1,4},{115,0,0,21,0,8,-1,1,4},{115,0,0,7,0,6,-1,1,2},{115,0,0,6,0,6,-1,1,2},{115,0,0,6,0,6,-1,1,2},{115,0,0,10,0,6,-1,1,9},{115,0,0,12,17,6,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{103,0,0,2,0,12,-1,1,0},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0}}, + {{103,0,0,2,0,12,-1,1,0},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{11,0,0,7,0,0,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2}}, + {{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{25,0,0,5,0,4,-1,1,2},{0,0,0,24,0,8,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2},{25,0,0,6,0,9,-1,1,2}}, + {{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,2,-1,1,2},{25,0,0,5,0,4,-1,1,2},{14,0,0,5,0,4,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2},{6,0,0,5,0,6,-1,1,2}}, + {{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2}}, + {{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,7,0,6,-1,1,2},{115,0,0,10,0,6,-1,1,9},{115,0,0,10,0,6,-1,1,9},{115,0,0,12,17,6,-1,1,9},{115,0,0,10,0,6,-1,1,9},{115,0,0,10,0,6,-1,1,9},{115,0,0,12,17,6,-1,1,9},{115,0,0,10,0,6,-1,1,9},{115,0,0,10,0,6,-1,1,9},{115,0,0,21,0,8,-1,1,4},{115,0,0,10,0,6,-1,1,9},{115,0,0,12,17,6,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{115,0,0,13,0,6,0,1,19},{115,0,0,13,0,6,1,1,19},{115,0,0,13,0,6,2,1,19},{115,0,0,13,0,6,3,1,19},{115,0,0,13,0,6,4,1,19},{115,0,0,13,0,6,5,1,19},{115,0,0,13,0,6,6,1,19},{115,0,0,13,0,6,7,1,19},{115,0,0,13,0,6,8,1,19},{115,0,0,13,0,6,9,1,19},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{18,0,1,7,0,0,-1,0,31},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32}}, + {{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,31},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32}}, + {{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32}}, + {{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,31},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32}}, + {{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,31},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32}}, + {{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{18,0,1,7,0,0,-1,0,32},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{18,0,0,7,0,4,-1,0,35},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34}}, + {{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{18,0,0,7,0,4,-1,0,34},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{103,0,0,4,0,12,-1,1,25},{103,0,0,4,0,12,-1,1,25},{103,0,0,4,0,12,-1,1,25},{103,0,0,4,0,12,-1,1,25},{103,0,0,4,0,12,-1,1,25},{103,0,0,4,0,12,-1,1,25},{103,0,0,4,0,12,-1,1,25},{103,0,0,4,0,12,-1,1,25},{103,0,0,4,0,12,-1,1,25},{103,0,0,4,0,12,-1,1,25},{103,0,0,4,0,12,-1,1,25},{103,0,0,4,0,12,-1,1,25},{103,0,0,4,0,12,-1,1,25},{103,0,0,4,0,12,-1,1,25},{103,0,0,4,0,12,-1,1,25},{103,0,0,4,0,12,-1,1,25}}, + {{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0}}, + {{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14}}, + {{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14}}, + {{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,0,-1,0,14}}, + {{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14}}, + {{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14}}, + {{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{17,0,1,7,0,9,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14}}, + {{25,0,0,5,0,9,-1,1,2},{25,0,0,5,0,9,-1,1,2},{25,0,0,5,0,9,-1,1,2},{25,0,0,5,0,9,-1,1,2},{25,0,0,5,0,9,-1,1,2},{25,0,0,5,0,9,-1,1,2},{25,0,0,5,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{3,0,0,5,0,9,-1,1,2},{3,0,0,5,0,9,-1,1,2},{3,0,0,5,0,9,-1,1,2},{3,0,0,5,0,9,-1,1,2},{3,0,0,5,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{19,0,0,7,1,9,-1,1,38},{19,0,0,12,17,3,-1,1,9},{19,0,0,7,1,9,-1,1,38}}, + {{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,25,3,9,-1,1,2},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38}}, + {{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{103,0,0,2,1,12,-1,1,0},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{103,0,0,2,1,12,-1,1,0},{19,0,0,7,1,9,-1,1,38},{103,0,0,2,1,12,-1,1,0}}, + {{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{103,0,0,2,1,12,-1,1,0},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{103,0,0,2,1,12,-1,1,0},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38},{19,0,0,7,1,9,-1,1,38}}, + {{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2}}, + {{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,24,13,8,-1,1,2},{2,0,0,24,13,8,-1,1,2},{2,0,0,24,13,8,-1,1,2},{2,0,0,24,13,8,-1,1,2},{2,0,0,24,13,8,-1,1,2},{2,0,0,24,13,8,-1,1,2},{2,0,0,24,13,8,-1,1,2},{2,0,0,24,13,8,-1,1,2},{2,0,0,24,13,8,-1,1,2},{2,0,0,24,13,8,-1,1,2},{2,0,0,24,13,8,-1,1,2},{2,0,0,24,13,8,-1,1,2},{2,0,0,24,13,8,-1,1,2},{2,0,0,24,13,8,-1,1,2}}, + {{2,0,0,24,13,8,-1,1,2},{2,0,0,24,13,8,-1,1,2},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0}}, + {{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2}}, + {{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{0,0,0,18,10,8,-1,1,8},{0,0,0,22,10,8,-1,1,20}}, + {{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2}}, + {{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0}}, + {{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,23,13,9,-1,1,21},{2,0,0,26,10,8,-1,1,2},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0}}, + {{1,0,0,12,17,10,-1,1,9},{1,0,0,12,17,10,-1,1,9},{1,0,0,12,17,10,-1,1,9},{1,0,0,12,17,10,-1,1,9},{1,0,0,12,17,10,-1,1,9},{1,0,0,12,17,10,-1,1,9},{1,0,0,12,17,10,-1,1,9},{1,0,0,12,17,10,-1,1,9},{1,0,0,12,17,10,-1,1,9},{1,0,0,12,17,10,-1,1,9},{1,0,0,12,17,10,-1,1,9},{1,0,0,12,17,10,-1,1,9},{1,0,0,12,17,10,-1,1,9},{1,0,0,12,17,10,-1,1,9},{1,0,0,12,17,10,-1,1,9},{1,0,0,12,17,10,-1,1,9}}, + {{0,0,1,21,10,9,-1,0,16},{0,0,1,21,10,9,-1,0,8},{0,0,1,21,10,9,-1,0,8},{0,0,1,21,10,9,-1,0,16},{0,0,1,21,10,9,-1,0,16},{0,0,1,21,10,9,-1,0,11},{0,0,1,21,10,9,-1,0,11},{0,0,1,22,10,9,-1,0,20},{0,0,1,18,10,9,-1,0,8},{0,0,1,21,10,9,-1,0,15},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{1,0,0,12,17,3,-1,1,9},{8,0,0,12,17,3,-1,1,9},{8,0,0,12,17,3,-1,1,9}}, + {{0,0,1,21,10,9,-1,0,14},{0,0,1,17,10,9,-1,0,14},{0,0,1,17,10,9,-1,0,14},{0,0,1,16,10,9,-1,0,14},{0,0,1,16,10,9,-1,0,14},{0,0,1,22,10,9,-1,0,20},{0,0,1,18,10,9,-1,0,8},{0,0,1,22,10,9,-1,0,20},{0,0,1,18,10,9,-1,0,8},{0,0,1,22,10,9,-1,0,20},{0,0,1,18,10,9,-1,0,8},{0,0,1,22,10,9,-1,0,20},{0,0,1,18,10,9,-1,0,8},{0,0,1,22,10,9,-1,0,20},{0,0,1,18,10,9,-1,0,8},{0,0,1,22,10,9,-1,0,20}}, + {{0,0,1,18,10,9,-1,0,8},{0,0,1,22,10,9,-1,0,20},{0,0,1,18,10,9,-1,0,8},{0,0,1,22,10,9,-1,0,20},{0,0,1,18,10,9,-1,0,8},{0,0,1,21,10,8,-1,0,14},{0,0,1,21,10,8,-1,0,14},{0,0,1,22,10,9,-1,0,20},{0,0,1,18,10,9,-1,0,8},{0,0,1,21,10,9,-1,1,14},{0,0,1,21,10,9,-1,1,14},{0,0,1,21,10,9,-1,1,14},{0,0,1,21,10,9,-1,1,14},{0,0,1,16,10,9,-1,1,14},{0,0,1,16,10,9,-1,1,14},{0,0,1,16,10,9,-1,1,14}}, + {{0,0,1,21,6,9,-1,2,8},{0,0,1,21,10,9,-1,2,14},{0,0,1,21,6,9,-1,2,8},{103,0,0,2,0,12,-1,0,0},{0,0,1,21,10,9,-1,0,18},{0,0,1,21,6,9,-1,0,18},{0,0,1,21,10,9,-1,0,11},{0,0,1,21,10,9,-1,0,11},{0,0,1,17,10,9,-1,1,14},{0,1,1,22,10,9,-1,3,20},{0,2,1,18,10,9,-1,3,8},{0,1,1,22,10,9,-1,3,20},{0,2,1,18,10,9,-1,3,8},{0,1,1,22,10,9,-1,3,20},{0,2,1,18,10,9,-1,3,8},{0,0,1,21,4,9,-1,0,14}}, + {{0,0,1,21,10,9,-1,0,14},{0,0,1,21,10,9,-1,0,14},{0,0,1,25,3,9,-1,0,14},{0,0,1,17,3,9,-1,1,14},{0,0,1,25,10,9,-1,1,14},{0,0,1,25,10,9,-1,1,14},{0,0,1,25,10,9,-1,1,14},{103,0,0,2,0,12,-1,0,0},{0,0,1,21,10,9,-1,0,14},{0,0,1,23,4,9,-1,0,22},{0,0,1,21,4,9,-1,0,21},{0,0,1,21,10,9,-1,0,14},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,3,-1,1,2},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2}}, + {{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{0,0,0,1,18,10,-1,1,30}}, + {{103,0,0,2,0,12,-1,1,0},{0,0,1,21,10,9,-1,2,11},{0,0,1,21,10,9,-1,0,14},{0,0,1,21,4,9,-1,0,14},{0,0,1,23,4,9,-1,0,22},{0,0,1,21,4,9,-1,0,21},{0,0,1,21,10,9,-1,0,14},{0,0,1,21,10,9,-1,0,14},{0,1,1,22,10,9,-1,3,20},{0,2,1,18,10,9,-1,3,8},{0,0,1,21,10,9,-1,0,14},{0,0,1,25,3,9,-1,0,14},{0,0,1,21,6,9,-1,2,8},{0,0,1,17,3,9,-1,1,14},{0,0,1,21,6,9,-1,2,8},{0,0,1,21,6,9,-1,0,14}}, + {{0,0,1,13,2,9,0,0,14},{0,0,1,13,2,9,1,0,14},{0,0,1,13,2,9,2,0,14},{0,0,1,13,2,9,3,0,14},{0,0,1,13,2,9,4,0,14},{0,0,1,13,2,9,5,0,14},{0,0,1,13,2,9,6,0,14},{0,0,1,13,2,9,7,0,14},{0,0,1,13,2,9,8,0,14},{0,0,1,13,2,9,9,0,14},{0,0,1,21,6,9,-1,3,18},{0,0,1,21,10,9,-1,3,18},{0,0,1,25,10,9,-1,1,14},{0,0,1,25,10,9,-1,1,14},{0,0,1,25,10,9,-1,1,14},{0,0,1,21,10,9,-1,2,11}}, + {{0,0,1,21,10,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14}}, + {{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{25,0,1,9,0,9,-1,0,14},{0,1,1,22,10,9,-1,3,20},{0,0,1,21,10,9,-1,0,14},{0,2,1,18,10,9,-1,3,8},{0,0,1,24,10,9,-1,0,14},{0,0,1,16,10,9,-1,3,14}}, + {{0,0,1,24,10,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14}}, + {{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{25,0,1,5,0,9,-1,0,14},{0,1,1,22,10,9,-1,3,20},{0,0,1,25,10,9,-1,3,14},{0,2,1,18,10,9,-1,3,8},{0,0,1,25,10,9,-1,3,14},{0,1,1,22,10,9,-1,3,20}}, + {{0,2,1,18,10,9,-1,3,8},{0,0,1,21,10,9,-1,1,8},{0,1,1,22,10,9,-1,1,20},{0,2,1,18,10,9,-1,1,8},{0,0,1,21,10,9,-1,1,8},{0,0,1,21,10,9,-1,1,18},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,37},{22,0,1,7,0,9,-1,1,37},{22,0,1,7,0,9,-1,1,37},{22,0,1,7,0,9,-1,1,37},{22,0,1,7,0,9,-1,1,37},{22,0,1,7,0,9,-1,1,37},{22,0,1,7,0,9,-1,1,37},{22,0,1,7,0,9,-1,1,37},{22,0,1,7,0,9,-1,1,37}}, + {{0,0,1,6,0,9,-1,1,37},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2}}, + {{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2}}, + {{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{22,0,1,7,0,9,-1,1,2},{0,0,1,6,0,9,-1,1,18},{0,0,1,6,0,9,-1,1,18}}, + {{18,0,1,7,0,10,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2}}, + {{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0}}, + {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2}}, + {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{18,0,1,7,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{0,0,1,23,4,9,-1,0,21},{0,0,1,23,4,9,-1,0,22},{0,0,1,25,10,9,-1,0,14},{0,0,1,24,10,9,-1,3,14},{0,0,1,26,10,9,-1,0,14},{0,0,1,23,4,9,-1,0,22},{0,0,1,23,4,9,-1,0,22},{103,0,0,2,0,12,-1,0,0},{0,0,1,26,10,9,-1,1,2},{0,0,1,25,10,9,-1,1,2},{0,0,1,25,10,9,-1,1,2},{0,0,1,25,10,9,-1,1,2},{0,0,1,25,10,9,-1,1,2},{0,0,1,26,10,9,-1,1,2},{0,0,1,26,10,9,-1,1,2},{103,0,0,2,0,12,-1,1,0}}, + {{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{0,0,0,1,10,8,-1,1,9},{0,0,0,1,10,8,-1,1,9},{0,0,0,1,10,8,-1,1,9},{0,0,0,26,10,8,-1,0,7},{0,0,0,26,10,8,-1,0,1},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2}}, + {{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2}}, + {{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2}}, + {{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{49,0,0,7,0,7,-1,1,2}}, + {{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{49,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{0,0,0,21,0,8,-1,1,4},{0,0,0,21,10,8,-1,1,4},{0,0,0,21,0,8,-1,1,4},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2}}, + {{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2}}, + {{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{0,0,0,15,0,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2}}, + {{14,0,0,14,10,4,-1,1,2},{14,0,0,14,10,4,-1,1,2},{14,0,0,14,10,4,-1,1,2},{14,0,0,14,10,4,-1,1,2},{14,0,0,14,10,4,-1,1,2},{14,0,0,14,10,4,-1,1,2},{14,0,0,14,10,4,-1,1,2},{14,0,0,14,10,4,-1,1,2},{14,0,0,14,10,4,-1,1,2},{14,0,0,14,10,4,-1,1,2},{14,0,0,14,10,4,-1,1,2},{14,0,0,14,10,4,-1,1,2},{14,0,0,14,10,4,-1,1,2},{14,0,0,14,10,4,-1,1,2},{14,0,0,14,10,4,-1,1,2},{14,0,0,14,10,4,-1,1,2}}, + {{14,0,0,14,10,4,-1,1,2},{14,0,0,14,10,4,-1,1,2},{14,0,0,14,10,4,-1,1,2},{14,0,0,14,10,4,-1,1,2},{14,0,0,14,10,4,-1,1,2},{14,0,0,15,10,8,-1,1,2},{14,0,0,15,10,8,-1,1,2},{14,0,0,15,10,8,-1,1,2},{14,0,0,15,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2}}, + {{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,15,10,8,-1,1,2},{14,0,0,15,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{14,0,0,26,10,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{0,0,0,26,0,8,-1,1,2},{1,0,0,12,17,7,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2}}, + {{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{107,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{104,0,0,7,0,7,-1,1,2},{104,0,0,7,0,7,-1,1,2},{104,0,0,7,0,7,-1,1,2},{104,0,0,7,0,7,-1,1,2},{104,0,0,7,0,7,-1,1,2},{104,0,0,7,0,7,-1,1,2},{104,0,0,7,0,7,-1,1,2},{104,0,0,7,0,7,-1,1,2},{104,0,0,7,0,7,-1,1,2},{104,0,0,7,0,7,-1,1,2},{104,0,0,7,0,7,-1,1,2},{104,0,0,7,0,7,-1,1,2},{104,0,0,7,0,7,-1,1,2},{104,0,0,7,0,7,-1,1,2},{104,0,0,7,0,7,-1,1,2},{104,0,0,7,0,7,-1,1,2}}, + {{104,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{1,0,0,12,17,4,-1,1,9},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2}}, + {{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{0,0,0,15,2,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{30,0,0,7,0,7,-1,1,2},{30,0,0,7,0,7,-1,1,2},{30,0,0,7,0,7,-1,1,2},{30,0,0,7,0,7,-1,1,2},{30,0,0,7,0,7,-1,1,2},{30,0,0,7,0,7,-1,1,2},{30,0,0,7,0,7,-1,1,2},{30,0,0,7,0,7,-1,1,2},{30,0,0,7,0,7,-1,1,2},{30,0,0,7,0,7,-1,1,2},{30,0,0,7,0,7,-1,1,2},{30,0,0,7,0,7,-1,1,2},{30,0,0,7,0,7,-1,1,2},{30,0,0,7,0,7,-1,1,2},{30,0,0,7,0,7,-1,1,2},{30,0,0,7,0,7,-1,1,2}}, + {{30,0,0,15,0,8,-1,1,2},{30,0,0,15,0,8,-1,1,2},{30,0,0,15,0,8,-1,1,2},{30,0,0,15,0,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2}}, + {{13,0,0,7,0,7,-1,1,2},{13,0,0,14,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,7,0,7,-1,1,2},{13,0,0,14,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2}}, + {{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2},{89,0,0,7,0,7,-1,1,2},{89,0,0,12,17,7,-1,1,9},{89,0,0,12,17,7,-1,1,9},{89,0,0,12,17,7,-1,1,9},{89,0,0,12,17,7,-1,1,9},{89,0,0,12,17,7,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2}}, + {{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{53,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{53,0,0,21,0,8,-1,1,4}}, + {{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2}}, + {{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2},{61,0,0,7,0,7,-1,1,2}}, + {{61,0,0,21,0,8,-1,1,4},{61,0,0,14,0,7,-1,1,2},{61,0,0,14,0,7,-1,1,2},{61,0,0,14,0,7,-1,1,2},{61,0,0,14,0,7,-1,1,2},{61,0,0,14,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2}}, + {{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,9,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2}}, + {{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2},{9,0,0,5,0,7,-1,1,2}}, + {{51,0,0,7,0,7,-1,1,2},{51,0,0,7,0,7,-1,1,2},{51,0,0,7,0,7,-1,1,2},{51,0,0,7,0,7,-1,1,2},{51,0,0,7,0,7,-1,1,2},{51,0,0,7,0,7,-1,1,2},{51,0,0,7,0,7,-1,1,2},{51,0,0,7,0,7,-1,1,2},{51,0,0,7,0,7,-1,1,2},{51,0,0,7,0,7,-1,1,2},{51,0,0,7,0,7,-1,1,2},{51,0,0,7,0,7,-1,1,2},{51,0,0,7,0,7,-1,1,2},{51,0,0,7,0,7,-1,1,2},{51,0,0,7,0,7,-1,1,2},{51,0,0,7,0,7,-1,1,2}}, + {{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2}}, + {{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{50,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{50,0,0,13,0,7,0,1,19},{50,0,0,13,0,7,1,1,19},{50,0,0,13,0,7,2,1,19},{50,0,0,13,0,7,3,1,19},{50,0,0,13,0,7,4,1,19},{50,0,0,13,0,7,5,1,19},{50,0,0,13,0,7,6,1,19},{50,0,0,13,0,7,7,1,19},{50,0,0,13,0,7,8,1,19},{50,0,0,13,0,7,9,1,19},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2}}, + {{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{136,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{159,0,0,7,0,7,-1,1,2},{159,0,0,7,0,7,-1,1,2},{159,0,0,7,0,7,-1,1,2},{159,0,0,7,0,7,-1,1,2},{159,0,0,7,0,7,-1,1,2},{159,0,0,7,0,7,-1,1,2},{159,0,0,7,0,7,-1,1,2},{159,0,0,7,0,7,-1,1,2},{159,0,0,7,0,7,-1,1,2},{159,0,0,7,0,7,-1,1,2},{159,0,0,7,0,7,-1,1,2},{159,0,0,7,0,7,-1,1,2},{159,0,0,7,0,7,-1,1,2},{159,0,0,7,0,7,-1,1,2},{159,0,0,7,0,7,-1,1,2},{159,0,0,7,0,7,-1,1,2}}, + {{159,0,0,7,0,7,-1,1,2},{159,0,0,7,0,7,-1,1,2},{159,0,0,7,0,7,-1,1,2},{159,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{159,0,0,21,0,8,-1,1,2}}, + {{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2}}, + {{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{83,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{47,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2}}, + {{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2}}, + {{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{47,0,0,7,1,7,-1,1,2},{47,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{47,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{47,0,0,7,1,7,-1,1,2}}, + {{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2}}, + {{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2},{116,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{116,0,0,21,1,8,-1,1,4},{116,0,0,15,1,8,-1,1,2},{116,0,0,15,1,8,-1,1,2},{116,0,0,15,1,8,-1,1,2},{116,0,0,15,1,8,-1,1,2},{116,0,0,15,1,8,-1,1,2},{116,0,0,15,1,8,-1,1,2},{116,0,0,15,1,8,-1,1,2},{116,0,0,15,1,8,-1,1,2}}, + {{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2}}, + {{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,7,1,7,-1,1,2},{144,0,0,26,1,8,-1,1,2},{144,0,0,26,1,8,-1,1,2},{144,0,0,15,1,8,-1,1,2},{144,0,0,15,1,8,-1,1,2},{144,0,0,15,1,8,-1,1,2},{144,0,0,15,1,8,-1,1,2},{144,0,0,15,1,8,-1,1,2},{144,0,0,15,1,8,-1,1,2},{144,0,0,15,1,8,-1,1,2}}, + {{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2}}, + {{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{143,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0}}, + {{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{143,0,0,15,1,8,-1,1,2},{143,0,0,15,1,8,-1,1,2},{143,0,0,15,1,8,-1,1,2},{143,0,0,15,1,8,-1,1,2},{143,0,0,15,1,8,-1,1,2},{143,0,0,15,1,8,-1,1,2},{143,0,0,15,1,8,-1,1,2},{143,0,0,15,1,8,-1,1,2},{143,0,0,15,1,8,-1,1,2}}, + {{162,0,0,7,1,7,-1,1,2},{162,0,0,7,1,7,-1,1,2},{162,0,0,7,1,7,-1,1,2},{162,0,0,7,1,7,-1,1,2},{162,0,0,7,1,7,-1,1,2},{162,0,0,7,1,7,-1,1,2},{162,0,0,7,1,7,-1,1,2},{162,0,0,7,1,7,-1,1,2},{162,0,0,7,1,7,-1,1,2},{162,0,0,7,1,7,-1,1,2},{162,0,0,7,1,7,-1,1,2},{162,0,0,7,1,7,-1,1,2},{162,0,0,7,1,7,-1,1,2},{162,0,0,7,1,7,-1,1,2},{162,0,0,7,1,7,-1,1,2},{162,0,0,7,1,7,-1,1,2}}, + {{162,0,0,7,1,7,-1,1,2},{162,0,0,7,1,7,-1,1,2},{162,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{162,0,0,7,1,7,-1,1,2},{162,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{162,0,0,15,1,8,-1,1,2},{162,0,0,15,1,8,-1,1,2},{162,0,0,15,1,8,-1,1,2},{162,0,0,15,1,8,-1,1,2},{162,0,0,15,1,8,-1,1,2}}, + {{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2}}, + {{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2},{91,0,0,7,1,7,-1,1,2},{91,0,0,15,1,8,-1,1,2},{91,0,0,15,1,8,-1,1,2},{91,0,0,15,1,8,-1,1,2},{91,0,0,15,1,8,-1,1,2},{91,0,0,15,1,8,-1,1,2},{91,0,0,15,1,8,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{91,0,0,21,10,8,-1,1,4}}, + {{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2}}, + {{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{108,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{108,0,0,21,1,8,-1,1,2}}, + {{86,0,0,7,1,7,-1,0,2},{86,0,0,7,1,7,-1,0,2},{86,0,0,7,1,7,-1,0,2},{86,0,0,7,1,7,-1,0,2},{86,0,0,7,1,7,-1,0,2},{86,0,0,7,1,7,-1,0,2},{86,0,0,7,1,7,-1,0,2},{86,0,0,7,1,7,-1,0,2},{86,0,0,7,1,7,-1,0,2},{86,0,0,7,1,7,-1,0,2},{86,0,0,7,1,7,-1,0,2},{86,0,0,7,1,7,-1,0,2},{86,0,0,7,1,7,-1,0,2},{86,0,0,7,1,7,-1,0,2},{86,0,0,7,1,7,-1,0,2},{86,0,0,7,1,7,-1,0,2}}, + {{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2}}, + {{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,7,1,7,-1,1,2},{141,0,0,7,1,7,-1,1,2}}, + {{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2}}, + {{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2},{141,0,0,15,1,8,-1,1,2}}, + {{57,0,0,7,1,7,-1,1,2},{57,0,0,12,17,7,-1,1,9},{57,0,0,12,17,7,-1,1,9},{57,0,0,12,17,7,-1,1,9},{103,0,0,2,1,12,-1,1,0},{57,0,0,12,17,7,-1,1,9},{57,0,0,12,17,7,-1,1,9},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{57,0,0,12,17,7,-1,1,9},{57,0,0,12,17,7,-1,1,9},{57,0,0,12,17,7,-1,1,9},{57,0,0,12,17,7,-1,1,9}}, + {{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2}}, + {{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2}}, + {{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{57,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{57,0,0,12,17,7,-1,1,9},{57,0,0,12,17,7,-1,1,9},{57,0,0,12,17,7,-1,1,9},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{57,0,0,12,17,7,-1,1,9}}, + {{57,0,0,15,1,8,1,1,2},{57,0,0,15,1,8,2,1,2},{57,0,0,15,1,8,3,1,2},{57,0,0,15,1,8,4,1,2},{57,0,0,15,1,8,-1,1,2},{57,0,0,15,1,8,-1,1,2},{57,0,0,15,1,8,-1,1,2},{57,0,0,15,1,8,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0}}, + {{57,0,0,21,1,8,-1,1,4},{57,0,0,21,1,8,-1,1,4},{57,0,0,21,1,8,-1,1,4},{57,0,0,21,1,8,-1,1,4},{57,0,0,21,1,8,-1,1,4},{57,0,0,21,1,8,-1,1,4},{57,0,0,21,1,8,-1,1,4},{57,0,0,21,1,8,-1,1,4},{57,0,0,21,1,8,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0}}, + {{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2}}, + {{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,7,1,7,-1,1,2},{133,0,0,15,1,8,-1,1,2},{133,0,0,15,1,8,-1,1,2},{133,0,0,21,1,8,-1,1,2}}, + {{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2}}, + {{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,7,1,7,-1,1,2},{142,0,0,15,1,8,-1,1,2},{142,0,0,15,1,8,-1,1,2},{142,0,0,15,1,8,-1,1,2}}, + {{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,26,1,8,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2}}, + {{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2}}, + {{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,7,1,7,-1,1,2},{121,0,0,12,17,7,-1,1,9},{121,0,0,12,17,7,-1,1,9},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{121,0,0,15,1,8,-1,1,2},{121,0,0,15,1,8,-1,1,2},{121,0,0,15,1,8,-1,1,2},{121,0,0,15,1,8,-1,1,2},{121,0,0,15,1,8,-1,1,2}}, + {{121,0,0,21,1,8,-1,1,4},{121,0,0,21,1,8,-1,1,4},{121,0,0,21,1,8,-1,1,4},{121,0,0,21,1,8,-1,1,4},{121,0,0,21,1,8,-1,1,4},{121,0,0,21,1,8,-1,1,4},{121,0,0,21,1,8,-1,1,15},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0}}, + {{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2}}, + {{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2},{117,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{117,0,0,21,10,8,-1,1,4},{117,0,0,21,10,8,-1,1,4},{117,0,0,21,10,8,-1,1,4},{117,0,0,21,10,8,-1,1,4},{117,0,0,21,10,8,-1,1,4},{117,0,0,21,10,8,-1,1,4},{117,0,0,21,10,8,-1,1,4}}, + {{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2}}, + {{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2},{125,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{125,0,0,15,1,8,-1,1,2},{125,0,0,15,1,8,-1,1,2},{125,0,0,15,1,8,-1,1,2},{125,0,0,15,1,8,-1,1,2},{125,0,0,15,1,8,-1,1,2},{125,0,0,15,1,8,-1,1,2},{125,0,0,15,1,8,-1,1,2},{125,0,0,15,1,8,-1,1,2}}, + {{122,0,0,7,1,7,-1,1,2},{122,0,0,7,1,7,-1,1,2},{122,0,0,7,1,7,-1,1,2},{122,0,0,7,1,7,-1,1,2},{122,0,0,7,1,7,-1,1,2},{122,0,0,7,1,7,-1,1,2},{122,0,0,7,1,7,-1,1,2},{122,0,0,7,1,7,-1,1,2},{122,0,0,7,1,7,-1,1,2},{122,0,0,7,1,7,-1,1,2},{122,0,0,7,1,7,-1,1,2},{122,0,0,7,1,7,-1,1,2},{122,0,0,7,1,7,-1,1,2},{122,0,0,7,1,7,-1,1,2},{122,0,0,7,1,7,-1,1,2},{122,0,0,7,1,7,-1,1,2}}, + {{122,0,0,7,1,7,-1,1,2},{122,0,0,7,1,7,-1,1,2},{122,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{122,0,0,15,1,8,-1,1,2},{122,0,0,15,1,8,-1,1,2},{122,0,0,15,1,8,-1,1,2},{122,0,0,15,1,8,-1,1,2},{122,0,0,15,1,8,-1,1,2},{122,0,0,15,1,8,-1,1,2},{122,0,0,15,1,8,-1,1,2},{122,0,0,15,1,8,-1,1,2}}, + {{123,0,0,7,1,7,-1,1,2},{123,0,0,7,1,7,-1,1,2},{123,0,0,7,1,7,-1,1,2},{123,0,0,7,1,7,-1,1,2},{123,0,0,7,1,7,-1,1,2},{123,0,0,7,1,7,-1,1,2},{123,0,0,7,1,7,-1,1,2},{123,0,0,7,1,7,-1,1,2},{123,0,0,7,1,7,-1,1,2},{123,0,0,7,1,7,-1,1,2},{123,0,0,7,1,7,-1,1,2},{123,0,0,7,1,7,-1,1,2},{123,0,0,7,1,7,-1,1,2},{123,0,0,7,1,7,-1,1,2},{123,0,0,7,1,7,-1,1,2},{123,0,0,7,1,7,-1,1,2}}, + {{123,0,0,7,1,7,-1,1,2},{123,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{123,0,0,21,1,8,-1,1,2},{123,0,0,21,1,8,-1,1,2},{123,0,0,21,1,8,-1,1,2},{123,0,0,21,1,8,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0}}, + {{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{123,0,0,15,1,8,-1,1,2},{123,0,0,15,1,8,-1,1,2},{123,0,0,15,1,8,-1,1,2},{123,0,0,15,1,8,-1,1,2},{123,0,0,15,1,8,-1,1,2},{123,0,0,15,1,8,-1,1,2},{123,0,0,15,1,8,-1,1,2}}, + {{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2}}, + {{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{88,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0}}, + {{76,0,0,9,1,7,-1,1,2},{76,0,0,9,1,7,-1,1,2},{76,0,0,9,1,7,-1,1,2},{76,0,0,9,1,7,-1,1,2},{76,0,0,9,1,7,-1,1,2},{76,0,0,9,1,7,-1,1,2},{76,0,0,9,1,7,-1,1,2},{76,0,0,9,1,7,-1,1,2},{76,0,0,9,1,7,-1,1,2},{76,0,0,9,1,7,-1,1,2},{76,0,0,9,1,7,-1,1,2},{76,0,0,9,1,7,-1,1,2},{76,0,0,9,1,7,-1,1,2},{76,0,0,9,1,7,-1,1,2},{76,0,0,9,1,7,-1,1,2},{76,0,0,9,1,7,-1,1,2}}, + {{76,0,0,9,1,7,-1,1,2},{76,0,0,9,1,7,-1,1,2},{76,0,0,9,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0}}, + {{76,0,0,5,1,7,-1,1,2},{76,0,0,5,1,7,-1,1,2},{76,0,0,5,1,7,-1,1,2},{76,0,0,5,1,7,-1,1,2},{76,0,0,5,1,7,-1,1,2},{76,0,0,5,1,7,-1,1,2},{76,0,0,5,1,7,-1,1,2},{76,0,0,5,1,7,-1,1,2},{76,0,0,5,1,7,-1,1,2},{76,0,0,5,1,7,-1,1,2},{76,0,0,5,1,7,-1,1,2},{76,0,0,5,1,7,-1,1,2},{76,0,0,5,1,7,-1,1,2},{76,0,0,5,1,7,-1,1,2},{76,0,0,5,1,7,-1,1,2},{76,0,0,5,1,7,-1,1,2}}, + {{76,0,0,5,1,7,-1,1,2},{76,0,0,5,1,7,-1,1,2},{76,0,0,5,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{76,0,0,15,1,8,-1,1,2},{76,0,0,15,1,8,-1,1,2},{76,0,0,15,1,8,-1,1,2},{76,0,0,15,1,8,-1,1,2},{76,0,0,15,1,8,-1,1,2},{76,0,0,15,1,8,-1,1,2}}, + {{2,0,0,15,5,8,1,1,2},{2,0,0,15,5,8,2,1,2},{2,0,0,15,5,8,3,1,2},{2,0,0,15,5,8,4,1,2},{2,0,0,15,5,8,5,1,2},{2,0,0,15,5,8,6,1,2},{2,0,0,15,5,8,7,1,2},{2,0,0,15,5,8,8,1,2},{2,0,0,15,5,8,9,1,2},{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2}}, + {{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2},{2,0,0,15,5,8,-1,1,2},{103,0,0,2,1,12,-1,1,0}}, + {{65,0,0,10,0,7,-1,1,9},{65,0,0,12,17,7,-1,1,9},{65,0,0,10,0,7,-1,1,9},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2}}, + {{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2}}, + {{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,7,0,7,-1,1,2},{65,0,0,12,17,7,-1,1,9},{65,0,0,12,17,7,-1,1,9},{65,0,0,12,17,7,-1,1,9},{65,0,0,12,17,7,-1,1,9},{65,0,0,12,17,7,-1,1,9},{65,0,0,12,17,7,-1,1,9},{65,0,0,12,17,7,-1,1,9},{65,0,0,12,17,7,-1,1,9}}, + {{65,0,0,12,17,7,-1,1,9},{65,0,0,12,17,7,-1,1,9},{65,0,0,12,17,7,-1,1,9},{65,0,0,12,17,7,-1,1,9},{65,0,0,12,17,7,-1,1,9},{65,0,0,12,17,7,-1,1,9},{65,0,0,12,17,7,-1,1,9},{65,0,0,21,0,8,-1,1,4},{65,0,0,21,0,8,-1,1,4},{65,0,0,21,0,8,-1,1,2},{65,0,0,21,0,8,-1,1,2},{65,0,0,21,0,8,-1,1,2},{65,0,0,21,0,8,-1,1,2},{65,0,0,21,0,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{65,0,0,15,10,8,1,1,2},{65,0,0,15,10,8,2,1,2},{65,0,0,15,10,8,3,1,2},{65,0,0,15,10,8,4,1,2},{65,0,0,15,10,8,5,1,2},{65,0,0,15,10,8,6,1,2},{65,0,0,15,10,8,7,1,2},{65,0,0,15,10,8,8,1,2},{65,0,0,15,10,8,9,1,2},{65,0,0,15,10,8,-1,1,2},{65,0,0,15,10,8,-1,1,2},{65,0,0,15,10,8,-1,1,2},{65,0,0,15,10,8,-1,1,2},{65,0,0,15,10,8,-1,1,2}}, + {{65,0,0,15,10,8,-1,1,2},{65,0,0,15,10,8,-1,1,2},{65,0,0,15,10,8,-1,1,2},{65,0,0,15,10,8,-1,1,2},{65,0,0,15,10,8,-1,1,2},{65,0,0,15,10,8,-1,1,2},{65,0,0,13,0,7,0,1,19},{65,0,0,13,0,7,1,1,19},{65,0,0,13,0,7,2,1,19},{65,0,0,13,0,7,3,1,19},{65,0,0,13,0,7,4,1,19},{65,0,0,13,0,7,5,1,19},{65,0,0,13,0,7,6,1,19},{65,0,0,13,0,7,7,1,19},{65,0,0,13,0,7,8,1,19},{65,0,0,13,0,7,9,1,19}}, + {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{65,0,0,12,17,7,-1,1,9}}, + {{120,0,0,12,17,7,-1,1,9},{120,0,0,12,17,7,-1,1,9},{120,0,0,10,0,7,-1,1,9},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2}}, + {{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2},{120,0,0,7,0,7,-1,1,2}}, + {{120,0,0,10,0,7,-1,1,9},{120,0,0,10,0,7,-1,1,9},{120,0,0,10,0,7,-1,1,9},{120,0,0,12,17,7,-1,1,9},{120,0,0,12,17,7,-1,1,9},{120,0,0,12,17,7,-1,1,9},{120,0,0,12,17,7,-1,1,9},{120,0,0,10,0,7,-1,1,9},{120,0,0,10,0,7,-1,1,9},{120,0,0,12,17,7,-1,1,9},{120,0,0,12,17,7,-1,1,9},{120,0,0,21,0,8,-1,1,2},{120,0,0,21,0,8,-1,1,2},{120,0,0,1,0,8,-1,1,2},{120,0,0,21,0,8,-1,1,4},{120,0,0,21,0,8,-1,1,4}}, + {{120,0,0,21,0,8,-1,1,4},{120,0,0,21,0,8,-1,1,4},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2}}, + {{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{152,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{152,0,0,13,0,7,0,1,19},{152,0,0,13,0,7,1,1,19},{152,0,0,13,0,7,2,1,19},{152,0,0,13,0,7,3,1,19},{152,0,0,13,0,7,4,1,19},{152,0,0,13,0,7,5,1,19},{152,0,0,13,0,7,6,1,19},{152,0,0,13,0,7,7,1,19},{152,0,0,13,0,7,8,1,19},{152,0,0,13,0,7,9,1,19},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{118,0,0,12,17,6,-1,1,9},{118,0,0,12,17,6,-1,1,9},{118,0,0,12,17,6,-1,1,9},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2}}, + {{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2}}, + {{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,7,0,6,-1,1,2},{118,0,0,12,17,6,-1,1,9},{118,0,0,12,17,6,-1,1,9},{118,0,0,12,17,6,-1,1,9},{118,0,0,12,17,6,-1,1,9},{118,0,0,12,17,6,-1,1,9},{118,0,0,10,0,6,-1,1,9},{118,0,0,12,17,6,-1,1,9},{118,0,0,12,17,6,-1,1,9},{118,0,0,12,17,6,-1,1,9}}, + {{118,0,0,12,17,6,-1,1,9},{118,0,0,12,17,6,-1,1,9},{118,0,0,12,17,6,-1,1,9},{118,0,0,12,17,6,-1,1,9},{118,0,0,12,17,6,-1,1,9},{103,0,0,2,0,12,-1,1,0},{118,0,0,13,0,6,0,1,19},{118,0,0,13,0,6,1,1,19},{118,0,0,13,0,6,2,1,19},{118,0,0,13,0,6,3,1,19},{118,0,0,13,0,6,4,1,19},{118,0,0,13,0,6,5,1,19},{118,0,0,13,0,6,6,1,19},{118,0,0,13,0,6,7,1,19},{118,0,0,13,0,6,8,1,19},{118,0,0,13,0,6,9,1,19}}, + {{118,0,0,21,0,8,-1,1,4},{118,0,0,21,0,8,-1,1,4},{118,0,0,21,0,8,-1,1,4},{118,0,0,21,0,8,-1,1,4},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{160,0,0,7,0,7,-1,1,2},{160,0,0,7,0,7,-1,1,2},{160,0,0,7,0,7,-1,1,2},{160,0,0,7,0,7,-1,1,2},{160,0,0,7,0,7,-1,1,2},{160,0,0,7,0,7,-1,1,2},{160,0,0,7,0,7,-1,1,2},{160,0,0,7,0,7,-1,1,2},{160,0,0,7,0,7,-1,1,2},{160,0,0,7,0,7,-1,1,2},{160,0,0,7,0,7,-1,1,2},{160,0,0,7,0,7,-1,1,2},{160,0,0,7,0,7,-1,1,2},{160,0,0,7,0,7,-1,1,2},{160,0,0,7,0,7,-1,1,2},{160,0,0,7,0,7,-1,1,2}}, + {{160,0,0,7,0,7,-1,1,2},{160,0,0,7,0,7,-1,1,2},{160,0,0,7,0,7,-1,1,2},{160,0,0,12,17,7,-1,1,9},{160,0,0,21,0,8,-1,1,2},{160,0,0,21,0,8,-1,1,5},{160,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{151,0,0,12,17,7,-1,1,9},{151,0,0,12,17,7,-1,1,9},{151,0,0,10,0,7,-1,1,9},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2}}, + {{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2}}, + {{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,10,0,7,-1,1,9},{151,0,0,10,0,7,-1,1,9},{151,0,0,10,0,7,-1,1,9},{151,0,0,12,17,7,-1,1,9},{151,0,0,12,17,7,-1,1,9},{151,0,0,12,17,7,-1,1,9},{151,0,0,12,17,7,-1,1,9},{151,0,0,12,17,7,-1,1,9},{151,0,0,12,17,7,-1,1,9},{151,0,0,12,17,7,-1,1,9},{151,0,0,12,17,7,-1,1,9},{151,0,0,12,17,7,-1,1,9},{151,0,0,10,0,7,-1,1,9}}, + {{151,0,0,10,0,7,-1,1,9},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,7,0,7,-1,1,2},{151,0,0,21,0,8,-1,1,4},{151,0,0,21,0,8,-1,1,4},{151,0,0,21,0,8,-1,1,2},{151,0,0,21,0,8,-1,1,4},{151,0,0,21,0,8,-1,1,2},{151,0,0,12,17,7,-1,1,9},{151,0,0,12,17,7,-1,1,9},{151,0,0,12,17,7,-1,1,9},{151,0,0,21,0,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{151,0,0,13,0,7,0,1,19},{151,0,0,13,0,7,1,1,19},{151,0,0,13,0,7,2,1,19},{151,0,0,13,0,7,3,1,19},{151,0,0,13,0,7,4,1,19},{151,0,0,13,0,7,5,1,19},{151,0,0,13,0,7,6,1,19},{151,0,0,13,0,7,7,1,19},{151,0,0,13,0,7,8,1,19},{151,0,0,13,0,7,9,1,19},{151,0,0,7,0,7,-1,1,2},{151,0,0,21,0,8,-1,1,5},{151,0,0,7,0,7,-1,1,2},{151,0,0,21,0,8,-1,1,4},{151,0,0,21,0,8,-1,1,4},{151,0,0,21,0,8,-1,1,4}}, + {{103,0,0,2,0,12,-1,1,0},{33,0,0,15,0,8,-1,1,2},{33,0,0,15,0,8,-1,1,2},{33,0,0,15,0,8,-1,1,2},{33,0,0,15,0,8,-1,1,2},{33,0,0,15,0,8,-1,1,2},{33,0,0,15,0,8,-1,1,2},{33,0,0,15,0,8,-1,1,2},{33,0,0,15,0,8,-1,1,2},{33,0,0,15,0,8,-1,1,2},{33,0,0,15,0,8,-1,1,2},{33,0,0,15,0,8,-1,1,2},{33,0,0,15,0,8,-1,1,2},{33,0,0,15,0,8,-1,1,2},{33,0,0,15,0,8,-1,1,2},{33,0,0,15,0,8,-1,1,2}}, + {{33,0,0,15,0,8,-1,1,2},{33,0,0,15,0,8,-1,1,2},{33,0,0,15,0,8,-1,1,2},{33,0,0,15,0,8,-1,1,2},{33,0,0,15,0,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2}}, + {{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2}}, + {{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,7,0,7,-1,1,2},{157,0,0,10,0,7,-1,1,9},{157,0,0,10,0,7,-1,1,9},{157,0,0,10,0,7,-1,1,9},{157,0,0,12,17,7,-1,1,9}}, + {{157,0,0,12,17,7,-1,1,9},{157,0,0,12,17,7,-1,1,9},{157,0,0,10,0,7,-1,1,9},{157,0,0,10,0,7,-1,1,9},{157,0,0,12,17,7,-1,1,9},{157,0,0,10,0,7,-1,1,9},{157,0,0,12,17,7,-1,1,9},{157,0,0,12,17,7,-1,1,9},{157,0,0,21,0,8,-1,1,4},{157,0,0,21,0,8,-1,1,4},{157,0,0,21,0,8,-1,1,2},{157,0,0,21,0,8,-1,1,4},{157,0,0,21,0,8,-1,1,4},{157,0,0,21,0,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{164,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{164,0,0,7,0,7,-1,1,2}}, + {{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{164,0,0,7,0,7,-1,1,2}}, + {{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,7,0,7,-1,1,2},{164,0,0,21,0,8,-1,1,4},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2}}, + {{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,7,0,7,-1,1,2},{145,0,0,12,17,7,-1,1,9}}, + {{145,0,0,10,0,7,-1,1,9},{145,0,0,10,0,7,-1,1,9},{145,0,0,10,0,7,-1,1,9},{145,0,0,12,17,7,-1,1,9},{145,0,0,12,17,7,-1,1,9},{145,0,0,12,17,7,-1,1,9},{145,0,0,12,17,7,-1,1,9},{145,0,0,12,17,7,-1,1,9},{145,0,0,12,17,7,-1,1,9},{145,0,0,12,17,7,-1,1,9},{145,0,0,12,17,7,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{145,0,0,13,0,7,0,1,19},{145,0,0,13,0,7,1,1,19},{145,0,0,13,0,7,2,1,19},{145,0,0,13,0,7,3,1,19},{145,0,0,13,0,7,4,1,19},{145,0,0,13,0,7,5,1,19},{145,0,0,13,0,7,6,1,19},{145,0,0,13,0,7,7,1,19},{145,0,0,13,0,7,8,1,19},{145,0,0,13,0,7,9,1,19},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{137,0,0,12,17,7,-1,1,9},{137,0,0,12,17,7,-1,1,9},{137,0,0,10,0,7,-1,1,9},{137,0,0,10,0,7,-1,1,9},{103,0,0,2,0,12,-1,1,0},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{137,0,0,7,0,7,-1,1,2}}, + {{137,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2}}, + {{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2}}, + {{137,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{137,0,0,12,17,7,-1,1,9},{137,0,0,7,0,7,-1,1,2},{137,0,0,10,0,7,-1,1,9},{137,0,0,10,0,7,-1,1,9}}, + {{137,0,0,12,17,7,-1,1,9},{137,0,0,10,0,7,-1,1,9},{137,0,0,10,0,7,-1,1,9},{137,0,0,10,0,7,-1,1,9},{137,0,0,10,0,7,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{137,0,0,10,0,7,-1,1,9},{137,0,0,10,0,7,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{137,0,0,10,0,7,-1,1,9},{137,0,0,10,0,7,-1,1,9},{137,0,0,10,0,7,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{137,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{137,0,0,10,0,7,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2}}, + {{137,0,0,7,0,7,-1,1,2},{137,0,0,7,0,7,-1,1,2},{137,0,0,10,0,7,-1,1,9},{137,0,0,10,0,7,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{137,0,0,12,17,7,-1,1,9},{137,0,0,12,17,7,-1,1,9},{137,0,0,12,17,7,-1,1,9},{137,0,0,12,17,7,-1,1,9},{137,0,0,12,17,7,-1,1,9},{137,0,0,12,17,7,-1,1,9},{137,0,0,12,17,7,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{137,0,0,12,17,7,-1,1,9},{137,0,0,12,17,7,-1,1,9},{137,0,0,12,17,7,-1,1,9},{137,0,0,12,17,7,-1,1,9},{137,0,0,12,17,7,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{158,0,0,7,0,7,-1,1,2},{158,0,0,7,0,7,-1,1,2},{158,0,0,7,0,7,-1,1,2},{158,0,0,7,0,7,-1,1,2},{158,0,0,7,0,7,-1,1,2},{158,0,0,7,0,7,-1,1,2},{158,0,0,7,0,7,-1,1,2},{158,0,0,7,0,7,-1,1,2},{158,0,0,7,0,7,-1,1,2},{158,0,0,7,0,7,-1,1,2},{158,0,0,7,0,7,-1,1,2},{158,0,0,7,0,7,-1,1,2},{158,0,0,7,0,7,-1,1,2},{158,0,0,7,0,7,-1,1,2},{158,0,0,7,0,7,-1,1,2},{158,0,0,7,0,7,-1,1,2}}, + {{158,0,0,10,0,7,-1,1,9},{158,0,0,10,0,7,-1,1,9},{158,0,0,10,0,7,-1,1,9},{158,0,0,12,17,7,-1,1,9},{158,0,0,12,17,7,-1,1,9},{158,0,0,12,17,7,-1,1,9},{158,0,0,12,17,7,-1,1,9},{158,0,0,12,17,7,-1,1,9},{158,0,0,12,17,7,-1,1,9},{158,0,0,10,0,7,-1,1,9},{158,0,0,12,17,7,-1,1,9},{158,0,0,10,0,7,-1,1,9},{158,0,0,10,0,7,-1,1,9},{158,0,0,10,0,7,-1,1,9},{158,0,0,10,0,7,-1,1,9},{158,0,0,12,17,7,-1,1,9}}, + {{158,0,0,12,17,7,-1,1,9},{158,0,0,10,0,7,-1,1,9},{158,0,0,12,17,7,-1,1,9},{158,0,0,12,17,7,-1,1,9},{158,0,0,7,0,7,-1,1,2},{158,0,0,7,0,7,-1,1,2},{158,0,0,21,0,8,-1,1,2},{158,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{158,0,0,13,0,7,0,1,19},{158,0,0,13,0,7,1,1,19},{158,0,0,13,0,7,2,1,19},{158,0,0,13,0,7,3,1,19},{158,0,0,13,0,7,4,1,19},{158,0,0,13,0,7,5,1,19},{158,0,0,13,0,7,6,1,19},{158,0,0,13,0,7,7,1,19},{158,0,0,13,0,7,8,1,19},{158,0,0,13,0,7,9,1,19},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2}}, + {{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,10,0,7,-1,0,9}}, + {{166,0,0,10,0,7,-1,0,9},{166,0,0,10,0,7,-1,0,9},{166,0,0,12,17,7,-1,0,9},{166,0,0,12,17,7,-1,0,9},{166,0,0,12,17,7,-1,0,9},{166,0,0,12,17,7,-1,0,9},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{166,0,0,10,0,7,-1,0,9},{166,0,0,10,0,7,-1,0,9},{166,0,0,10,0,7,-1,0,9},{166,0,0,10,0,7,-1,0,9},{166,0,0,12,17,7,-1,0,9},{166,0,0,12,17,7,-1,0,9},{166,0,0,10,0,7,-1,0,9},{166,0,0,12,17,7,-1,0,9}}, + {{166,0,0,12,17,7,-1,0,9},{166,0,0,21,0,8,-1,0,5},{166,0,0,21,0,8,-1,0,4},{166,0,0,21,0,8,-1,0,4},{166,0,0,21,0,8,-1,0,11},{166,0,0,21,0,8,-1,0,11},{166,0,0,21,0,8,-1,0,2},{166,0,0,21,0,8,-1,0,2},{166,0,0,21,0,8,-1,0,2},{166,0,0,21,0,8,-1,0,4},{166,0,0,21,0,8,-1,0,4},{166,0,0,21,0,8,-1,0,4},{166,0,0,21,0,8,-1,0,4},{166,0,0,21,0,8,-1,0,4},{166,0,0,21,0,8,-1,0,4},{166,0,0,21,0,8,-1,0,4}}, + {{166,0,0,21,0,8,-1,0,4},{166,0,0,21,0,8,-1,0,4},{166,0,0,21,0,8,-1,0,4},{166,0,0,21,0,8,-1,0,4},{166,0,0,21,0,8,-1,0,4},{166,0,0,21,0,8,-1,0,4},{166,0,0,21,0,8,-1,0,4},{166,0,0,21,0,8,-1,0,4},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,7,0,7,-1,0,2},{166,0,0,12,17,7,-1,0,9},{166,0,0,12,17,7,-1,0,9},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{163,0,0,7,0,7,-1,1,2},{163,0,0,7,0,7,-1,1,2},{163,0,0,7,0,7,-1,1,2},{163,0,0,7,0,7,-1,1,2},{163,0,0,7,0,7,-1,1,2},{163,0,0,7,0,7,-1,1,2},{163,0,0,7,0,7,-1,1,2},{163,0,0,7,0,7,-1,1,2},{163,0,0,7,0,7,-1,1,2},{163,0,0,7,0,7,-1,1,2},{163,0,0,7,0,7,-1,1,2},{163,0,0,7,0,7,-1,1,2},{163,0,0,7,0,7,-1,1,2},{163,0,0,7,0,7,-1,1,2},{163,0,0,7,0,7,-1,1,2},{163,0,0,7,0,7,-1,1,2}}, + {{163,0,0,10,0,7,-1,1,9},{163,0,0,10,0,7,-1,1,9},{163,0,0,10,0,7,-1,1,9},{163,0,0,12,17,7,-1,1,9},{163,0,0,12,17,7,-1,1,9},{163,0,0,12,17,7,-1,1,9},{163,0,0,12,17,7,-1,1,9},{163,0,0,12,17,7,-1,1,9},{163,0,0,12,17,7,-1,1,9},{163,0,0,12,17,7,-1,1,9},{163,0,0,12,17,7,-1,1,9},{163,0,0,10,0,7,-1,1,9},{163,0,0,10,0,7,-1,1,9},{163,0,0,12,17,7,-1,1,9},{163,0,0,10,0,7,-1,1,9},{163,0,0,12,17,7,-1,1,9}}, + {{163,0,0,12,17,7,-1,1,9},{163,0,0,21,0,8,-1,1,4},{163,0,0,21,0,8,-1,1,4},{163,0,0,21,0,8,-1,1,2},{163,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{163,0,0,13,0,7,0,1,19},{163,0,0,13,0,7,1,1,19},{163,0,0,13,0,7,2,1,19},{163,0,0,13,0,7,3,1,19},{163,0,0,13,0,7,4,1,19},{163,0,0,13,0,7,5,1,19},{163,0,0,13,0,7,6,1,19},{163,0,0,13,0,7,7,1,19},{163,0,0,13,0,7,8,1,19},{163,0,0,13,0,7,9,1,19},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2}}, + {{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,7,0,7,-1,1,2},{153,0,0,12,17,7,-1,1,9},{153,0,0,10,0,7,-1,1,9},{153,0,0,12,17,7,-1,1,9},{153,0,0,10,0,7,-1,1,9},{153,0,0,10,0,7,-1,1,9}}, + {{153,0,0,12,17,7,-1,1,9},{153,0,0,12,17,7,-1,1,9},{153,0,0,12,17,7,-1,1,9},{153,0,0,12,17,7,-1,1,9},{153,0,0,12,17,7,-1,1,9},{153,0,0,12,17,7,-1,1,9},{153,0,0,10,0,7,-1,1,9},{153,0,0,12,17,7,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{153,0,0,13,0,7,0,1,19},{153,0,0,13,0,7,1,1,19},{153,0,0,13,0,7,2,1,19},{153,0,0,13,0,7,3,1,19},{153,0,0,13,0,7,4,1,19},{153,0,0,13,0,7,5,1,19},{153,0,0,13,0,7,6,1,19},{153,0,0,13,0,7,7,1,19},{153,0,0,13,0,7,8,1,19},{153,0,0,13,0,7,9,1,19},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24}}, + {{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{161,0,0,7,0,7,-1,1,24},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{161,0,0,12,17,7,-1,1,24},{161,0,0,12,17,7,-1,1,24},{161,0,0,12,17,7,-1,1,24}}, + {{161,0,0,10,0,7,-1,1,24},{161,0,0,10,0,7,-1,1,24},{161,0,0,12,17,7,-1,1,24},{161,0,0,12,17,7,-1,1,24},{161,0,0,12,17,7,-1,1,24},{161,0,0,12,17,7,-1,1,24},{161,0,0,10,0,7,-1,1,24},{161,0,0,12,17,7,-1,1,24},{161,0,0,12,17,7,-1,1,24},{161,0,0,12,17,7,-1,1,24},{161,0,0,12,17,7,-1,1,24},{161,0,0,12,17,7,-1,1,24},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{161,0,0,13,0,7,0,1,19},{161,0,0,13,0,7,1,1,19},{161,0,0,13,0,7,2,1,19},{161,0,0,13,0,7,3,1,19},{161,0,0,13,0,7,4,1,19},{161,0,0,13,0,7,5,1,19},{161,0,0,13,0,7,6,1,19},{161,0,0,13,0,7,7,1,19},{161,0,0,13,0,7,8,1,19},{161,0,0,13,0,7,9,1,19},{161,0,0,15,0,8,-1,1,24},{161,0,0,15,0,8,-1,1,24},{161,0,0,21,0,8,-1,1,4},{161,0,0,21,0,8,-1,1,4},{161,0,0,21,0,8,-1,1,4},{161,0,0,26,0,8,-1,1,24}}, + {{146,0,0,9,0,7,-1,1,2},{146,0,0,9,0,7,-1,1,2},{146,0,0,9,0,7,-1,1,2},{146,0,0,9,0,7,-1,1,2},{146,0,0,9,0,7,-1,1,2},{146,0,0,9,0,7,-1,1,2},{146,0,0,9,0,7,-1,1,2},{146,0,0,9,0,7,-1,1,2},{146,0,0,9,0,7,-1,1,2},{146,0,0,9,0,7,-1,1,2},{146,0,0,9,0,7,-1,1,2},{146,0,0,9,0,7,-1,1,2},{146,0,0,9,0,7,-1,1,2},{146,0,0,9,0,7,-1,1,2},{146,0,0,9,0,7,-1,1,2},{146,0,0,9,0,7,-1,1,2}}, + {{146,0,0,5,0,7,-1,1,2},{146,0,0,5,0,7,-1,1,2},{146,0,0,5,0,7,-1,1,2},{146,0,0,5,0,7,-1,1,2},{146,0,0,5,0,7,-1,1,2},{146,0,0,5,0,7,-1,1,2},{146,0,0,5,0,7,-1,1,2},{146,0,0,5,0,7,-1,1,2},{146,0,0,5,0,7,-1,1,2},{146,0,0,5,0,7,-1,1,2},{146,0,0,5,0,7,-1,1,2},{146,0,0,5,0,7,-1,1,2},{146,0,0,5,0,7,-1,1,2},{146,0,0,5,0,7,-1,1,2},{146,0,0,5,0,7,-1,1,2},{146,0,0,5,0,7,-1,1,2}}, + {{146,0,0,13,0,7,0,1,19},{146,0,0,13,0,7,1,1,19},{146,0,0,13,0,7,2,1,19},{146,0,0,13,0,7,3,1,19},{146,0,0,13,0,7,4,1,19},{146,0,0,13,0,7,5,1,19},{146,0,0,13,0,7,6,1,19},{146,0,0,13,0,7,7,1,19},{146,0,0,13,0,7,8,1,19},{146,0,0,13,0,7,9,1,19},{146,0,0,15,0,8,-1,1,2},{146,0,0,15,0,8,-1,1,2},{146,0,0,15,0,8,-1,1,2},{146,0,0,15,0,8,-1,1,2},{146,0,0,15,0,8,-1,1,2},{146,0,0,15,0,8,-1,1,2}}, + {{146,0,0,15,0,8,-1,1,2},{146,0,0,15,0,8,-1,1,2},{146,0,0,15,0,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{146,0,0,7,0,7,-1,1,2}}, + {{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2}}, + {{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{165,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2}}, + {{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2}}, + {{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{101,0,0,14,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0}}, + {{101,0,0,21,0,8,-1,1,4},{101,0,0,21,0,8,-1,1,4},{101,0,0,21,0,8,-1,1,4},{101,0,0,21,0,8,-1,1,4},{101,0,0,21,0,8,-1,1,4},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{101,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2}}, + {{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,20},{71,0,0,7,0,7,-1,0,20},{71,0,0,7,0,7,-1,0,20},{71,0,0,7,0,7,-1,0,8},{71,0,0,7,0,7,-1,0,8},{71,0,0,7,0,7,-1,0,8},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2}}, + {{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,8},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,20},{71,0,0,7,0,7,-1,0,8},{71,0,0,7,0,7,-1,0,20},{71,0,0,7,0,7,-1,0,8},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2}}, + {{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,20},{71,0,0,7,0,7,-1,0,8},{71,0,0,7,0,7,-1,0,8},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2}}, + {{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{71,0,0,7,0,7,-1,0,2},{103,0,0,2,0,12,-1,0,0}}, + {{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2}}, + {{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,20},{156,0,0,7,0,7,-1,1,8}}, + {{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{156,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{130,0,0,7,0,6,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2}}, + {{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{149,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0}}, + {{149,0,0,13,0,7,0,1,19},{149,0,0,13,0,7,1,1,19},{149,0,0,13,0,7,2,1,19},{149,0,0,13,0,7,3,1,19},{149,0,0,13,0,7,4,1,19},{149,0,0,13,0,7,5,1,19},{149,0,0,13,0,7,6,1,19},{149,0,0,13,0,7,7,1,19},{149,0,0,13,0,7,8,1,19},{149,0,0,13,0,7,9,1,19},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{149,0,0,21,0,8,-1,1,4},{149,0,0,21,0,8,-1,1,4}}, + {{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2}}, + {{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{134,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{134,0,0,12,17,7,-1,1,9},{134,0,0,12,17,7,-1,1,9},{134,0,0,12,17,7,-1,1,9},{134,0,0,12,17,7,-1,1,9},{134,0,0,12,17,7,-1,1,9},{134,0,0,21,0,8,-1,1,4},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2}}, + {{75,0,0,12,17,7,-1,1,9},{75,0,0,12,17,7,-1,1,9},{75,0,0,12,17,7,-1,1,9},{75,0,0,12,17,7,-1,1,9},{75,0,0,12,17,7,-1,1,9},{75,0,0,12,17,7,-1,1,9},{75,0,0,12,17,7,-1,1,9},{75,0,0,21,0,8,-1,1,4},{75,0,0,21,0,8,-1,1,4},{75,0,0,21,0,8,-1,1,4},{75,0,0,21,0,8,-1,1,2},{75,0,0,21,0,8,-1,1,2},{75,0,0,26,0,8,-1,1,2},{75,0,0,26,0,8,-1,1,2},{75,0,0,26,0,8,-1,1,2},{75,0,0,26,0,8,-1,1,2}}, + {{75,0,0,6,0,7,-1,1,2},{75,0,0,6,0,7,-1,1,2},{75,0,0,6,0,7,-1,1,2},{75,0,0,6,0,7,-1,1,2},{75,0,0,21,0,8,-1,1,4},{75,0,0,26,0,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{75,0,0,13,0,7,0,1,19},{75,0,0,13,0,7,1,1,19},{75,0,0,13,0,7,2,1,19},{75,0,0,13,0,7,3,1,19},{75,0,0,13,0,7,4,1,19},{75,0,0,13,0,7,5,1,19},{75,0,0,13,0,7,6,1,19},{75,0,0,13,0,7,7,1,19},{75,0,0,13,0,7,8,1,19},{75,0,0,13,0,7,9,1,19},{103,0,0,2,0,12,-1,1,0},{75,0,0,15,0,8,-1,1,2},{75,0,0,15,0,8,-1,1,2},{75,0,0,15,0,8,-1,1,2},{75,0,0,15,0,8,-1,1,2},{75,0,0,15,0,8,-1,1,2}}, + {{75,0,0,15,0,8,-1,1,2},{75,0,0,15,0,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2}}, + {{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2},{75,0,0,7,0,7,-1,1,2}}, + {{92,0,0,7,0,5,-1,1,2},{92,0,0,7,0,5,-1,1,2},{92,0,0,7,0,5,-1,1,2},{92,0,0,7,0,5,-1,1,2},{92,0,0,7,0,5,-1,1,2},{92,0,0,7,0,5,-1,1,2},{92,0,0,7,0,5,-1,1,2},{92,0,0,7,0,5,-1,1,2},{92,0,0,7,0,5,-1,1,2},{92,0,0,7,0,5,-1,1,2},{92,0,0,7,0,5,-1,1,2},{92,0,0,7,0,5,-1,1,2},{92,0,0,7,0,5,-1,1,2},{92,0,0,7,0,5,-1,1,2},{92,0,0,7,0,5,-1,1,2},{92,0,0,7,0,5,-1,1,2}}, + {{92,0,0,7,0,5,-1,1,2},{92,0,0,7,0,5,-1,1,2},{92,0,0,7,0,5,-1,1,2},{92,0,0,7,0,5,-1,1,2},{92,0,0,7,0,5,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{92,0,0,7,0,5,-1,1,2},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9}}, + {{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9}}, + {{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{92,0,0,10,0,5,-1,1,9},{103,0,0,2,0,12,-1,1,0}}, + {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{92,0,0,12,17,5,-1,1,9}}, + {{92,0,0,12,17,5,-1,1,9},{92,0,0,12,17,5,-1,1,9},{92,0,0,12,17,5,-1,1,9},{92,0,0,6,0,5,-1,1,2},{92,0,0,6,0,5,-1,1,2},{92,0,0,6,0,5,-1,1,2},{92,0,0,6,0,5,-1,1,2},{92,0,0,6,0,5,-1,1,2},{92,0,0,6,0,5,-1,1,2},{92,0,0,6,0,5,-1,1,2},{92,0,0,6,0,5,-1,1,2},{92,0,0,6,0,5,-1,1,2},{92,0,0,6,0,5,-1,1,2},{92,0,0,6,0,5,-1,1,2},{92,0,0,6,0,5,-1,1,2},{92,0,0,6,0,5,-1,1,2}}, + {{22,0,1,7,0,4,-1,0,14},{20,0,1,7,0,4,-1,0,14},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2}}, + {{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{135,0,0,7,0,7,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{135,0,0,26,0,8,-1,1,2},{135,0,0,12,17,7,-1,1,9},{135,0,0,12,17,7,-1,1,9},{135,0,0,21,0,8,-1,1,4}}, + {{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2}}, + {{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2}}, + {{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,9,-1,0,2},{0,0,0,26,0,9,-1,0,2}}, + {{0,0,0,26,0,9,-1,0,2},{0,0,0,26,0,9,-1,0,2},{0,0,0,26,0,9,-1,0,2},{0,0,0,26,0,9,-1,0,2},{0,0,0,26,0,9,-1,0,2},{0,0,0,10,0,7,-1,0,9},{0,0,0,10,0,7,-1,0,9},{1,0,0,12,17,7,-1,0,9},{1,0,0,12,17,7,-1,0,9},{1,0,0,12,17,7,-1,0,9},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,10,0,7,-1,0,9},{0,0,0,10,0,7,-1,0,9},{0,0,0,10,0,7,-1,0,9}}, + {{0,0,0,10,0,7,-1,0,9},{0,0,0,10,0,7,-1,0,9},{0,0,0,10,0,7,-1,0,9},{0,0,0,1,18,10,-1,0,9},{0,0,0,1,18,10,-1,0,9},{0,0,0,1,18,10,-1,0,9},{0,0,0,1,18,10,-1,0,9},{0,0,0,1,18,10,-1,0,9},{0,0,0,1,18,10,-1,0,9},{0,0,0,1,18,10,-1,0,9},{0,0,0,1,18,10,-1,0,9},{1,0,0,12,17,7,-1,0,9},{1,0,0,12,17,7,-1,0,9},{1,0,0,12,17,7,-1,0,9},{1,0,0,12,17,7,-1,0,9},{1,0,0,12,17,7,-1,0,9}}, + {{1,0,0,12,17,7,-1,0,9},{1,0,0,12,17,7,-1,0,9},{1,0,0,12,17,7,-1,0,9},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{1,0,0,12,17,7,-1,0,9},{1,0,0,12,17,7,-1,0,9},{1,0,0,12,17,7,-1,0,9},{1,0,0,12,17,7,-1,0,9},{1,0,0,12,17,7,-1,0,9},{1,0,0,12,17,7,-1,0,9},{1,0,0,12,17,7,-1,0,9},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2}}, + {{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{1,0,0,12,17,7,-1,0,9},{1,0,0,12,17,7,-1,0,9},{1,0,0,12,17,7,-1,0,9},{1,0,0,12,17,7,-1,0,9},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2}}, + {{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,9,-1,0,2},{0,0,0,26,0,9,-1,0,2},{0,0,0,26,0,9,-1,0,2},{0,0,0,26,0,9,-1,0,2},{0,0,0,26,0,9,-1,0,2}}, + {{0,0,0,26,0,9,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2}}, + {{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{0,0,0,26,0,8,-1,0,2},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2}}, + {{14,0,0,26,10,8,-1,1,2},{14,0,0,26,10,8,-1,1,2},{14,0,0,12,17,7,-1,1,9},{14,0,0,12,17,7,-1,1,9},{14,0,0,12,17,7,-1,1,9},{14,0,0,26,10,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{0,0,0,15,0,8,-1,0,2},{0,0,0,15,0,8,-1,0,2},{0,0,0,15,0,8,-1,0,2},{0,0,0,15,0,8,-1,0,2},{0,0,0,15,0,8,-1,0,2},{0,0,0,15,0,8,-1,0,2},{0,0,0,15,0,8,-1,0,2},{0,0,0,15,0,8,-1,0,2},{0,0,0,15,0,8,-1,0,2},{0,0,0,15,0,8,-1,0,2},{0,0,0,15,0,8,-1,0,2},{0,0,0,15,0,8,-1,0,2},{0,0,0,15,0,8,-1,0,2},{0,0,0,15,0,8,-1,0,2},{0,0,0,15,0,8,-1,0,2},{0,0,0,15,0,8,-1,0,2}}, + {{0,0,0,15,0,8,-1,0,2},{0,0,0,15,0,8,-1,0,2},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2}}, + {{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2}}, + {{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2}}, + {{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2}}, + {{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2}}, + {{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2}}, + {{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2}}, + {{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2}}, + {{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2}}, + {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{0,0,0,9,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2}}, + {{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{0,0,0,5,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2}}, + {{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2}}, + {{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2}}, + {{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2}}, + {{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0}}, + {{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{0,0,0,9,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2}}, + {{0,0,0,9,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2}}, + {{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2}}, + {{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2}}, + {{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2}}, + {{0,0,0,9,0,9,-1,1,2},{0,0,0,25,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2}}, + {{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,25,10,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2}}, + {{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2}}, + {{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,25,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2}}, + {{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,25,10,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2}}, + {{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,25,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2}}, + {{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,25,10,9,-1,1,2}}, + {{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2}}, + {{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,25,0,9,-1,1,2}}, + {{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,25,10,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2}}, + {{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,25,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2}}, + {{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,25,10,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{0,0,0,9,0,9,-1,1,2},{0,0,0,5,0,9,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{0,0,0,13,2,9,0,1,19},{0,0,0,13,2,9,1,1,19}}, + {{0,0,0,13,2,9,2,1,19},{0,0,0,13,2,9,3,1,19},{0,0,0,13,2,9,4,1,19},{0,0,0,13,2,9,5,1,19},{0,0,0,13,2,9,6,1,19},{0,0,0,13,2,9,7,1,19},{0,0,0,13,2,9,8,1,19},{0,0,0,13,2,9,9,1,19},{0,0,0,13,2,9,0,1,19},{0,0,0,13,2,9,1,1,19},{0,0,0,13,2,9,2,1,19},{0,0,0,13,2,9,3,1,19},{0,0,0,13,2,9,4,1,19},{0,0,0,13,2,9,5,1,19},{0,0,0,13,2,9,6,1,19},{0,0,0,13,2,9,7,1,19}}, + {{0,0,0,13,2,9,8,1,19},{0,0,0,13,2,9,9,1,19},{0,0,0,13,2,9,0,1,19},{0,0,0,13,2,9,1,1,19},{0,0,0,13,2,9,2,1,19},{0,0,0,13,2,9,3,1,19},{0,0,0,13,2,9,4,1,19},{0,0,0,13,2,9,5,1,19},{0,0,0,13,2,9,6,1,19},{0,0,0,13,2,9,7,1,19},{0,0,0,13,2,9,8,1,19},{0,0,0,13,2,9,9,1,19},{0,0,0,13,2,9,0,1,19},{0,0,0,13,2,9,1,1,19},{0,0,0,13,2,9,2,1,19},{0,0,0,13,2,9,3,1,19}}, + {{0,0,0,13,2,9,4,1,19},{0,0,0,13,2,9,5,1,19},{0,0,0,13,2,9,6,1,19},{0,0,0,13,2,9,7,1,19},{0,0,0,13,2,9,8,1,19},{0,0,0,13,2,9,9,1,19},{0,0,0,13,2,9,0,1,19},{0,0,0,13,2,9,1,1,19},{0,0,0,13,2,9,2,1,19},{0,0,0,13,2,9,3,1,19},{0,0,0,13,2,9,4,1,19},{0,0,0,13,2,9,5,1,19},{0,0,0,13,2,9,6,1,19},{0,0,0,13,2,9,7,1,19},{0,0,0,13,2,9,8,1,19},{0,0,0,13,2,9,9,1,19}}, + {{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2}}, + {{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9}}, + {{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9}}, + {{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2}}, + {{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,12,17,7,-1,1,9},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2}}, + {{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,12,17,7,-1,1,9},{112,0,0,26,0,8,-1,1,2},{112,0,0,26,0,8,-1,1,2},{112,0,0,21,0,8,-1,1,4},{112,0,0,21,0,8,-1,1,4},{112,0,0,21,0,8,-1,1,4},{112,0,0,21,0,8,-1,1,4},{112,0,0,21,0,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9}}, + {{103,0,0,2,0,12,-1,1,0},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9},{112,0,0,12,17,7,-1,1,9}}, + {{140,0,0,7,1,7,-1,1,2},{140,0,0,7,1,7,-1,1,2},{140,0,0,7,1,7,-1,1,2},{140,0,0,7,1,7,-1,1,2},{140,0,0,7,1,7,-1,1,2},{140,0,0,7,1,7,-1,1,2},{140,0,0,7,1,7,-1,1,2},{140,0,0,7,1,7,-1,1,2},{140,0,0,7,1,7,-1,1,2},{140,0,0,7,1,7,-1,1,2},{140,0,0,7,1,7,-1,1,2},{140,0,0,7,1,7,-1,1,2},{140,0,0,7,1,7,-1,1,2},{140,0,0,7,1,7,-1,1,2},{140,0,0,7,1,7,-1,1,2},{140,0,0,7,1,7,-1,1,2}}, + {{140,0,0,7,1,7,-1,1,2},{140,0,0,7,1,7,-1,1,2},{140,0,0,7,1,7,-1,1,2},{140,0,0,7,1,7,-1,1,2},{140,0,0,7,1,7,-1,1,2},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{140,0,0,15,1,8,-1,1,2},{140,0,0,15,1,8,-1,1,2},{140,0,0,15,1,8,-1,1,2},{140,0,0,15,1,8,-1,1,2},{140,0,0,15,1,8,-1,1,2},{140,0,0,15,1,8,-1,1,2},{140,0,0,15,1,8,-1,1,2},{140,0,0,15,1,8,-1,1,2},{140,0,0,15,1,8,-1,1,2}}, + {{140,0,0,12,17,7,-1,1,9},{140,0,0,12,17,7,-1,1,9},{140,0,0,12,17,7,-1,1,9},{140,0,0,12,17,7,-1,1,9},{140,0,0,12,17,7,-1,1,9},{140,0,0,12,17,7,-1,1,9},{140,0,0,12,17,7,-1,1,9},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0},{103,0,0,2,1,12,-1,1,0}}, + {{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2}}, + {{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2}}, + {{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0}}, + {{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2}}, + {{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2}}, + {{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2}}, + {{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0}}, + {{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2}}, + {{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0}}, + {{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{103,0,0,2,13,12,-1,1,0},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2},{2,0,0,7,13,9,-1,1,2}}, + {{2,0,0,25,10,8,-1,1,2},{2,0,0,25,10,8,-1,1,2},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0},{103,0,0,2,13,12,-1,1,0}}, + {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14}}, + {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{103,0,0,2,0,12,-1,0,0}}, + {{103,0,0,2,0,12,-1,0,0},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14}}, + {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{0,0,0,15,2,9,0,0,1},{0,0,0,15,2,9,0,0,1},{0,0,0,15,2,9,1,0,1},{0,0,0,15,2,9,2,0,1},{0,0,0,15,2,9,3,0,1},{0,0,0,15,2,9,4,0,1},{0,0,0,15,2,9,5,0,1},{0,0,0,15,2,9,6,0,1},{0,0,0,15,2,9,7,0,1},{0,0,0,15,2,9,8,0,1},{0,0,0,15,2,9,9,0,1},{0,0,0,15,10,8,-1,0,1},{0,0,0,15,10,8,-1,0,1},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,9,-1,0,2},{103,0,0,2,0,12,-1,0,0}}, + {{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1}}, + {{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,10,9,-1,0,2},{0,0,0,26,10,9,-1,0,2},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{0,0,0,26,0,9,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{0,0,0,26,0,8,-1,0,1},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39}}, + {{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39},{0,0,0,26,0,8,-1,0,39}}, + {{20,0,1,26,0,9,-1,2,14},{0,0,1,26,0,9,-1,2,14},{0,0,1,26,0,9,-1,0,14},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{0,0,1,26,0,9,-1,0,14},{0,0,1,26,0,9,-1,0,14},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14}}, + {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14}}, + {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,24,10,8,-1,0,2},{0,0,0,24,10,8,-1,0,2},{0,0,0,24,10,8,-1,0,2},{0,0,0,24,10,8,-1,0,2},{0,0,0,24,10,8,-1,0,2}}, + {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2}}, + {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14}}, + {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14}}, + {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}}, + {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14}}, + {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}}, + {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14}}, + {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{103,0,0,2,0,12,-1,0,0},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14}}, + {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{103,0,0,2,0,12,-1,0,0},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14}}, + {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14}}, + {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14}}, + {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,23},{0,0,0,26,10,8,-1,0,23},{0,0,0,26,10,8,-1,0,23},{0,0,0,26,10,8,-1,0,18},{0,0,0,26,10,8,-1,0,18},{0,0,0,26,10,8,-1,0,18},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2}}, + {{0,0,0,26,10,8,-1,0,14},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{0,0,0,26,10,8,-1,0,14},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{0,0,0,26,10,8,-1,0,2},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0},{103,0,0,2,0,12,-1,0,0}}, + {{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{0,0,0,26,10,8,-1,1,2},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{0,0,0,26,10,8,-1,1,14},{0,0,0,26,10,8,-1,1,14},{0,0,0,26,10,8,-1,1,14},{0,0,0,26,10,8,-1,1,14},{0,0,0,26,10,8,-1,1,14},{0,0,0,26,10,8,-1,1,14},{0,0,0,26,10,8,-1,1,14},{0,0,0,26,10,8,-1,1,14},{0,0,0,26,10,8,-1,1,14},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{0,0,0,26,10,8,-1,1,14},{0,0,0,26,10,8,-1,1,14},{0,0,0,26,10,8,-1,1,14},{0,0,0,26,10,8,-1,1,14},{0,0,0,26,10,8,-1,1,14},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{0,0,0,26,10,8,-1,1,14},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14}}, + {{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14}}, + {{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14}}, + {{17,0,1,7,0,0,-1,0,14},{17,0,1,7,0,0,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14}}, + {{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,1,2,0,12,-1,0,14},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{103,0,0,2,0,12,-1,1,0},{0,0,0,1,18,11,-1,1,9},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}}, + {{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9}}, + {{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,10,-1,1,9},{0,0,0,1,18,11,-1,1,9}}, + {{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,3,0,12,-1,0,0},{103,0,0,2,0,12,-1,1,0},{103,0,0,2,0,12,-1,1,0}} }; #endif diff --git a/intl/unicharutil/util/nsUnicodeScriptCodes.h b/intl/unicharutil/util/nsUnicodeScriptCodes.h index 4fcf9a0924e4..40bc6039e4bc 100644 --- a/intl/unicharutil/util/nsUnicodeScriptCodes.h +++ b/intl/unicharutil/util/nsUnicodeScriptCodes.h @@ -11,7 +11,7 @@ */ /* - * Created on Tue Oct 25 10:05:43 2016 from UCD data files with version info: + * Created on Wed Oct 26 09:12:45 2016 from UCD data files with version info: * # Date: 2015-06-16, 20:24:00 GMT [KW] @@ -47,6 +47,9 @@ Standard. # LineBreak-8.0.0.txt # Date: 2015-02-13, 09:15:00 GMT [KW, LI] +# EastAsianWidth-8.0.0.txt +# Date: 2015-02-10, 21:00:00 GMT [KW, LI] + # File: xidmodifications.txt # Version: 8.0.0 # Generated: 2015-05-17, 03:09:04 GMT @@ -92,7 +95,8 @@ struct nsCharProps2 { struct nsCharProps2 { unsigned char mScriptCode:8; - unsigned char mPairedBracketType:3; // only 2 bits actually needed + unsigned char mPairedBracketType:2; + unsigned char mEastAsianWidthFWH:1; unsigned char mCategory:5; unsigned char mBidiCategory:5; unsigned char mXidmod:4; From dc45f1b5b33b160d8f65cccfe4019b6fe027d81d Mon Sep 17 00:00:00 2001 From: Kan-Ru Chen Date: Wed, 26 Oct 2016 17:11:36 +0800 Subject: [PATCH 12/24] Bug 1081858 - Part 3. Implement IsEastAsianWidthFWH using ICU or nsUnicodeProperties data. r=jfkthame MozReview-Commit-ID: DvBgSm5SJwD --- intl/unicharutil/util/nsUnicodeProperties.cpp | 5 +++++ intl/unicharutil/util/nsUnicodeProperties.h | 19 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/intl/unicharutil/util/nsUnicodeProperties.cpp b/intl/unicharutil/util/nsUnicodeProperties.cpp index 2aeabf1eec07..9aa5ef8e3ad7 100644 --- a/intl/unicharutil/util/nsUnicodeProperties.cpp +++ b/intl/unicharutil/util/nsUnicodeProperties.cpp @@ -295,6 +295,11 @@ GetTitlecaseForAll(uint32_t aCh) } return aCh; } + +bool IsEastAsianWidthFWH(uint32_t aCh) +{ + return GetCharProps2(aCh).mEastAsianWidthFWH; +} #endif #define DEFINE_BMP_1PLANE_MAPPING_GET_FUNC(prefix_) \ diff --git a/intl/unicharutil/util/nsUnicodeProperties.h b/intl/unicharutil/util/nsUnicodeProperties.h index 95f928d77edd..ba5526a4da6b 100644 --- a/intl/unicharutil/util/nsUnicodeProperties.h +++ b/intl/unicharutil/util/nsUnicodeProperties.h @@ -156,6 +156,22 @@ GetTitlecaseForAll(uint32_t aCh) // maps both UC and LC to titlecase return u_totitle(aCh); } +inline bool +IsEastAsianWidthFWH(uint32_t aCh) +{ + switch (u_getIntPropertyValue(aCh, UCHAR_EAST_ASIAN_WIDTH)) { + case U_EA_FULLWIDTH: + case U_EA_WIDE: + case U_EA_HALFWIDTH: + return true; + case U_EA_AMBIGUOUS: + case U_EA_NARROW: + case U_EA_NEUTRAL: + return false; + } + return false; +} + #else // not ENABLE_INTL_API // Return whether the char has a mirrored-pair counterpart. @@ -192,6 +208,9 @@ uint32_t GetLowercase(uint32_t aCh); uint32_t GetTitlecaseForLower(uint32_t aCh); // maps LC to titlecase, UC unchanged uint32_t GetTitlecaseForAll(uint32_t aCh); // maps both UC and LC to titlecase +// Return whether the char has EastAsianWidth class F or W or H. +bool IsEastAsianWidthFWH(uint32_t aCh); + #endif // !ENABLE_INTL_API // returns the simplified Gen Category as defined in nsIUGenCategory From 6a947f61663815d0fe242c2ff299da50787f5b15 Mon Sep 17 00:00:00 2001 From: Kan-Ru Chen Date: Tue, 25 Oct 2016 22:35:02 +0800 Subject: [PATCH 13/24] Bug 1081858 - Part 4. Implement segment break transformation rules. r=jfkthame MozReview-Commit-ID: BcOm4LVWGzW --- intl/unicharutil/util/nsUnicharUtils.cpp | 9 +++- intl/unicharutil/util/nsUnicharUtils.h | 5 ++ layout/generic/nsTextFrameUtils.cpp | 32 ++++++++++-- layout/reftests/text/reftest.list | 1 + .../segment-break-transformation-1-ref.html | 34 +++++++++++++ .../text/segment-break-transformation-1.html | 50 +++++++++++++++++++ 6 files changed, 125 insertions(+), 6 deletions(-) create mode 100644 layout/reftests/text/segment-break-transformation-1-ref.html create mode 100644 layout/reftests/text/segment-break-transformation-1.html diff --git a/intl/unicharutil/util/nsUnicharUtils.cpp b/intl/unicharutil/util/nsUnicharUtils.cpp index f82902f0fbf2..57c482841ecd 100644 --- a/intl/unicharutil/util/nsUnicharUtils.cpp +++ b/intl/unicharutil/util/nsUnicharUtils.cpp @@ -1,4 +1,4 @@ -/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */ /* This Source Code Form is subject to the terms of the Mozilla Public * License, v. 2.0. If a copy of the MPL was not distributed with this * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ @@ -425,4 +425,11 @@ HashUTF8AsUTF16(const char* aUTF8, uint32_t aLength, bool* aErr) return hash; } +bool +IsSegmentBreakSkipChar(uint32_t u) +{ + return unicode::IsEastAsianWidthFWH(u) && + unicode::GetScriptCode(u) != unicode::Script::HANGUL; +} + } // namespace mozilla diff --git a/intl/unicharutil/util/nsUnicharUtils.h b/intl/unicharutil/util/nsUnicharUtils.h index 86f201ca506f..e627720675e8 100644 --- a/intl/unicharutil/util/nsUnicharUtils.h +++ b/intl/unicharutil/util/nsUnicharUtils.h @@ -16,6 +16,8 @@ (0xf900u <= (u) && (u) <= 0xfaffu) || \ (0xff00u <= (u) && (u) <= 0xffefu) ) +#define IS_ZERO_WIDTH_SPACE(u) ((u) == 0x200B) + void ToLowerCase(nsAString&); void ToUpperCase(nsAString&); @@ -142,6 +144,9 @@ namespace mozilla { uint32_t HashUTF8AsUTF16(const char* aUTF8, uint32_t aLength, bool* aErr); +bool +IsSegmentBreakSkipChar(uint32_t u); + } // namespace mozilla #endif /* nsUnicharUtils_h__ */ diff --git a/layout/generic/nsTextFrameUtils.cpp b/layout/generic/nsTextFrameUtils.cpp index dc5f32e211a0..d07400f2bea3 100644 --- a/layout/generic/nsTextFrameUtils.cpp +++ b/layout/generic/nsTextFrameUtils.cpp @@ -5,11 +5,12 @@ #include "nsTextFrameUtils.h" -#include "nsUnicharUtils.h" #include "nsBidiUtils.h" +#include "nsCharTraits.h" #include "nsIContent.h" #include "nsStyleStruct.h" #include "nsTextFragment.h" +#include "nsUnicharUtils.h" #include static bool IsDiscardable(char16_t ch, uint32_t* aFlags) @@ -89,10 +90,31 @@ nsTextFrameUtils::TransformText(const char16_t* aText, uint32_t aLength, !IsSpaceCombiningSequenceTail(&aText[i + 1], aLength - (i + 1)))) { nowInWhitespace = true; } else if (ch == '\n' && aCompression == COMPRESS_WHITESPACE_NEWLINE) { - if (i > 0 && IS_CJ_CHAR(aText[i - 1]) && - i + 1 < aLength && IS_CJ_CHAR(aText[i + 1])) { - // Discard newlines between CJK chars. - // XXX this really requires more context to get right! + if ((i > 0 && IS_ZERO_WIDTH_SPACE(aText[i - 1])) || + (i + 1 < aLength && IS_ZERO_WIDTH_SPACE(aText[i + 1]))) { + aSkipChars->SkipChar(); + continue; + } + uint32_t ucs4before; + uint32_t ucs4after; + if (i > 1 && + NS_IS_LOW_SURROGATE(aText[i - 1]) && + NS_IS_HIGH_SURROGATE(aText[i - 2])) { + ucs4before = SURROGATE_TO_UCS4(aText[i - 2], aText[i - 1]); + } else if (i > 0) { + ucs4before = aText[i - 1]; + } + if (i + 2 < aLength && + NS_IS_HIGH_SURROGATE(aText[i + 1]) && + NS_IS_LOW_SURROGATE(aText[i + 2])) { + ucs4after = SURROGATE_TO_UCS4(aText[i + 1], aText[i + 2]); + } else if (i + 1 < aLength) { + ucs4after = aText[i + 1]; + } + if (i > 0 && IsSegmentBreakSkipChar(ucs4before) && + i + 1 < aLength && IsSegmentBreakSkipChar(ucs4after)) { + // Discard newlines between characters that have F, W, or H + // EastAsianWidth property and neither side is Hangul. aSkipChars->SkipChar(); continue; } diff --git a/layout/reftests/text/reftest.list b/layout/reftests/text/reftest.list index 7e3a8ced1be7..7e4bd55c02ce 100644 --- a/layout/reftests/text/reftest.list +++ b/layout/reftests/text/reftest.list @@ -338,3 +338,4 @@ HTTP(..) == space-font-1.html space-font-1-ref.html # handling of highly negative letter-spacing and intrinsic width == negative-letter-spacing-1.html negative-letter-spacing-1-ref.html +== segment-break-transformation-1.html segment-break-transformation-1-ref.html diff --git a/layout/reftests/text/segment-break-transformation-1-ref.html b/layout/reftests/text/segment-break-transformation-1-ref.html new file mode 100644 index 000000000000..8eb84ab88f33 --- /dev/null +++ b/layout/reftests/text/segment-break-transformation-1-ref.html @@ -0,0 +1,34 @@ + + + + + + + + +
+

斷行測試 +

斷行測試 +

斷行測試 +

斷行測試 +

斷行測試 +

斷行
+測試
+

斷行
+測試
+

斷行
+測試
+

Hello Kitty +

HelloKitty +

HelloKitty +

HelloKitty + +

𠀀𠀁𠀂𠀃 +

𠀀測𠀂𠀃 +

𠀀𠀁測𠀃 +

+ + diff --git a/layout/reftests/text/segment-break-transformation-1.html b/layout/reftests/text/segment-break-transformation-1.html new file mode 100644 index 000000000000..47ae36f010e0 --- /dev/null +++ b/layout/reftests/text/segment-break-transformation-1.html @@ -0,0 +1,50 @@ + + + + + + + + +
+

斷行 +測試 +

斷行​ +測試 +

斷行 +​測試 +

斷行​ +​測試 +

斷行 +測試 +

斷行 +測試 +

斷行 +測試 +

斷行 +測試 +

Hello +Kitty +

Hello​ +Kitty +

Hello +​Kitty +

Hello​ +​Kitty + +

𠀀𠀁 +𠀂𠀃 +

𠀀測 +𠀂𠀃 +

𠀀𠀁 +測𠀃 +

+ + From bda6eacad97138ee9ac008ee710033fe8133f2de Mon Sep 17 00:00:00 2001 From: Matt Woodrow Date: Thu, 27 Oct 2016 20:59:23 +1300 Subject: [PATCH 14/24] Bug 1313281 - Part 1: Remove AsyncTransactionTracker. r=sotaro --- .../platforms/omx/GonkOmxPlatformLayer.cpp | 4 - gfx/layers/client/CompositableClient.cpp | 16 -- gfx/layers/client/CompositableClient.h | 50 ----- gfx/layers/client/ImageClient.cpp | 19 +- gfx/layers/client/ImageClient.h | 9 +- gfx/layers/client/TextureClient.cpp | 44 ----- gfx/layers/client/TextureClient.h | 12 -- gfx/layers/ipc/AsyncTransactionTracker.cpp | 169 ----------------- gfx/layers/ipc/AsyncTransactionTracker.h | 172 ------------------ gfx/layers/ipc/CompositableForwarder.h | 14 -- .../ipc/CompositableTransactionParent.cpp | 15 -- .../ipc/CompositableTransactionParent.h | 3 - gfx/layers/ipc/ImageBridgeChild.cpp | 46 +---- gfx/layers/ipc/ImageBridgeChild.h | 11 +- gfx/layers/ipc/ImageBridgeParent.cpp | 6 - gfx/layers/ipc/ImageBridgeParent.h | 2 - gfx/layers/ipc/LayerTransactionChild.h | 1 - gfx/layers/ipc/LayersMessages.ipdlh | 14 -- gfx/layers/ipc/ShadowLayers.cpp | 8 - gfx/layers/ipc/ShadowLayers.h | 4 - gfx/layers/moz.build | 2 - 21 files changed, 8 insertions(+), 613 deletions(-) delete mode 100755 gfx/layers/ipc/AsyncTransactionTracker.cpp delete mode 100644 gfx/layers/ipc/AsyncTransactionTracker.h diff --git a/dom/media/platforms/omx/GonkOmxPlatformLayer.cpp b/dom/media/platforms/omx/GonkOmxPlatformLayer.cpp index 363abe8cc844..870566cf5876 100644 --- a/dom/media/platforms/omx/GonkOmxPlatformLayer.cpp +++ b/dom/media/platforms/omx/GonkOmxPlatformLayer.cpp @@ -329,10 +329,6 @@ GonkBufferData::GetPlatformMediaData() mTextureClientRecycleHandler->WaitforRecycle() ->Then(mGonkPlatformLayer->GetTaskQueue(), __func__, [self] () { - // Waiting for texture to be freed. - if (self->mTextureClientRecycleHandler) { - self->mTextureClientRecycleHandler->GetTextureClient()->WaitForBufferOwnership(); - } self->mPromise.ResolveIfExists(self, __func__); }, [self] () { diff --git a/gfx/layers/client/CompositableClient.cpp b/gfx/layers/client/CompositableClient.cpp index 475dffc2e586..52b9a4637276 100644 --- a/gfx/layers/client/CompositableClient.cpp +++ b/gfx/layers/client/CompositableClient.cpp @@ -27,22 +27,6 @@ namespace layers { using namespace mozilla::gfx; -void -RemoveTextureFromCompositableTracker::ReleaseTextureClient() -{ - if (mTextureClient && - mTextureClient->GetAllocator() && - !mTextureClient->GetAllocator()->UsesImageBridge()) - { - RefPtr task = new TextureClientReleaseTask(mTextureClient); - RefPtr allocator = mTextureClient->GetAllocator(); - mTextureClient = nullptr; - allocator->GetMessageLoop()->PostTask(task.forget()); - } else { - mTextureClient = nullptr; - } -} - void CompositableClient::InitIPDLActor(PCompositableChild* aActor, uint64_t aAsyncID) { diff --git a/gfx/layers/client/CompositableClient.h b/gfx/layers/client/CompositableClient.h index 92ae2768ed79..07df59d59f77 100644 --- a/gfx/layers/client/CompositableClient.h +++ b/gfx/layers/client/CompositableClient.h @@ -12,7 +12,6 @@ #include "mozilla/Assertions.h" // for MOZ_CRASH #include "mozilla/RefPtr.h" // for already_AddRefed, RefCounted #include "mozilla/gfx/Types.h" // for SurfaceFormat -#include "mozilla/layers/AsyncTransactionTracker.h" // for AsyncTransactionTracker #include "mozilla/layers/CompositorTypes.h" #include "mozilla/layers/LayersTypes.h" // for LayersBackend, TextureDumpMode #include "mozilla/layers/TextureClient.h" // for TextureClient @@ -29,55 +28,6 @@ class CompositableChild; class PCompositableChild; class TextureClientRecycleAllocator; -/** - * Handle RemoveTextureFromCompositableAsync() transaction. - */ -class RemoveTextureFromCompositableTracker : public AsyncTransactionTracker { -public: - explicit RemoveTextureFromCompositableTracker(AsyncTransactionWaiter* aWaiter = nullptr) - : AsyncTransactionTracker(aWaiter) - { - MOZ_COUNT_CTOR(RemoveTextureFromCompositableTracker); - } - -protected: - ~RemoveTextureFromCompositableTracker() - { - MOZ_COUNT_DTOR(RemoveTextureFromCompositableTracker); - ReleaseTextureClient(); - } - -public: - virtual void Complete() override - { - ReleaseTextureClient(); - } - - virtual void Cancel() override - { - ReleaseTextureClient(); - } - - virtual void SetTextureClient(TextureClient* aTextureClient) override - { - ReleaseTextureClient(); - mTextureClient = aTextureClient; - } - - virtual void SetReleaseFenceHandle(FenceHandle& aReleaseFenceHandle) override - { - if (mTextureClient) { - mTextureClient->SetReleaseFenceHandle(aReleaseFenceHandle); - } - } - -protected: - void ReleaseTextureClient(); - -private: - RefPtr mTextureClient; -}; - /** * CompositableClient manages the texture-specific logic for composite layers, * independently of the layer. It is the content side of a CompositableClient/ diff --git a/gfx/layers/client/ImageClient.cpp b/gfx/layers/client/ImageClient.cpp index 7a4b6bbf103a..1ccb69502f3f 100644 --- a/gfx/layers/client/ImageClient.cpp +++ b/gfx/layers/client/ImageClient.cpp @@ -66,21 +66,6 @@ ImageClient::CreateImageClient(CompositableType aCompositableHostType, void ImageClient::RemoveTexture(TextureClient* aTexture) { - RemoveTextureWithWaiter(aTexture); -} - -void -ImageClient::RemoveTextureWithWaiter(TextureClient* aTexture, - AsyncTransactionWaiter* aAsyncTransactionWaiter) -{ - if (aAsyncTransactionWaiter && - GetForwarder()->GetTextureForwarder()->UsesImageBridge()) { - RefPtr request = - new RemoveTextureFromCompositableTracker(aAsyncTransactionWaiter); - GetForwarder()->RemoveTextureFromCompositableAsync(request, this, aTexture); - return; - } - MOZ_ASSERT(!aAsyncTransactionWaiter); GetForwarder()->RemoveTextureFromCompositable(this, aTexture); } @@ -97,12 +82,12 @@ TextureInfo ImageClientSingle::GetTextureInfo() const } void -ImageClientSingle::FlushAllImages(AsyncTransactionWaiter* aAsyncTransactionWaiter) +ImageClientSingle::FlushAllImages() { MOZ_ASSERT(GetForwarder()->GetTextureForwarder()->UsesImageBridge()); for (auto& b : mBuffers) { - RemoveTextureWithWaiter(b.mTextureClient, aAsyncTransactionWaiter); + RemoveTexture(b.mTextureClient); } mBuffers.Clear(); } diff --git a/gfx/layers/client/ImageClient.h b/gfx/layers/client/ImageClient.h index 9c8f2ecb1205..4c6e264008ec 100644 --- a/gfx/layers/client/ImageClient.h +++ b/gfx/layers/client/ImageClient.h @@ -11,7 +11,6 @@ #include "mozilla/Attributes.h" // for override #include "mozilla/RefPtr.h" // for RefPtr, already_AddRefed #include "mozilla/gfx/Types.h" // for SurfaceFormat -#include "mozilla/layers/AsyncTransactionTracker.h" // for AsyncTransactionTracker #include "mozilla/layers/CompositableClient.h" // for CompositableClient #include "mozilla/layers/CompositorTypes.h" // for CompositableType, etc #include "mozilla/layers/LayersSurfaces.h" // for SurfaceDescriptor @@ -25,7 +24,6 @@ namespace layers { class ClientLayer; class CompositableForwarder; -class AsyncTransactionTracker; class Image; class ImageContainer; class ShadowableLayer; @@ -64,13 +62,10 @@ public: * asynchronously remove all the textures used by the image client. * */ - virtual void FlushAllImages(AsyncTransactionWaiter* aAsyncTransactionWaiter) {} + virtual void FlushAllImages() {} virtual void RemoveTexture(TextureClient* aTexture) override; - void RemoveTextureWithWaiter(TextureClient* aTexture, - AsyncTransactionWaiter* aAsyncTransactionWaiter = nullptr); - virtual ImageClientSingle* AsImageClientSingle() { return nullptr; } static already_AddRefed CreateTextureClientForImage(Image* aImage, KnowsCompositor* aForwarder); @@ -102,7 +97,7 @@ public: virtual TextureInfo GetTextureInfo() const override; - virtual void FlushAllImages(AsyncTransactionWaiter* aAsyncTransactionWaiter) override; + virtual void FlushAllImages() override; ImageClientSingle* AsImageClientSingle() override { return this; } diff --git a/gfx/layers/client/TextureClient.cpp b/gfx/layers/client/TextureClient.cpp index 961d937cb7ce..35270abfc703 100644 --- a/gfx/layers/client/TextureClient.cpp +++ b/gfx/layers/client/TextureClient.cpp @@ -10,7 +10,6 @@ #include "gfxPlatform.h" // for gfxPlatform #include "mozilla/Atomics.h" #include "mozilla/ipc/SharedMemory.h" // for SharedMemory, etc -#include "mozilla/layers/AsyncTransactionTracker.h" #include "mozilla/layers/CompositableForwarder.h" #include "mozilla/layers/ISurfaceAllocator.h" #include "mozilla/layers/ImageBridgeChild.h" @@ -492,10 +491,6 @@ TextureClient::Lock(OpenMode aMode) return mOpenMode == aMode; } - if (!!mFenceHandleWaiter && (aMode & OpenMode::OPEN_WRITE)) { - mFenceHandleWaiter->WaitComplete(); - } - if (aMode & OpenMode::OPEN_WRITE && IsReadLocked()) { NS_WARNING("Attempt to Lock a texture that is being read by the compositor!"); return false; @@ -715,14 +710,6 @@ TextureClient::ToSurfaceDescriptor(SurfaceDescriptor& aOutDescriptor) return mData ? mData->Serialize(aOutDescriptor) : false; } -void -TextureClient::WaitForBufferOwnership(bool aWaitReleaseFence) -{ - if (mFenceHandleWaiter) { - mFenceHandleWaiter->WaitComplete(); - } -} - // static PTextureChild* TextureClient::CreateIPDLActor() @@ -817,37 +804,6 @@ TextureClient::SetAddedToCompositableClient() } } -void -TextureClient::WaitFenceHandleOnImageBridge(Mutex& aMutex) -{ - MOZ_ASSERT(NS_IsMainThread()); - aMutex.AssertCurrentThreadOwns(); - - if (!mFenceHandleWaiter) { - mFenceHandleWaiter = new AsyncTransactionWaiter(); - } - MOZ_ASSERT(mFenceHandleWaiter->GetWaitCount() <= 1); - if (mFenceHandleWaiter->GetWaitCount() > 0) { - return; - } - mFenceHandleWaiter->IncrementWaitCount(); -} - -void -TextureClient::ClearWaitFenceHandleOnImageBridge(Mutex& aMutex) -{ - aMutex.AssertCurrentThreadOwns(); - - if (!mFenceHandleWaiter) { - return; - } - MOZ_ASSERT(mFenceHandleWaiter->GetWaitCount() <= 1); - if (mFenceHandleWaiter->GetWaitCount() == 0) { - return; - } - mFenceHandleWaiter->DecrementWaitCount(); -} - void TextureClient::CancelWaitFenceHandleOnImageBridge() { diff --git a/gfx/layers/client/TextureClient.h b/gfx/layers/client/TextureClient.h index e86746c61116..76fe2acb66d7 100644 --- a/gfx/layers/client/TextureClient.h +++ b/gfx/layers/client/TextureClient.h @@ -605,14 +605,6 @@ public: return mAcquireFenceHandle; } - /** - * This function waits until the buffer is no longer being used. - * - * XXX - Ideally we shouldn't need this method because Lock the right - * thing already. - */ - virtual void WaitForBufferOwnership(bool aWaitReleaseFence = true); - /** * Track how much of this texture is wasted. * For example we might allocate a 256x256 tile but only use 10x10. @@ -648,8 +640,6 @@ public: return false; } - void WaitFenceHandleOnImageBridge(Mutex& aMutex); - void ClearWaitFenceHandleOnImageBridge(Mutex& aMutex); void CancelWaitFenceHandleOnImageBridge(); void CancelWaitForRecycle(); @@ -744,7 +734,6 @@ protected: TextureFlags mFlags; FenceHandle mReleaseFenceHandle; FenceHandle mAcquireFenceHandle; - RefPtr mFenceHandleWaiter; gl::GfxTextureWasteTracker mWasteTracker; @@ -774,7 +763,6 @@ protected: static mozilla::Atomic sSerialCounter; friend class TextureChild; - friend class RemoveTextureFromCompositableTracker; friend void TestTextureClientSurface(TextureClient*, gfxImageSurface*); friend void TestTextureClientYCbCr(TextureClient*, PlanarYCbCrData&); diff --git a/gfx/layers/ipc/AsyncTransactionTracker.cpp b/gfx/layers/ipc/AsyncTransactionTracker.cpp deleted file mode 100755 index bc0a0bd0ee66..000000000000 --- a/gfx/layers/ipc/AsyncTransactionTracker.cpp +++ /dev/null @@ -1,169 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * vim: sw=2 ts=8 et : - */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "AsyncTransactionTracker.h" - -#include "mozilla/layers/ImageBridgeChild.h" // for ImageBridgeChild -#include "mozilla/gfx/Logging.h" - -namespace mozilla { -namespace layers { - -void -AsyncTransactionWaiter::WaitComplete() -{ - MOZ_ASSERT(!InImageBridgeChildThread()); - - MonitorAutoLock mon(mCompletedMonitor); - int count = 0; - const int maxCount = 5; - while (mWaitCount > 0 && (count < maxCount)) { - if (!NS_SUCCEEDED(mCompletedMonitor.Wait(PR_MillisecondsToInterval(10000)))) { - NS_WARNING("Failed to wait Monitor"); - return; - } - if (count > 1) { - printf_stderr("Waiting async transaction complete.\n"); - } - count++; - } - - if (mWaitCount > 0) { - printf_stderr("Timeout of waiting transaction complete."); - } - - if (count == maxCount) { - gfxDevCrash(gfx::LogReason::AsyncTransactionTimeout) << "Bug 1244883: AsyncTransactionWaiter timed out."; - } -} - -Atomic AsyncTransactionTracker::sSerialCounter(0); - -AsyncTransactionTracker::AsyncTransactionTracker(AsyncTransactionWaiter* aWaiter) - : mSerial(GetNextSerial()) - , mWaiter(aWaiter) -#ifdef DEBUG - , mCompleted(false) -#endif -{ - if (mWaiter) { - mWaiter->IncrementWaitCount(); - } -} - -AsyncTransactionTracker::~AsyncTransactionTracker() -{ -} - -void -AsyncTransactionTracker::NotifyComplete() -{ - MOZ_ASSERT(!mCompleted); -#ifdef DEBUG - mCompleted = true; -#endif - Complete(); - if (mWaiter) { - mWaiter->DecrementWaitCount(); - } -} - -void -AsyncTransactionTracker::NotifyCancel() -{ - MOZ_ASSERT(!mCompleted); -#ifdef DEBUG - mCompleted = true; -#endif - Cancel(); - if (mWaiter) { - mWaiter->DecrementWaitCount(); - } -} - -Atomic AsyncTransactionTrackersHolder::sSerialCounter(0); - -AsyncTransactionTrackersHolder::AsyncTransactionTrackersHolder() - : mSerial(GetNextSerial()) - , mIsTrackersHolderDestroyed(false) -{ - MOZ_COUNT_CTOR(AsyncTransactionTrackersHolder); -} - -AsyncTransactionTrackersHolder::~AsyncTransactionTrackersHolder() -{ - if (!mIsTrackersHolderDestroyed) { - DestroyAsyncTransactionTrackersHolder(); - } - MOZ_COUNT_DTOR(AsyncTransactionTrackersHolder); -} - -void -AsyncTransactionTrackersHolder::HoldUntilComplete(AsyncTransactionTracker* aTransactionTracker) -{ - if (!aTransactionTracker) { - return; - } - - if (mIsTrackersHolderDestroyed && aTransactionTracker) { - aTransactionTracker->NotifyComplete(); - return; - } - - if (aTransactionTracker) { - mAsyncTransactionTrackers[aTransactionTracker->GetId()] = aTransactionTracker; - } -} - -void -AsyncTransactionTrackersHolder::TransactionCompleteted(uint64_t aTransactionId) -{ - TransactionCompletetedInternal(aTransactionId); -} - -void -AsyncTransactionTrackersHolder::TransactionCompletetedInternal(uint64_t aTransactionId) -{ - std::map >::iterator it - = mAsyncTransactionTrackers.find(aTransactionId); - if (it != mAsyncTransactionTrackers.end()) { - it->second->NotifyComplete(); - mAsyncTransactionTrackers.erase(it); - } -} - -void -AsyncTransactionTrackersHolder::SetReleaseFenceHandle(FenceHandle& aReleaseFenceHandle, - uint64_t aTransactionId) -{ - std::map >::iterator it - = mAsyncTransactionTrackers.find(aTransactionId); - if (it != mAsyncTransactionTrackers.end()) { - it->second->SetReleaseFenceHandle(aReleaseFenceHandle); - } -} - -void -AsyncTransactionTrackersHolder::ClearAllAsyncTransactionTrackers() -{ - std::map >::iterator it; - for (it = mAsyncTransactionTrackers.begin(); - it != mAsyncTransactionTrackers.end(); it++) { - it->second->NotifyCancel(); - } - mAsyncTransactionTrackers.clear(); -} - -void -AsyncTransactionTrackersHolder::DestroyAsyncTransactionTrackersHolder() { - mIsTrackersHolderDestroyed = true; - ClearAllAsyncTransactionTrackers(); -} - - -} // namespace layers -} // namespace mozilla diff --git a/gfx/layers/ipc/AsyncTransactionTracker.h b/gfx/layers/ipc/AsyncTransactionTracker.h deleted file mode 100644 index e2439901750e..000000000000 --- a/gfx/layers/ipc/AsyncTransactionTracker.h +++ /dev/null @@ -1,172 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * vim: sw=2 ts=8 et : - */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef mozilla_layers_AsyncTransactionTracker_h -#define mozilla_layers_AsyncTransactionTracker_h - -#include - -#include "mozilla/Atomics.h" -#include "mozilla/layers/FenceUtils.h" // for FenceHandle -#include "mozilla/Monitor.h" // for Monitor -#include "mozilla/RefPtr.h" // for AtomicRefCounted - -namespace mozilla { -namespace layers { - -class TextureClient; -class AsyncTransactionTrackersHolder; - -/** - * Object that lets you wait for one or more async transactions to complete. - */ -class AsyncTransactionWaiter -{ -public: - NS_INLINE_DECL_THREADSAFE_REFCOUNTING(AsyncTransactionWaiter) - - AsyncTransactionWaiter() - : mCompletedMonitor("AsyncTransactionWaiter") - , mWaitCount(0) - {} - - void IncrementWaitCount() - { - MonitorAutoLock lock(mCompletedMonitor); - ++mWaitCount; - } - void DecrementWaitCount() - { - MonitorAutoLock lock(mCompletedMonitor); - MOZ_ASSERT(mWaitCount > 0); - --mWaitCount; - if (mWaitCount == 0) { - mCompletedMonitor.Notify(); - } - } - - /** - * Wait until asynchronous transactions complete. - */ - void WaitComplete(); - - uint32_t GetWaitCount() { return mWaitCount; } - -private: - ~AsyncTransactionWaiter() {} - - Monitor mCompletedMonitor; - uint32_t mWaitCount; -}; - -/** - * AsyncTransactionTracker tracks asynchronous transaction. - * It is typically used for asynchronous layer transaction handling. - */ -class AsyncTransactionTracker -{ - friend class AsyncTransactionTrackersHolder; -public: - NS_INLINE_DECL_THREADSAFE_REFCOUNTING(AsyncTransactionTracker) - - explicit AsyncTransactionTracker(AsyncTransactionWaiter* aWaiter = nullptr); - - /** - * Notify async transaction complete. - */ - void NotifyComplete(); - - /** - * Notify async transaction cancel. - */ - void NotifyCancel(); - - uint64_t GetId() - { - return mSerial; - } - - /** - * Called when asynchronous transaction complete. - */ - virtual void Complete()= 0; - - /** - * Called when asynchronous transaction is cancelled. - * The cancel typically happens when IPC is disconnected - */ - virtual void Cancel()= 0; - - virtual void SetTextureClient(TextureClient* aTextureClient) {} - - virtual void SetReleaseFenceHandle(FenceHandle& aReleaseFenceHandle) {} - -protected: - virtual ~AsyncTransactionTracker(); - - static uint64_t GetNextSerial() - { - return ++sSerialCounter; - } - - uint64_t mSerial; - RefPtr mWaiter; -#ifdef DEBUG - bool mCompleted; -#endif - - static Atomic sSerialCounter; -}; - -class AsyncTransactionTrackersHolder -{ -public: - AsyncTransactionTrackersHolder(); - virtual ~AsyncTransactionTrackersHolder(); - - void HoldUntilComplete(AsyncTransactionTracker* aTransactionTracker); - - void TransactionCompleteted(uint64_t aTransactionId); - - static void TransactionCompleteted(uint64_t aHolderId, uint64_t aTransactionId); - - static void SetReleaseFenceHandle(FenceHandle& aReleaseFenceHandle, - uint64_t aHolderId, - uint64_t aTransactionId); - - uint64_t GetId() - { - return mSerial; - } - - void DestroyAsyncTransactionTrackersHolder(); - -protected: - - static uint64_t GetNextSerial() - { - return ++sSerialCounter; - } - - void TransactionCompletetedInternal(uint64_t aTransactionId); - - void SetReleaseFenceHandle(FenceHandle& aReleaseFenceHandle, uint64_t aTransactionId); - - void ClearAllAsyncTransactionTrackers(); - - const uint64_t mSerial; - - bool mIsTrackersHolderDestroyed; - std::map > mAsyncTransactionTrackers; - - static Atomic sSerialCounter; -}; - -} // namespace layers -} // namespace mozilla - -#endif // mozilla_layers_AsyncTransactionTracker_h diff --git a/gfx/layers/ipc/CompositableForwarder.h b/gfx/layers/ipc/CompositableForwarder.h index cfe382888cba..b31754b5a0d6 100644 --- a/gfx/layers/ipc/CompositableForwarder.h +++ b/gfx/layers/ipc/CompositableForwarder.h @@ -26,7 +26,6 @@ namespace mozilla { namespace layers { class CompositableClient; -class AsyncTransactionTracker; class ImageContainer; class SurfaceDescriptor; class SurfaceDescriptorTiles; @@ -88,19 +87,6 @@ public: virtual void RemoveTextureFromCompositable(CompositableClient* aCompositable, TextureClient* aTexture) = 0; - /** - * Tell the CompositableHost on the compositor side to remove the texture - * from the CompositableHost. The compositor side sends back transaction - * complete message. - * This function does not delete the TextureHost corresponding to the - * TextureClient passed in parameter. - * It is used when the TextureClient recycled. - * Only ImageBridge implements it. - */ - virtual void RemoveTextureFromCompositableAsync(AsyncTransactionTracker* aAsyncTransactionTracker, - CompositableClient* aCompositable, - TextureClient* aTexture) {} - struct TimedTextureClient { TimedTextureClient() : mTextureClient(nullptr), mFrameID(0), mProducerID(0) {} diff --git a/gfx/layers/ipc/CompositableTransactionParent.cpp b/gfx/layers/ipc/CompositableTransactionParent.cpp index e9056ee4de5d..56c80cbf584e 100644 --- a/gfx/layers/ipc/CompositableTransactionParent.cpp +++ b/gfx/layers/ipc/CompositableTransactionParent.cpp @@ -158,21 +158,6 @@ CompositableParentManager::ReceiveCompositableUpdate(const CompositableOperation compositable->RemoveTextureHost(tex); break; } - case CompositableOperationDetail::TOpRemoveTextureAsync: { - const OpRemoveTextureAsync& op = aEdit.detail().get_OpRemoveTextureAsync(); - RefPtr tex = TextureHost::AsTextureHost(op.textureParent()); - - MOZ_ASSERT(tex.get()); - compositable->RemoveTextureHost(tex); - - // Only ImageBridge child sends it. - MOZ_ASSERT(UsesImageBridge()); - if (UsesImageBridge()) { - ReplyRemoveTexture(OpReplyRemoveTexture(op.holderId(), - op.transactionId())); - } - break; - } case CompositableOperationDetail::TOpUseTexture: { const OpUseTexture& op = aEdit.detail().get_OpUseTexture(); diff --git a/gfx/layers/ipc/CompositableTransactionParent.h b/gfx/layers/ipc/CompositableTransactionParent.h index 748b0e3fb068..ca676c11561e 100644 --- a/gfx/layers/ipc/CompositableTransactionParent.h +++ b/gfx/layers/ipc/CompositableTransactionParent.h @@ -10,7 +10,6 @@ #include // for vector #include "mozilla/Attributes.h" // for override -#include "mozilla/layers/AsyncTransactionTracker.h" // for AsyncTransactionTracker #include "mozilla/layers/ISurfaceAllocator.h" // for ISurfaceAllocator #include "mozilla/layers/LayersMessages.h" // for EditReply, etc @@ -47,8 +46,6 @@ protected: bool ReceiveCompositableUpdate(const CompositableOperation& aEdit, EditReplyVector& replyv); - virtual void ReplyRemoveTexture(const OpReplyRemoveTexture& aReply) {}; - uint64_t mFwdTransactionId = 0; }; diff --git a/gfx/layers/ipc/ImageBridgeChild.cpp b/gfx/layers/ipc/ImageBridgeChild.cpp index 13d89e1def18..12c5e4af19fd 100644 --- a/gfx/layers/ipc/ImageBridgeChild.cpp +++ b/gfx/layers/ipc/ImageBridgeChild.cpp @@ -464,7 +464,6 @@ void ImageBridgeChild::MarkShutDown() { mTexturesWaitingRecycled.Clear(); - mTrackersHolder.DestroyAsyncTransactionTrackersHolder(); mCanSend = false; } @@ -649,11 +648,8 @@ ImageBridgeChild::UpdateAsyncCanvasRendererNow(AsyncCanvasRenderer* aWrapper) void ImageBridgeChild::FlushAllImagesSync(SynchronousTask* aTask, ImageClient* aClient, - ImageContainer* aContainer, - RefPtr aWaiter) + ImageContainer* aContainer) { - MOZ_ASSERT(!aWaiter); - AutoCompleteTask complete(aTask); if (!CanSend()) { @@ -665,7 +661,7 @@ ImageBridgeChild::FlushAllImagesSync(SynchronousTask* aTask, if (aContainer) { aContainer->ClearImagesFromImageBridge(); } - aClient->FlushAllImages(aWaiter); + aClient->FlushAllImages(); EndTransaction(); } @@ -682,16 +678,13 @@ ImageBridgeChild::FlushAllImages(ImageClient* aClient, ImageContainer* aContaine SynchronousTask task("FlushAllImages Lock"); - RefPtr waiter; - // RefPtrs on arguments are not needed since this dispatches synchronously. RefPtr runnable = WrapRunnable( RefPtr(this), &ImageBridgeChild::FlushAllImagesSync, &task, aClient, - aContainer, - waiter); + aContainer); GetMessageLoop()->PostTask(runnable.forget()); task.Wait(); @@ -1240,13 +1233,6 @@ ImageBridgeChild::RecvParentAsyncMessages(InfallibleTArrayIsSharedWithCompositor()); - MOZ_ASSERT(aCompositable->IsConnected()); - if (!aTexture || !aTexture->IsSharedWithCompositor() || !aCompositable->IsConnected()) { - return; - } - - CompositableOperation op( - nullptr, aCompositable->GetIPDLActor(), - OpRemoveTextureAsync( - mTrackersHolder.GetId(), - aAsyncTransactionTracker->GetId(), - nullptr, aCompositable->GetIPDLActor(), - nullptr, aTexture->GetIPDLActor())); - - mTxn->AddNoSwapEdit(op); - // Hold AsyncTransactionTracker until receving reply - mTrackersHolder.HoldUntilComplete(aAsyncTransactionTracker); -} - bool ImageBridgeChild::IsSameProcess() const { return OtherPid() == base::GetCurrentProcId(); diff --git a/gfx/layers/ipc/ImageBridgeChild.h b/gfx/layers/ipc/ImageBridgeChild.h index e23155793a70..6e51c2fdf549 100644 --- a/gfx/layers/ipc/ImageBridgeChild.h +++ b/gfx/layers/ipc/ImageBridgeChild.h @@ -12,7 +12,6 @@ #include "mozilla/Atomics.h" #include "mozilla/RefPtr.h" // for already_AddRefed #include "mozilla/ipc/SharedMemory.h" // for SharedMemory, etc -#include "mozilla/layers/AsyncTransactionTracker.h" // for AsyncTransactionTrackerHolder #include "mozilla/layers/CanvasClient.h" #include "mozilla/layers/CompositableForwarder.h" #include "mozilla/layers/CompositorTypes.h" @@ -37,7 +36,6 @@ class Shmem; namespace layers { class AsyncCanvasRenderer; -class AsyncTransactionTracker; class ImageClient; class ImageContainer; class ImageContainerChild; @@ -257,8 +255,7 @@ private: void FlushAllImagesSync( SynchronousTask* aTask, ImageClient* aClient, - ImageContainer* aContainer, - RefPtr aWaiter); + ImageContainer* aContainer); void ProxyAllocShmemNow(SynchronousTask* aTask, AllocShmemParams* aParams); void ProxyDeallocShmemNow(SynchronousTask* aTask, Shmem* aShmem); @@ -312,10 +309,6 @@ public: virtual void RemoveTextureFromCompositable(CompositableClient* aCompositable, TextureClient* aTexture) override; - virtual void RemoveTextureFromCompositableAsync(AsyncTransactionTracker* aAsyncTransactionTracker, - CompositableClient* aCompositable, - TextureClient* aTexture) override; - virtual void UseTiledLayerBuffer(CompositableClient* aCompositable, const SurfaceDescriptorTiles& aTileLayerDescriptor) override { @@ -408,8 +401,6 @@ private: * It defer calling of TextureClient recycle callback. */ nsDataHashtable > mTexturesWaitingRecycled; - - AsyncTransactionTrackersHolder mTrackersHolder; }; } // namespace layers diff --git a/gfx/layers/ipc/ImageBridgeParent.cpp b/gfx/layers/ipc/ImageBridgeParent.cpp index 0f058cf15751..417fa71ed07c 100644 --- a/gfx/layers/ipc/ImageBridgeParent.cpp +++ b/gfx/layers/ipc/ImageBridgeParent.cpp @@ -407,12 +407,6 @@ bool ImageBridgeParent::IsSameProcess() const return OtherPid() == base::GetCurrentProcId(); } -void -ImageBridgeParent::ReplyRemoveTexture(const OpReplyRemoveTexture& aReply) -{ - mPendingAsyncMessage.push_back(aReply); -} - void ImageBridgeParent::SendFenceHandleToNonRecycle(PTextureParent* aTexture) { diff --git a/gfx/layers/ipc/ImageBridgeParent.h b/gfx/layers/ipc/ImageBridgeParent.h index f6319b8891ef..f9d26232c6da 100644 --- a/gfx/layers/ipc/ImageBridgeParent.h +++ b/gfx/layers/ipc/ImageBridgeParent.h @@ -113,8 +113,6 @@ public: virtual bool IsSameProcess() const override; - virtual void ReplyRemoveTexture(const OpReplyRemoveTexture& aReply) override; - void SendFenceHandleToNonRecycle(PTextureParent* aTexture); void NotifyNotUsedToNonRecycle(PTextureParent* aTexture, diff --git a/gfx/layers/ipc/LayerTransactionChild.h b/gfx/layers/ipc/LayerTransactionChild.h index 52caa53c360a..3d56399f4a19 100644 --- a/gfx/layers/ipc/LayerTransactionChild.h +++ b/gfx/layers/ipc/LayerTransactionChild.h @@ -11,7 +11,6 @@ #include // for uint32_t #include "mozilla/Attributes.h" // for override #include "mozilla/ipc/ProtocolUtils.h" -#include "mozilla/layers/AsyncTransactionTracker.h" // for AsyncTransactionTracker #include "mozilla/layers/PLayerTransactionChild.h" #include "mozilla/RefPtr.h" diff --git a/gfx/layers/ipc/LayersMessages.ipdlh b/gfx/layers/ipc/LayersMessages.ipdlh index b1175f23192b..7f1a3a4abf86 100644 --- a/gfx/layers/ipc/LayersMessages.ipdlh +++ b/gfx/layers/ipc/LayersMessages.ipdlh @@ -375,18 +375,6 @@ struct OpRemoveTexture { PTexture texture; }; -struct OpRemoveTextureAsync { - uint64_t holderId; - uint64_t transactionId; - PCompositable compositable; - PTexture texture; -}; - -struct OpReplyRemoveTexture { - uint64_t holderId; - uint64_t transactionId; -}; - union MaybeFence { FenceHandle; null_t; @@ -454,7 +442,6 @@ union CompositableOperationDetail { OpUseTiledLayerBuffer; OpRemoveTexture; - OpRemoveTextureAsync; OpUseTexture; OpUseComponentAlphaTextures; @@ -531,7 +518,6 @@ union AsyncParentMessageData { OpDeliverFenceToNonRecycle; OpNotifyNotUsed; OpNotifyNotUsedToNonRecycle; - OpReplyRemoveTexture; }; } // namespace diff --git a/gfx/layers/ipc/ShadowLayers.cpp b/gfx/layers/ipc/ShadowLayers.cpp index 085ef46f85d6..82f54eb71d88 100644 --- a/gfx/layers/ipc/ShadowLayers.cpp +++ b/gfx/layers/ipc/ShadowLayers.cpp @@ -494,14 +494,6 @@ ShadowLayerForwarder::RemoveTextureFromCompositable(CompositableClient* aComposi } } -void -ShadowLayerForwarder::RemoveTextureFromCompositableAsync(AsyncTransactionTracker* aAsyncTransactionTracker, - CompositableClient* aCompositable, - TextureClient* aTexture) -{ - NS_RUNTIMEABORT("not reached"); -} - bool ShadowLayerForwarder::InWorkerThread() { diff --git a/gfx/layers/ipc/ShadowLayers.h b/gfx/layers/ipc/ShadowLayers.h index a0884c3109ec..8b207eb1ab31 100644 --- a/gfx/layers/ipc/ShadowLayers.h +++ b/gfx/layers/ipc/ShadowLayers.h @@ -254,10 +254,6 @@ public: virtual void RemoveTextureFromCompositable(CompositableClient* aCompositable, TextureClient* aTexture) override; - virtual void RemoveTextureFromCompositableAsync(AsyncTransactionTracker* aAsyncTransactionTracker, - CompositableClient* aCompositable, - TextureClient* aTexture) override; - /** * Communicate to the compositor that aRegion in the texture identified by aLayer * and aIdentifier has been updated to aThebesBuffer. diff --git a/gfx/layers/moz.build b/gfx/layers/moz.build index 07e38505b935..dcd8135f5fd0 100644 --- a/gfx/layers/moz.build +++ b/gfx/layers/moz.build @@ -163,7 +163,6 @@ EXPORTS.mozilla.layers += [ 'ipc/APZChild.h', 'ipc/APZCTreeManagerChild.h', 'ipc/APZCTreeManagerParent.h', - 'ipc/AsyncTransactionTracker.h', 'ipc/CompositableForwarder.h', 'ipc/CompositableTransactionParent.h', 'ipc/CompositorBridgeChild.h', @@ -332,7 +331,6 @@ UNIFIED_SOURCES += [ 'ipc/APZChild.cpp', 'ipc/APZCTreeManagerChild.cpp', 'ipc/APZCTreeManagerParent.cpp', - 'ipc/AsyncTransactionTracker.cpp', 'ipc/CompositableForwarder.cpp', 'ipc/CompositableTransactionParent.cpp', 'ipc/CompositorBench.cpp', From db63ec0ace56f12c469a7e8dca7d9d54864432df Mon Sep 17 00:00:00 2001 From: Matt Woodrow Date: Thu, 27 Oct 2016 20:59:50 +1300 Subject: [PATCH 15/24] Bug 1313281 - Part 2: Remove DeliverFence. r=sotaro --- gfx/layers/composite/TextureHost.cpp | 22 -------------- gfx/layers/composite/TextureHost.h | 15 ---------- gfx/layers/ipc/CompositorBridgeChild.cpp | 16 ---------- gfx/layers/ipc/CompositorBridgeChild.h | 2 -- gfx/layers/ipc/CompositorBridgeParent.cpp | 1 - gfx/layers/ipc/ISurfaceAllocator.cpp | 28 ------------------ gfx/layers/ipc/ISurfaceAllocator.h | 2 -- gfx/layers/ipc/ImageBridgeChild.cpp | 36 ----------------------- gfx/layers/ipc/ImageBridgeChild.h | 4 --- gfx/layers/ipc/ImageBridgeParent.cpp | 31 ------------------- gfx/layers/ipc/ImageBridgeParent.h | 2 -- gfx/layers/ipc/LayersMessages.ipdlh | 12 -------- gfx/vr/ipc/VRManagerChild.cpp | 16 ---------- gfx/vr/ipc/VRManagerChild.h | 2 -- 14 files changed, 189 deletions(-) diff --git a/gfx/layers/composite/TextureHost.cpp b/gfx/layers/composite/TextureHost.cpp index e506d28d0c39..40920f5a3566 100644 --- a/gfx/layers/composite/TextureHost.cpp +++ b/gfx/layers/composite/TextureHost.cpp @@ -156,28 +156,6 @@ TextureHost::GetIPDLActor() return mActor; } -bool -TextureHost::SetReleaseFenceHandle(const FenceHandle& aReleaseFenceHandle) -{ - if (!aReleaseFenceHandle.IsValid()) { - // HWC might not provide Fence. - // In this case, HWC implicitly handles buffer's fence. - return false; - } - - mReleaseFenceHandle.Merge(aReleaseFenceHandle); - - return true; -} - -FenceHandle -TextureHost::GetAndResetReleaseFenceHandle() -{ - FenceHandle fence; - mReleaseFenceHandle.TransferToAnotherFenceHandle(fence); - return fence; -} - void TextureHost::SetAcquireFenceHandle(const FenceHandle& aAcquireFenceHandle) { diff --git a/gfx/layers/composite/TextureHost.h b/gfx/layers/composite/TextureHost.h index c5cecd6f186b..170e9cf253d3 100644 --- a/gfx/layers/composite/TextureHost.h +++ b/gfx/layers/composite/TextureHost.h @@ -586,17 +586,6 @@ public: int NumCompositableRefs() const { return mCompositableCount; } - /** - * Store a fence that will signal when the current buffer is no longer being read. - * Similar to android's GLConsumer::setReleaseFence() - */ - bool SetReleaseFenceHandle(const FenceHandle& aReleaseFenceHandle); - - /** - * Return a releaseFence's Fence and clear a reference to the Fence. - */ - FenceHandle GetAndResetReleaseFenceHandle(); - void SetAcquireFenceHandle(const FenceHandle& aAcquireFenceHandle); /** @@ -610,8 +599,6 @@ public: virtual bool NeedsFenceHandle() { return false; } - virtual FenceHandle GetCompositorReleaseFence() { return FenceHandle(); } - void DeserializeReadLock(const ReadLockDescriptor& aDesc, ISurfaceAllocator* aAllocator); @@ -624,8 +611,6 @@ public: protected: void ReadUnlock(); - FenceHandle mReleaseFenceHandle; - FenceHandle mAcquireFenceHandle; void RecycleTexture(TextureFlags aFlags); diff --git a/gfx/layers/ipc/CompositorBridgeChild.cpp b/gfx/layers/ipc/CompositorBridgeChild.cpp index 9944710d2366..f9a5d9a35460 100644 --- a/gfx/layers/ipc/CompositorBridgeChild.cpp +++ b/gfx/layers/ipc/CompositorBridgeChild.cpp @@ -876,12 +876,6 @@ CompositorBridgeChild::RecvParentAsyncMessages(InfallibleTArray client = mTexturesWaitingRecycled.Get(aTextureId); - if (!client) { - return; - } - client->SetReleaseFenceHandle(aReleaseFenceHandle); -} - void CompositorBridgeChild::CancelWaitForRecycle(uint64_t aTextureId) { diff --git a/gfx/layers/ipc/CompositorBridgeChild.h b/gfx/layers/ipc/CompositorBridgeChild.h index 18d4f733bc08..8ad33bc09481 100644 --- a/gfx/layers/ipc/CompositorBridgeChild.h +++ b/gfx/layers/ipc/CompositorBridgeChild.h @@ -189,8 +189,6 @@ public: */ void NotifyNotUsed(uint64_t aTextureId, uint64_t aFwdTransactionId); - void DeliverFence(uint64_t aTextureId, FenceHandle& aReleaseFenceHandle); - virtual void CancelWaitForRecycle(uint64_t aTextureId) override; TextureClientPool* GetTexturePool(KnowsCompositor* aAllocator, diff --git a/gfx/layers/ipc/CompositorBridgeParent.cpp b/gfx/layers/ipc/CompositorBridgeParent.cpp index ac08c18719b0..1403fca1831d 100644 --- a/gfx/layers/ipc/CompositorBridgeParent.cpp +++ b/gfx/layers/ipc/CompositorBridgeParent.cpp @@ -118,7 +118,6 @@ CompositorBridgeParentBase::NotifyNotUsed(PTextureParent* aTexture, uint64_t aTr } if (texture->GetFlags() & TextureFlags::RECYCLE) { - SendFenceHandleIfPresent(aTexture); uint64_t textureId = TextureHost::GetTextureSerial(aTexture); mPendingAsyncMessage.push_back( OpNotifyNotUsed(textureId, aTransactionId)); diff --git a/gfx/layers/ipc/ISurfaceAllocator.cpp b/gfx/layers/ipc/ISurfaceAllocator.cpp index b03210f62ab8..57da4d9cd8a7 100644 --- a/gfx/layers/ipc/ISurfaceAllocator.cpp +++ b/gfx/layers/ipc/ISurfaceAllocator.cpp @@ -24,34 +24,6 @@ mozilla::ipc::SharedMemory::SharedMemoryType OptimalShmemType() return ipc::SharedMemory::SharedMemoryType::TYPE_BASIC; } -void -HostIPCAllocator::SendFenceHandleIfPresent(PTextureParent* aTexture) -{ - RefPtr texture = TextureHost::AsTextureHost(aTexture); - if (!texture) { - return; - } - - if (!(texture->GetFlags() & TextureFlags::RECYCLE) && - !texture->NeedsFenceHandle()) { - return; - } - - uint64_t textureId = TextureHost::GetTextureSerial(aTexture); - - // Send a ReleaseFence of CompositorOGL. - FenceHandle fence = texture->GetCompositorReleaseFence(); - if (fence.IsValid()) { - mPendingAsyncMessage.push_back(OpDeliverFence(textureId, fence)); - } - - // Send a ReleaseFence that is set to TextureHost by HwcComposer2D. - fence = texture->GetAndResetReleaseFenceHandle(); - if (fence.IsValid()) { - mPendingAsyncMessage.push_back(OpDeliverFence(textureId, fence)); - } -} - void HostIPCAllocator::SendPendingAsyncMessages() { diff --git a/gfx/layers/ipc/ISurfaceAllocator.h b/gfx/layers/ipc/ISurfaceAllocator.h index 95847512ee9f..ee3e03df91d4 100644 --- a/gfx/layers/ipc/ISurfaceAllocator.h +++ b/gfx/layers/ipc/ISurfaceAllocator.h @@ -136,8 +136,6 @@ public: virtual void SendAsyncMessage(const InfallibleTArray& aMessage) = 0; - void SendFenceHandleIfPresent(PTextureParent* aTexture); - virtual void SendPendingAsyncMessages(); virtual void SetAboutToSendAsyncMessages() diff --git a/gfx/layers/ipc/ImageBridgeChild.cpp b/gfx/layers/ipc/ImageBridgeChild.cpp index 12c5e4af19fd..d2b6296233ee 100644 --- a/gfx/layers/ipc/ImageBridgeChild.cpp +++ b/gfx/layers/ipc/ImageBridgeChild.cpp @@ -245,16 +245,6 @@ ImageBridgeChild::NotifyNotUsed(uint64_t aTextureId, uint64_t aFwdTransactionId) mTexturesWaitingRecycled.Remove(aTextureId); } -void -ImageBridgeChild::DeliverFence(uint64_t aTextureId, FenceHandle& aReleaseFenceHandle) -{ - RefPtr client = mTexturesWaitingRecycled.Get(aTextureId); - if (!client) { - return; - } - client->SetReleaseFenceHandle(aReleaseFenceHandle); -} - void ImageBridgeChild::HoldUntilFenceHandleDelivery(TextureClient* aClient, uint64_t aTransactionId) { @@ -265,15 +255,6 @@ ImageBridgeChild::HoldUntilFenceHandleDelivery(TextureClient* aClient, uint64_t NS_RUNTIMEABORT("not reached"); } -void -ImageBridgeChild::DeliverFenceToNonRecycle(uint64_t aTextureId, FenceHandle& aReleaseFenceHandle) -{ - // XXX Re-enable fence handling - return; - - NS_RUNTIMEABORT("not reached"); -} - void ImageBridgeChild::NotifyNotUsedToNonRecycle(uint64_t aTextureId, uint64_t aTransactionId) { @@ -1201,23 +1182,6 @@ ImageBridgeChild::RecvParentAsyncMessages(InfallibleTArray texture = TextureHost::AsTextureHost(aTexture); - if (!texture) { - return; - } - - if (!(texture->GetFlags() & TextureFlags::RECYCLE) && - !texture->NeedsFenceHandle()) { - return; - } - - uint64_t textureId = TextureHost::GetTextureSerial(aTexture); - - // Send a ReleaseFence of CompositorOGL. - FenceHandle fence = texture->GetCompositorReleaseFence(); - if (fence.IsValid()) { - mPendingAsyncMessage.push_back(OpDeliverFenceToNonRecycle(textureId, fence)); - } - - // Send a ReleaseFence that is set to TextureHost by HwcComposer2D. - fence = texture->GetAndResetReleaseFenceHandle(); - if (fence.IsValid()) { - mPendingAsyncMessage.push_back(OpDeliverFenceToNonRecycle(textureId, fence)); - } -} - void ImageBridgeParent::NotifyNotUsedToNonRecycle(PTextureParent* aTexture, uint64_t aTransactionId) @@ -449,8 +421,6 @@ ImageBridgeParent::NotifyNotUsedToNonRecycle(PTextureParent* aTexture, return; } - SendFenceHandleToNonRecycle(aTexture); - uint64_t textureId = TextureHost::GetTextureSerial(aTexture); mPendingAsyncMessage.push_back( OpNotifyNotUsedToNonRecycle(textureId, aTransactionId)); @@ -502,7 +472,6 @@ ImageBridgeParent::NotifyNotUsed(PTextureParent* aTexture, uint64_t aTransaction return; } - SendFenceHandleIfPresent(aTexture); uint64_t textureId = TextureHost::GetTextureSerial(aTexture); mPendingAsyncMessage.push_back( OpNotifyNotUsed(textureId, aTransactionId)); diff --git a/gfx/layers/ipc/ImageBridgeParent.h b/gfx/layers/ipc/ImageBridgeParent.h index f9d26232c6da..2507c4a1e3b3 100644 --- a/gfx/layers/ipc/ImageBridgeParent.h +++ b/gfx/layers/ipc/ImageBridgeParent.h @@ -113,8 +113,6 @@ public: virtual bool IsSameProcess() const override; - void SendFenceHandleToNonRecycle(PTextureParent* aTexture); - void NotifyNotUsedToNonRecycle(PTextureParent* aTexture, uint64_t aTransactionId); diff --git a/gfx/layers/ipc/LayersMessages.ipdlh b/gfx/layers/ipc/LayersMessages.ipdlh index 7f1a3a4abf86..18b2cbdc8a1a 100644 --- a/gfx/layers/ipc/LayersMessages.ipdlh +++ b/gfx/layers/ipc/LayersMessages.ipdlh @@ -416,16 +416,6 @@ union MaybeRegion { null_t; }; -struct OpDeliverFence { - uint64_t TextureId; - FenceHandle fence; -}; - -struct OpDeliverFenceToNonRecycle { - uint64_t TextureId; - FenceHandle fence; -}; - struct OpNotifyNotUsed { uint64_t TextureId; uint64_t fwdTransactionId; @@ -514,8 +504,6 @@ union EditReply { }; union AsyncParentMessageData { - OpDeliverFence; - OpDeliverFenceToNonRecycle; OpNotifyNotUsed; OpNotifyNotUsedToNonRecycle; }; diff --git a/gfx/vr/ipc/VRManagerChild.cpp b/gfx/vr/ipc/VRManagerChild.cpp index 16beb9b61115..f3776dbad696 100644 --- a/gfx/vr/ipc/VRManagerChild.cpp +++ b/gfx/vr/ipc/VRManagerChild.cpp @@ -319,12 +319,6 @@ VRManagerChild::RecvParentAsyncMessages(InfallibleTArray const AsyncParentMessageData& message = aMessages[i]; switch (message.type()) { - case AsyncParentMessageData::TOpDeliverFence: { - const OpDeliverFence& op = message.get_OpDeliverFence(); - FenceHandle fence = op.fence(); - DeliverFence(op.TextureId(), fence); - break; - } case AsyncParentMessageData::TOpNotifyNotUsed: { const OpNotifyNotUsed& op = message.get_OpNotifyNotUsed(); NotifyNotUsed(op.TextureId(), op.fwdTransactionId()); @@ -347,16 +341,6 @@ VRManagerChild::CreateTexture(const SurfaceDescriptor& aSharedData, return SendPTextureConstructor(aSharedData, aLayersBackend, aFlags, aSerial); } -void -VRManagerChild::DeliverFence(uint64_t aTextureId, FenceHandle& aReleaseFenceHandle) -{ - RefPtr client = mTexturesWaitingRecycled.Get(aTextureId); - if (!client) { - return; - } - client->SetReleaseFenceHandle(aReleaseFenceHandle); -} - void VRManagerChild::CancelWaitForRecycle(uint64_t aTextureId) { diff --git a/gfx/vr/ipc/VRManagerChild.h b/gfx/vr/ipc/VRManagerChild.h index 17344f4dfa7e..b5131a193a33 100644 --- a/gfx/vr/ipc/VRManagerChild.h +++ b/gfx/vr/ipc/VRManagerChild.h @@ -144,8 +144,6 @@ private: void FireDOMVRDisplayConnectEventInternal(); void FireDOMVRDisplayDisconnectEventInternal(); void FireDOMVRDisplayPresentChangeEventInternal(); - - void DeliverFence(uint64_t aTextureId, FenceHandle& aReleaseFenceHandle); /** * Notify id of Texture When host side end its use. Transaction id is used to * make sure if there is no newer usage. From cd3c3b32680611dc5fe6f6f788bd24c1eb4fdece Mon Sep 17 00:00:00 2001 From: Matt Woodrow Date: Thu, 27 Oct 2016 21:00:20 +1300 Subject: [PATCH 16/24] Bug 1313281 - Part 3: Remove Fence from TimedTexture. r=sotaro --- gfx/layers/client/TextureClient.h | 11 ----------- gfx/layers/composite/TextureHost.cpp | 13 ------------- gfx/layers/composite/TextureHost.h | 11 ----------- gfx/layers/ipc/CompositableTransactionParent.cpp | 8 -------- gfx/layers/ipc/ImageBridgeChild.cpp | 2 -- gfx/layers/ipc/LayersMessages.ipdlh | 7 ------- gfx/layers/ipc/ShadowLayers.cpp | 2 -- 7 files changed, 54 deletions(-) diff --git a/gfx/layers/client/TextureClient.h b/gfx/layers/client/TextureClient.h index 76fe2acb66d7..b28a633c558e 100644 --- a/gfx/layers/client/TextureClient.h +++ b/gfx/layers/client/TextureClient.h @@ -595,16 +595,6 @@ public: return fence; } - virtual void SetAcquireFenceHandle(const FenceHandle& aAcquireFenceHandle) - { - mAcquireFenceHandle = aAcquireFenceHandle; - } - - virtual const FenceHandle& GetAcquireFenceHandle() const - { - return mAcquireFenceHandle; - } - /** * Track how much of this texture is wasted. * For example we might allocate a 256x256 tile but only use 10x10. @@ -733,7 +723,6 @@ protected: TextureFlags mFlags; FenceHandle mReleaseFenceHandle; - FenceHandle mAcquireFenceHandle; gl::GfxTextureWasteTracker mWasteTracker; diff --git a/gfx/layers/composite/TextureHost.cpp b/gfx/layers/composite/TextureHost.cpp index 40920f5a3566..681777e23509 100644 --- a/gfx/layers/composite/TextureHost.cpp +++ b/gfx/layers/composite/TextureHost.cpp @@ -156,19 +156,6 @@ TextureHost::GetIPDLActor() return mActor; } -void -TextureHost::SetAcquireFenceHandle(const FenceHandle& aAcquireFenceHandle) -{ - mAcquireFenceHandle = aAcquireFenceHandle; -} - -FenceHandle -TextureHost::GetAndResetAcquireFenceHandle() -{ - RefPtr fdObj = mAcquireFenceHandle.GetAndResetFdObj(); - return FenceHandle(fdObj); -} - void TextureHost::SetLastFwdTransactionId(uint64_t aTransactionId) { diff --git a/gfx/layers/composite/TextureHost.h b/gfx/layers/composite/TextureHost.h index 170e9cf253d3..0c8cc487519b 100644 --- a/gfx/layers/composite/TextureHost.h +++ b/gfx/layers/composite/TextureHost.h @@ -586,15 +586,6 @@ public: int NumCompositableRefs() const { return mCompositableCount; } - void SetAcquireFenceHandle(const FenceHandle& aAcquireFenceHandle); - - /** - * Return a acquireFence's Fence and clear a reference to the Fence. - */ - FenceHandle GetAndResetAcquireFenceHandle(); - - virtual void WaitAcquireFenceHandleSyncComplete() {}; - void SetLastFwdTransactionId(uint64_t aTransactionId); virtual bool NeedsFenceHandle() { return false; } @@ -611,8 +602,6 @@ public: protected: void ReadUnlock(); - FenceHandle mAcquireFenceHandle; - void RecycleTexture(TextureFlags aFlags); virtual void UpdatedInternal(const nsIntRegion *Region) {} diff --git a/gfx/layers/ipc/CompositableTransactionParent.cpp b/gfx/layers/ipc/CompositableTransactionParent.cpp index 56c80cbf584e..efd70f496adc 100644 --- a/gfx/layers/ipc/CompositableTransactionParent.cpp +++ b/gfx/layers/ipc/CompositableTransactionParent.cpp @@ -173,14 +173,6 @@ CompositableParentManager::ReceiveCompositableUpdate(const CompositableOperation t->mProducerID = timedTexture.producerID(); t->mTexture->DeserializeReadLock(timedTexture.sharedLock(), this); MOZ_ASSERT(ValidatePictureRect(t->mTexture->GetSize(), t->mPictureRect)); - - MaybeFence maybeFence = timedTexture.fence(); - if (maybeFence.type() == MaybeFence::TFenceHandle) { - FenceHandle fence = maybeFence.get_FenceHandle(); - if (fence.IsValid()) { - t->mTexture->SetAcquireFenceHandle(fence); - } - } } if (textures.Length() > 0) { compositable->UseTextureHost(textures); diff --git a/gfx/layers/ipc/ImageBridgeChild.cpp b/gfx/layers/ipc/ImageBridgeChild.cpp index d2b6296233ee..f0a4d1fe96fe 100644 --- a/gfx/layers/ipc/ImageBridgeChild.cpp +++ b/gfx/layers/ipc/ImageBridgeChild.cpp @@ -171,10 +171,8 @@ ImageBridgeChild::UseTextures(CompositableClient* aCompositable, ReadLockDescriptor readLock; t.mTextureClient->SerializeReadLock(readLock); - FenceHandle fence = t.mTextureClient->GetAcquireFenceHandle(); textures.AppendElement(TimedTexture(nullptr, t.mTextureClient->GetIPDLActor(), readLock, - fence.IsValid() ? MaybeFence(fence) : MaybeFence(null_t()), t.mTimeStamp, t.mPictureRect, t.mFrameID, t.mProducerID)); diff --git a/gfx/layers/ipc/LayersMessages.ipdlh b/gfx/layers/ipc/LayersMessages.ipdlh index 18b2cbdc8a1a..8da70d6fa2c8 100644 --- a/gfx/layers/ipc/LayersMessages.ipdlh +++ b/gfx/layers/ipc/LayersMessages.ipdlh @@ -43,7 +43,6 @@ using mozilla::layers::EventRegionsOverride from "mozilla/layers/LayersTypes.h"; using mozilla::layers::DiagnosticTypes from "mozilla/layers/CompositorTypes.h"; using struct mozilla::layers::ScrollMetadata from "FrameMetrics.h"; using mozilla::layers::FrameMetrics::ViewID from "FrameMetrics.h"; -using struct mozilla::layers::FenceHandle from "mozilla/layers/FenceUtils.h"; using mozilla::layers::LayersBackend from "mozilla/layers/LayersTypes.h"; using mozilla::layers::MaybeLayerClip from "FrameMetrics.h"; @@ -375,15 +374,9 @@ struct OpRemoveTexture { PTexture texture; }; -union MaybeFence { - FenceHandle; - null_t; -}; - struct TimedTexture { PTexture texture; ReadLockDescriptor sharedLock; - MaybeFence fence; TimeStamp timeStamp; IntRect picture; uint32_t frameID; diff --git a/gfx/layers/ipc/ShadowLayers.cpp b/gfx/layers/ipc/ShadowLayers.cpp index 82f54eb71d88..6863a2377b9d 100644 --- a/gfx/layers/ipc/ShadowLayers.cpp +++ b/gfx/layers/ipc/ShadowLayers.cpp @@ -387,12 +387,10 @@ ShadowLayerForwarder::UseTextures(CompositableClient* aCompositable, MOZ_ASSERT(t.mTextureClient); MOZ_ASSERT(t.mTextureClient->GetIPDLActor()); MOZ_RELEASE_ASSERT(t.mTextureClient->GetIPDLActor()->GetIPCChannel() == mShadowManager->GetIPCChannel()); - FenceHandle fence = t.mTextureClient->GetAcquireFenceHandle(); ReadLockDescriptor readLock; t.mTextureClient->SerializeReadLock(readLock); textures.AppendElement(TimedTexture(nullptr, t.mTextureClient->GetIPDLActor(), readLock, - fence.IsValid() ? MaybeFence(fence) : MaybeFence(null_t()), t.mTimeStamp, t.mPictureRect, t.mFrameID, t.mProducerID)); if ((t.mTextureClient->GetFlags() & TextureFlags::IMMEDIATE_UPLOAD) From 56b15734eb346d9a941810c138658b223b4281ae Mon Sep 17 00:00:00 2001 From: Matt Woodrow Date: Thu, 27 Oct 2016 21:02:09 +1300 Subject: [PATCH 17/24] Bug 1313281 - Part 4: Remove Fence parameter from TextureData::Lock. r=sotaro --- gfx/layers/BufferTexture.h | 2 +- gfx/layers/TextureDIB.h | 2 +- gfx/layers/basic/TextureClientX11.cpp | 2 +- gfx/layers/basic/TextureClientX11.h | 2 +- gfx/layers/client/GPUVideoTextureClient.h | 2 +- gfx/layers/client/TextureClient.cpp | 3 +-- gfx/layers/client/TextureClient.h | 15 +-------------- gfx/layers/client/TextureClientSharedSurface.h | 2 +- gfx/layers/d3d11/TextureD3D11.cpp | 4 ++-- gfx/layers/d3d11/TextureD3D11.h | 5 ++--- gfx/layers/d3d9/TextureD3D9.cpp | 2 +- gfx/layers/d3d9/TextureD3D9.h | 4 ++-- .../opengl/MacIOSurfaceTextureClientOGL.cpp | 2 +- gfx/layers/opengl/MacIOSurfaceTextureClientOGL.h | 2 +- gfx/layers/opengl/TextureClientOGL.h | 4 ++-- 15 files changed, 19 insertions(+), 34 deletions(-) diff --git a/gfx/layers/BufferTexture.h b/gfx/layers/BufferTexture.h index 91c6b90459a9..2999d1d944be 100644 --- a/gfx/layers/BufferTexture.h +++ b/gfx/layers/BufferTexture.h @@ -43,7 +43,7 @@ public: YUVColorSpace aYUVColorSpace, TextureFlags aTextureFlags); - virtual bool Lock(OpenMode aMode, FenceHandle*) override { return true; } + virtual bool Lock(OpenMode aMode) override { return true; } virtual void Unlock() override {} diff --git a/gfx/layers/TextureDIB.h b/gfx/layers/TextureDIB.h index eb34d387bf5d..7eed7e58c180 100644 --- a/gfx/layers/TextureDIB.h +++ b/gfx/layers/TextureDIB.h @@ -18,7 +18,7 @@ namespace layers { class DIBTextureData : public TextureData { public: - virtual bool Lock(OpenMode, FenceHandle*) override { return true; } + virtual bool Lock(OpenMode) override { return true; } virtual void Unlock() override {} diff --git a/gfx/layers/basic/TextureClientX11.cpp b/gfx/layers/basic/TextureClientX11.cpp index 2635229255b3..c79ab1a539ae 100644 --- a/gfx/layers/basic/TextureClientX11.cpp +++ b/gfx/layers/basic/TextureClientX11.cpp @@ -34,7 +34,7 @@ X11TextureData::X11TextureData(gfx::IntSize aSize, gfx::SurfaceFormat aFormat, } bool -X11TextureData::Lock(OpenMode aMode, FenceHandle*) +X11TextureData::Lock(OpenMode aMode) { return true; } diff --git a/gfx/layers/basic/TextureClientX11.h b/gfx/layers/basic/TextureClientX11.h index d83673209b93..084538ea165d 100644 --- a/gfx/layers/basic/TextureClientX11.h +++ b/gfx/layers/basic/TextureClientX11.h @@ -21,7 +21,7 @@ public: virtual bool Serialize(SurfaceDescriptor& aOutDescriptor) override; - virtual bool Lock(OpenMode aMode, FenceHandle*) override; + virtual bool Lock(OpenMode aMode) override; virtual void Unlock() override; diff --git a/gfx/layers/client/GPUVideoTextureClient.h b/gfx/layers/client/GPUVideoTextureClient.h index 552f4782758a..fbad4c68e94e 100644 --- a/gfx/layers/client/GPUVideoTextureClient.h +++ b/gfx/layers/client/GPUVideoTextureClient.h @@ -24,7 +24,7 @@ public: virtual void FillInfo(TextureData::Info& aInfo) const override; - virtual bool Lock(OpenMode, FenceHandle*) override { return true; }; + virtual bool Lock(OpenMode) override { return true; }; virtual void Unlock() override {}; diff --git a/gfx/layers/client/TextureClient.cpp b/gfx/layers/client/TextureClient.cpp index 35270abfc703..61132670d01f 100644 --- a/gfx/layers/client/TextureClient.cpp +++ b/gfx/layers/client/TextureClient.cpp @@ -498,8 +498,7 @@ TextureClient::Lock(OpenMode aMode) LockActor(); - FenceHandle* fence = (mReleaseFenceHandle.IsValid() && (aMode & OpenMode::OPEN_WRITE)) ? &mReleaseFenceHandle : nullptr; - mIsLocked = mData->Lock(aMode, fence); + mIsLocked = mData->Lock(aMode); mOpenMode = aMode; auto format = GetFormat(); diff --git a/gfx/layers/client/TextureClient.h b/gfx/layers/client/TextureClient.h index b28a633c558e..d2ee5bcd3350 100644 --- a/gfx/layers/client/TextureClient.h +++ b/gfx/layers/client/TextureClient.h @@ -260,7 +260,7 @@ public: virtual void FillInfo(TextureData::Info& aInfo) const = 0; - virtual bool Lock(OpenMode aMode, FenceHandle* aFence) = 0; + virtual bool Lock(OpenMode aMode) = 0; virtual void Unlock() = 0; @@ -583,18 +583,6 @@ public: */ void Destroy(bool sync = false); - virtual void SetReleaseFenceHandle(const FenceHandle& aReleaseFenceHandle) - { - mReleaseFenceHandle.Merge(aReleaseFenceHandle); - } - - virtual FenceHandle GetAndResetReleaseFenceHandle() - { - FenceHandle fence; - mReleaseFenceHandle.TransferToAnotherFenceHandle(fence); - return fence; - } - /** * Track how much of this texture is wasted. * For example we might allocate a 256x256 tile but only use 10x10. @@ -722,7 +710,6 @@ protected: RefPtr mBorrowedDrawTarget; TextureFlags mFlags; - FenceHandle mReleaseFenceHandle; gl::GfxTextureWasteTracker mWasteTracker; diff --git a/gfx/layers/client/TextureClientSharedSurface.h b/gfx/layers/client/TextureClientSharedSurface.h index 95deb759b916..cfe5085f890f 100644 --- a/gfx/layers/client/TextureClientSharedSurface.h +++ b/gfx/layers/client/TextureClientSharedSurface.h @@ -40,7 +40,7 @@ public: ~SharedSurfaceTextureData(); - virtual bool Lock(OpenMode, FenceHandle*) override { return false; } + virtual bool Lock(OpenMode) override { return false; } virtual void Unlock() override {} diff --git a/gfx/layers/d3d11/TextureD3D11.cpp b/gfx/layers/d3d11/TextureD3D11.cpp index aae0707e4f95..aca8ad67742a 100644 --- a/gfx/layers/d3d11/TextureD3D11.cpp +++ b/gfx/layers/d3d11/TextureD3D11.cpp @@ -249,7 +249,7 @@ D3D11TextureData::~D3D11TextureData() // when it calls EndDraw. This EndDraw should not execute anything so it // shouldn't -really- need the lock but the debug layer chokes on this. if (mDrawTarget) { - Lock(OpenMode::OPEN_NONE, nullptr); + Lock(OpenMode::OPEN_NONE); mDrawTarget = nullptr; Unlock(); } @@ -257,7 +257,7 @@ D3D11TextureData::~D3D11TextureData() } bool -D3D11TextureData::Lock(OpenMode aMode, FenceHandle*) +D3D11TextureData::Lock(OpenMode aMode) { if (!LockD3DTexture(mTexture.get())) { return false; diff --git a/gfx/layers/d3d11/TextureD3D11.h b/gfx/layers/d3d11/TextureD3D11.h index e36f9ed784a3..e97d7be6f82b 100644 --- a/gfx/layers/d3d11/TextureD3D11.h +++ b/gfx/layers/d3d11/TextureD3D11.h @@ -65,7 +65,7 @@ public: virtual bool UpdateFromSurface(gfx::SourceSurface* aSurface) override; - virtual bool Lock(OpenMode aMode, FenceHandle*) override; + virtual bool Lock(OpenMode aMode) override; virtual void Unlock() override; @@ -77,7 +77,6 @@ public: TextureFlags aFlags, TextureAllocationFlags aAllocFlags) const override; - // TODO - merge this with the FenceHandle API! virtual void SyncWithObject(SyncObject* aSync) override; ID3D11Texture2D* GetD3D11Texture() { return mTexture; } @@ -136,7 +135,7 @@ public: const gfx::IntSize& aSizeY, const gfx::IntSize& aSizeCbCr); - virtual bool Lock(OpenMode, FenceHandle*) override { return true; } + virtual bool Lock(OpenMode) override { return true; } virtual void Unlock() override {} diff --git a/gfx/layers/d3d9/TextureD3D9.cpp b/gfx/layers/d3d9/TextureD3D9.cpp index 2f6f016a3233..fd7f0c024465 100644 --- a/gfx/layers/d3d9/TextureD3D9.cpp +++ b/gfx/layers/d3d9/TextureD3D9.cpp @@ -610,7 +610,7 @@ D3D9TextureData::FillInfo(TextureData::Info& aInfo) const } bool -D3D9TextureData::Lock(OpenMode aMode, FenceHandle*) +D3D9TextureData::Lock(OpenMode aMode) { if (!DeviceManagerD3D9::GetDevice()) { // If the device has failed then we should not lock the surface, diff --git a/gfx/layers/d3d9/TextureD3D9.h b/gfx/layers/d3d9/TextureD3D9.h index 8ed51633c64b..11acc483dabd 100644 --- a/gfx/layers/d3d9/TextureD3D9.h +++ b/gfx/layers/d3d9/TextureD3D9.h @@ -178,7 +178,7 @@ public: virtual bool Serialize(SurfaceDescriptor& aOutDescrptor) override; - virtual bool Lock(OpenMode aMode, FenceHandle*) override; + virtual bool Lock(OpenMode aMode) override; virtual void Unlock() override; @@ -227,7 +227,7 @@ public: virtual void FillInfo(TextureData::Info& aInfo) const override; - virtual bool Lock(OpenMode, FenceHandle*) override { return true; } + virtual bool Lock(OpenMode) override { return true; } virtual void Unlock() override {} diff --git a/gfx/layers/opengl/MacIOSurfaceTextureClientOGL.cpp b/gfx/layers/opengl/MacIOSurfaceTextureClientOGL.cpp index ec62eefbe3ae..dd522e650342 100644 --- a/gfx/layers/opengl/MacIOSurfaceTextureClientOGL.cpp +++ b/gfx/layers/opengl/MacIOSurfaceTextureClientOGL.cpp @@ -76,7 +76,7 @@ MacIOSurfaceTextureData::FillInfo(TextureData::Info& aInfo) const } bool -MacIOSurfaceTextureData::Lock(OpenMode, FenceHandle*) +MacIOSurfaceTextureData::Lock(OpenMode) { mSurface->Lock(false); return true; diff --git a/gfx/layers/opengl/MacIOSurfaceTextureClientOGL.h b/gfx/layers/opengl/MacIOSurfaceTextureClientOGL.h index 175fffa0affe..21e4459537b9 100644 --- a/gfx/layers/opengl/MacIOSurfaceTextureClientOGL.h +++ b/gfx/layers/opengl/MacIOSurfaceTextureClientOGL.h @@ -27,7 +27,7 @@ public: virtual void FillInfo(TextureData::Info& aInfo) const override; - virtual bool Lock(OpenMode, FenceHandle*) override; + virtual bool Lock(OpenMode) override; virtual void Unlock() override; diff --git a/gfx/layers/opengl/TextureClientOGL.h b/gfx/layers/opengl/TextureClientOGL.h index dca1bf9708df..6555f138adda 100644 --- a/gfx/layers/opengl/TextureClientOGL.h +++ b/gfx/layers/opengl/TextureClientOGL.h @@ -37,7 +37,7 @@ public: virtual void Forget(LayersIPCChannel*) override { mImage = nullptr; } // Unused functions. - virtual bool Lock(OpenMode, FenceHandle*) override { return true; } + virtual bool Lock(OpenMode) override { return true; } virtual void Unlock() override {} @@ -67,7 +67,7 @@ public: virtual bool Serialize(SurfaceDescriptor& aOutDescriptor) override; // Useless functions. - virtual bool Lock(OpenMode, FenceHandle*) override { return true; } + virtual bool Lock(OpenMode) override { return true; } virtual void Unlock() override {} From 6250728c9c11c6f5a976ebcac999fa6139a37ee7 Mon Sep 17 00:00:00 2001 From: Matt Woodrow Date: Thu, 27 Oct 2016 21:02:12 +1300 Subject: [PATCH 18/24] Bug 1313281 - Part 5: Remove NeedsFenceHandle. r=sotaro --- gfx/layers/client/TextureClient.cpp | 11 ------- gfx/layers/client/TextureClient.h | 7 ----- gfx/layers/composite/TextureHost.h | 2 -- gfx/layers/ipc/CompositorBridgeChild.cpp | 15 ++------- gfx/layers/ipc/CompositorBridgeParent.cpp | 32 +++---------------- gfx/layers/ipc/ImageBridgeChild.cpp | 38 ----------------------- gfx/layers/ipc/ImageBridgeChild.h | 6 ---- gfx/layers/ipc/ImageBridgeParent.cpp | 35 +-------------------- gfx/layers/ipc/ImageBridgeParent.h | 7 ----- gfx/layers/ipc/LayersMessages.ipdlh | 6 ---- 10 files changed, 8 insertions(+), 151 deletions(-) diff --git a/gfx/layers/client/TextureClient.cpp b/gfx/layers/client/TextureClient.cpp index 61132670d01f..d1d4305432bc 100644 --- a/gfx/layers/client/TextureClient.cpp +++ b/gfx/layers/client/TextureClient.cpp @@ -416,7 +416,6 @@ void TextureClient::Destroy(bool aForceSync) mBorrowedDrawTarget = nullptr; mReadLock = nullptr; - CancelWaitFenceHandleOnImageBridge(); RefPtr actor = mActor; mActor = nullptr; @@ -803,15 +802,6 @@ TextureClient::SetAddedToCompositableClient() } } -void -TextureClient::CancelWaitFenceHandleOnImageBridge() -{ - if (!NeedsFenceHandle() || GetFlags() & TextureFlags::RECYCLE) { - return; - } - ImageBridgeChild::GetSingleton()->CancelWaitFenceHandle(this); -} - void CancelTextureClientRecycle(uint64_t aTextureId, LayersIPCChannel* aAllocator) { if (!aAllocator) { @@ -837,7 +827,6 @@ TextureClient::CancelWaitForRecycle() CancelTextureClientRecycle(mSerial, GetAllocator()); return; } - CancelWaitFenceHandleOnImageBridge(); } /* static */ void diff --git a/gfx/layers/client/TextureClient.h b/gfx/layers/client/TextureClient.h index d2ee5bcd3350..b1765c22e696 100644 --- a/gfx/layers/client/TextureClient.h +++ b/gfx/layers/client/TextureClient.h @@ -613,13 +613,6 @@ public: uint64_t GetSerial() const { return mSerial; } - bool NeedsFenceHandle() - { - return false; - } - - void CancelWaitFenceHandleOnImageBridge(); - void CancelWaitForRecycle(); /** diff --git a/gfx/layers/composite/TextureHost.h b/gfx/layers/composite/TextureHost.h index 0c8cc487519b..52b8311d019b 100644 --- a/gfx/layers/composite/TextureHost.h +++ b/gfx/layers/composite/TextureHost.h @@ -588,8 +588,6 @@ public: void SetLastFwdTransactionId(uint64_t aTransactionId); - virtual bool NeedsFenceHandle() { return false; } - void DeserializeReadLock(const ReadLockDescriptor& aDesc, ISurfaceAllocator* aAllocator); diff --git a/gfx/layers/ipc/CompositorBridgeChild.cpp b/gfx/layers/ipc/CompositorBridgeChild.cpp index f9a5d9a35460..4aa35a35cbac 100644 --- a/gfx/layers/ipc/CompositorBridgeChild.cpp +++ b/gfx/layers/ipc/CompositorBridgeChild.cpp @@ -912,21 +912,12 @@ CompositorBridgeChild::HoldUntilCompositableRefReleasedIfNecessary(TextureClient return; } - if (!(aClient->GetFlags() & TextureFlags::RECYCLE) && - !aClient->NeedsFenceHandle()) { + if (!(aClient->GetFlags() & TextureFlags::RECYCLE)) { return; } - if (aClient->GetFlags() & TextureFlags::RECYCLE) { - aClient->SetLastFwdTransactionId(GetFwdTransactionId()); - mTexturesWaitingRecycled.Put(aClient->GetSerial(), aClient); - return; - } - MOZ_ASSERT(!(aClient->GetFlags() & TextureFlags::RECYCLE)); - MOZ_ASSERT(aClient->NeedsFenceHandle()); - // Handle a case of fence delivery via ImageBridge. - // GrallocTextureData alwasys requests fence delivery if ANDROID_VERSION >= 17. - ImageBridgeChild::GetSingleton()->HoldUntilFenceHandleDelivery(aClient, GetFwdTransactionId()); + aClient->SetLastFwdTransactionId(GetFwdTransactionId()); + mTexturesWaitingRecycled.Put(aClient->GetSerial(), aClient); } void diff --git a/gfx/layers/ipc/CompositorBridgeParent.cpp b/gfx/layers/ipc/CompositorBridgeParent.cpp index 1403fca1831d..1ce0fef73ea6 100644 --- a/gfx/layers/ipc/CompositorBridgeParent.cpp +++ b/gfx/layers/ipc/CompositorBridgeParent.cpp @@ -112,37 +112,13 @@ CompositorBridgeParentBase::NotifyNotUsed(PTextureParent* aTexture, uint64_t aTr return; } - if (!(texture->GetFlags() & TextureFlags::RECYCLE) && - !texture->NeedsFenceHandle()) { + if (!(texture->GetFlags() & TextureFlags::RECYCLE)) { return; } - if (texture->GetFlags() & TextureFlags::RECYCLE) { - uint64_t textureId = TextureHost::GetTextureSerial(aTexture); - mPendingAsyncMessage.push_back( - OpNotifyNotUsed(textureId, aTransactionId)); - return; - } - - // Gralloc requests to deliver fence to client side. - // If client side does not use TextureFlags::RECYCLE flag, - // The fence can not be delivered via LayerTransactionParent. - // TextureClient might wait the fence delivery on main thread. - - MOZ_ASSERT(ImageBridgeParent::GetInstance(GetChildProcessId())); - if (ImageBridgeParent::GetInstance(GetChildProcessId())) { - // Send message back via PImageBridge. - ImageBridgeParent::NotifyNotUsedToNonRecycle( - GetChildProcessId(), - aTexture, - aTransactionId); - } else { - NS_ERROR("ImageBridgeParent should exist"); - } - - if (!IsAboutToSendAsyncMessages()) { - SendPendingAsyncMessages(); - } + uint64_t textureId = TextureHost::GetTextureSerial(aTexture); + mPendingAsyncMessage.push_back( + OpNotifyNotUsed(textureId, aTransactionId)); } void diff --git a/gfx/layers/ipc/ImageBridgeChild.cpp b/gfx/layers/ipc/ImageBridgeChild.cpp index f0a4d1fe96fe..a52465fbc513 100644 --- a/gfx/layers/ipc/ImageBridgeChild.cpp +++ b/gfx/layers/ipc/ImageBridgeChild.cpp @@ -243,34 +243,6 @@ ImageBridgeChild::NotifyNotUsed(uint64_t aTextureId, uint64_t aFwdTransactionId) mTexturesWaitingRecycled.Remove(aTextureId); } -void -ImageBridgeChild::HoldUntilFenceHandleDelivery(TextureClient* aClient, uint64_t aTransactionId) -{ - MOZ_ASSERT(NS_IsMainThread()); - // XXX Re-enable fence handling - return; - - NS_RUNTIMEABORT("not reached"); -} - -void -ImageBridgeChild::NotifyNotUsedToNonRecycle(uint64_t aTextureId, uint64_t aTransactionId) -{ - // XXX Re-enable fence handling - return; - - NS_RUNTIMEABORT("not reached"); -} - -void -ImageBridgeChild::CancelWaitFenceHandle(TextureClient* aClient) -{ - // XXX Re-enable fence handling - return; - - NS_RUNTIMEABORT("not reached"); -} - void ImageBridgeChild::CancelWaitForRecycle(uint64_t aTextureId) { @@ -1185,16 +1157,6 @@ ImageBridgeChild::RecvParentAsyncMessages(InfallibleTArray texture = TextureHost::AsTextureHost(aTexture); - if (!texture) { - return; - } - - if (!(texture->GetFlags() & TextureFlags::RECYCLE) && - !texture->NeedsFenceHandle()) { - return; - } - - uint64_t textureId = TextureHost::GetTextureSerial(aTexture); - mPendingAsyncMessage.push_back( - OpNotifyNotUsedToNonRecycle(textureId, aTransactionId)); - -} - -/*static*/ void -ImageBridgeParent::NotifyNotUsedToNonRecycle(base::ProcessId aChildProcessId, - PTextureParent* aTexture, - uint64_t aTransactionId) -{ - ImageBridgeParent* imageBridge = ImageBridgeParent::GetInstance(aChildProcessId); - if (!imageBridge) { - return; - } - imageBridge->NotifyNotUsedToNonRecycle(aTexture, aTransactionId); -} - /*static*/ void ImageBridgeParent::SetAboutToSendAsyncMessages(base::ProcessId aChildProcessId) { @@ -467,8 +435,7 @@ ImageBridgeParent::NotifyNotUsed(PTextureParent* aTexture, uint64_t aTransaction return; } - if (!(texture->GetFlags() & TextureFlags::RECYCLE) && - !texture->NeedsFenceHandle()) { + if (!(texture->GetFlags() & TextureFlags::RECYCLE)) { return; } diff --git a/gfx/layers/ipc/ImageBridgeParent.h b/gfx/layers/ipc/ImageBridgeParent.h index 2507c4a1e3b3..0495a1351482 100644 --- a/gfx/layers/ipc/ImageBridgeParent.h +++ b/gfx/layers/ipc/ImageBridgeParent.h @@ -113,13 +113,6 @@ public: virtual bool IsSameProcess() const override; - void NotifyNotUsedToNonRecycle(PTextureParent* aTexture, - uint64_t aTransactionId); - - static void NotifyNotUsedToNonRecycle(base::ProcessId aChildProcessId, - PTextureParent* aTexture, - uint64_t aTransactionId); - using CompositableParentManager::SetAboutToSendAsyncMessages; static void SetAboutToSendAsyncMessages(base::ProcessId aChildProcessId); diff --git a/gfx/layers/ipc/LayersMessages.ipdlh b/gfx/layers/ipc/LayersMessages.ipdlh index 8da70d6fa2c8..dbbb3649ac8e 100644 --- a/gfx/layers/ipc/LayersMessages.ipdlh +++ b/gfx/layers/ipc/LayersMessages.ipdlh @@ -414,11 +414,6 @@ struct OpNotifyNotUsed { uint64_t fwdTransactionId; }; -struct OpNotifyNotUsedToNonRecycle { - uint64_t TextureId; - uint64_t fwdTransactionId; -}; - union CompositableOperationDetail { OpPaintTextureRegion; @@ -498,7 +493,6 @@ union EditReply { union AsyncParentMessageData { OpNotifyNotUsed; - OpNotifyNotUsedToNonRecycle; }; } // namespace From 5ab6ff0b97641557b10617d2d1514e292a0a2bc8 Mon Sep 17 00:00:00 2001 From: Matt Woodrow Date: Thu, 27 Oct 2016 21:02:12 +1300 Subject: [PATCH 19/24] Bug 1313281 - Part 6: Remove FenceHandle. r=sotaro --- gfx/layers/Compositor.cpp | 6 --- gfx/layers/Compositor.h | 3 -- gfx/layers/client/TextureClient.h | 5 -- gfx/layers/composite/TextureHost.h | 1 - gfx/layers/ipc/FenceUtils.cpp | 78 --------------------------- gfx/layers/ipc/FenceUtils.h | 84 ------------------------------ gfx/layers/moz.build | 2 - 7 files changed, 179 deletions(-) delete mode 100644 gfx/layers/ipc/FenceUtils.cpp delete mode 100644 gfx/layers/ipc/FenceUtils.h diff --git a/gfx/layers/Compositor.cpp b/gfx/layers/Compositor.cpp index 86af7aabae73..71236a1be00d 100644 --- a/gfx/layers/Compositor.cpp +++ b/gfx/layers/Compositor.cpp @@ -605,11 +605,5 @@ Compositor::SetDispAcquireFence(Layer* aLayer) { } -FenceHandle -Compositor::GetReleaseFence() -{ - return FenceHandle(); -} - } // namespace layers } // namespace mozilla diff --git a/gfx/layers/Compositor.h b/gfx/layers/Compositor.h index 622432df230c..f7aecb0f1170 100644 --- a/gfx/layers/Compositor.h +++ b/gfx/layers/Compositor.h @@ -17,7 +17,6 @@ #include "mozilla/gfx/Types.h" // for Float #include "mozilla/gfx/Triangle.h" // for Triangle, TexturedTriangle #include "mozilla/layers/CompositorTypes.h" // for DiagnosticTypes, etc -#include "mozilla/layers/FenceUtils.h" // for FenceHandle #include "mozilla/layers/LayersTypes.h" // for LayersBackend #include "mozilla/widget/CompositorWidget.h" #include "nsISupportsImpl.h" // for MOZ_COUNT_CTOR, etc @@ -435,8 +434,6 @@ public: virtual void SetDispAcquireFence(Layer* aLayer); - virtual FenceHandle GetReleaseFence(); - /** * Post-rendering stuff if the rendering is done outside of this Compositor * e.g., by Composer2D. diff --git a/gfx/layers/client/TextureClient.h b/gfx/layers/client/TextureClient.h index b1765c22e696..a5e5f55709c2 100644 --- a/gfx/layers/client/TextureClient.h +++ b/gfx/layers/client/TextureClient.h @@ -17,7 +17,6 @@ #include "mozilla/gfx/2D.h" // for DrawTarget #include "mozilla/gfx/Point.h" // for IntSize #include "mozilla/gfx/Types.h" // for SurfaceFormat -#include "mozilla/layers/FenceUtils.h" // for FenceHandle #include "mozilla/ipc/Shmem.h" // for Shmem #include "mozilla/layers/AtomicRefCountedWithFinalize.h" #include "mozilla/layers/CompositorTypes.h" // for TextureFlags, etc @@ -287,10 +286,6 @@ public: virtual bool ReadBack(TextureReadbackSink* aReadbackSink) { return false; } - /// Ideally this should not be exposed and users of TextureClient would use Lock/Unlock - /// preoperly but that requires a few changes to SharedSurface and maybe gonk video. - virtual void WaitForFence(FenceHandle* aFence) {}; - virtual void SyncWithObject(SyncObject* aFence) {}; virtual TextureFlags GetTextureFlags() const { return TextureFlags::NO_FLAGS; } diff --git a/gfx/layers/composite/TextureHost.h b/gfx/layers/composite/TextureHost.h index 52b8311d019b..c224d8777284 100644 --- a/gfx/layers/composite/TextureHost.h +++ b/gfx/layers/composite/TextureHost.h @@ -17,7 +17,6 @@ #include "mozilla/gfx/Types.h" // for SurfaceFormat, etc #include "mozilla/layers/Compositor.h" // for Compositor #include "mozilla/layers/CompositorTypes.h" // for TextureFlags, etc -#include "mozilla/layers/FenceUtils.h" // for FenceHandle #include "mozilla/layers/LayersTypes.h" // for LayerRenderState, etc #include "mozilla/layers/LayersSurfaces.h" #include "mozilla/mozalloc.h" // for operator delete diff --git a/gfx/layers/ipc/FenceUtils.cpp b/gfx/layers/ipc/FenceUtils.cpp deleted file mode 100644 index 5c4cc7d4d8b3..000000000000 --- a/gfx/layers/ipc/FenceUtils.cpp +++ /dev/null @@ -1,78 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * vim: sw=2 ts=8 et : - */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#include "FenceUtils.h" - -using namespace mozilla::layers; - -namespace IPC { - -void -ParamTraits::Write(Message* aMsg, - const paramType& aParam) -{ - FenceHandle handle = aParam; - - MOZ_ASSERT(handle.IsValid()); -} - -bool -ParamTraits::Read(const Message* aMsg, - PickleIterator* aIter, paramType* aResult) -{ - return true; -} - -} // namespace IPC - -namespace mozilla { -namespace layers { - -FenceHandle::FenceHandle() - : mFence(new FdObj()) -{ -} - -FenceHandle::FenceHandle(FdObj* aFdObj) - : mFence(aFdObj) -{ - MOZ_ASSERT(aFdObj); -} - -void -FenceHandle::Merge(const FenceHandle& aFenceHandle) -{ -} - -void -FenceHandle::TransferToAnotherFenceHandle(FenceHandle& aFenceHandle) -{ - aFenceHandle.mFence = this->GetAndResetFdObj(); -} - -already_AddRefed -FenceHandle::GetAndResetFdObj() -{ - RefPtr fence = mFence; - mFence = new FdObj(); - return fence.forget(); -} - -already_AddRefed -FenceHandle::GetDupFdObj() -{ - RefPtr fdObj; - if (IsValid()) { - fdObj = new FenceHandle::FdObj(dup(mFence->mFd)); - } else { - fdObj = new FenceHandle::FdObj(); - } - return fdObj.forget(); -} - -} // namespace layers -} // namespace mozilla diff --git a/gfx/layers/ipc/FenceUtils.h b/gfx/layers/ipc/FenceUtils.h deleted file mode 100644 index 2edf2c43d89d..000000000000 --- a/gfx/layers/ipc/FenceUtils.h +++ /dev/null @@ -1,84 +0,0 @@ -/* -*- Mode: C++; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 2 -*- - * vim: sw=2 ts=8 et : - */ -/* This Source Code Form is subject to the terms of the Mozilla Public - * License, v. 2.0. If a copy of the MPL was not distributed with this - * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ - -#ifndef IPC_FencerUtils_h -#define IPC_FencerUtils_h - -#include "ipc/IPCMessageUtils.h" -#include "mozilla/RefPtr.h" // for nsRefPtr - -namespace mozilla { -namespace layers { - -class FenceHandle { -public: - class FdObj { - NS_INLINE_DECL_THREADSAFE_REFCOUNTING(FdObj) - friend class FenceHandle; - public: - FdObj() - : mFd(-1) {} - explicit FdObj(int aFd) - : mFd(aFd) {} - int GetAndResetFd() - { - int fd = mFd; - mFd = -1; - return fd; - } - - private: - virtual ~FdObj() { - if (mFd != -1) { - close(mFd); - } - } - - int mFd; - }; - - FenceHandle(); - - explicit FenceHandle(FdObj* aFdObj); - - bool operator==(const FenceHandle& aOther) const { - return mFence.get() == aOther.mFence.get(); - } - - bool IsValid() const - { - return (mFence->mFd != -1); - } - - void Merge(const FenceHandle& aFenceHandle); - - void TransferToAnotherFenceHandle(FenceHandle& aFenceHandle); - - already_AddRefed GetAndResetFdObj(); - - already_AddRefed GetDupFdObj(); - -private: - RefPtr mFence; -}; - -} // namespace layers -} // namespace mozilla - -namespace IPC { - -template <> -struct ParamTraits { - typedef mozilla::layers::FenceHandle paramType; - - static void Write(Message* aMsg, const paramType& aParam); - static bool Read(const Message* aMsg, PickleIterator* aIter, paramType* aResult); -}; - -} // namespace IPC - -#endif // IPC_FencerUtils_h diff --git a/gfx/layers/moz.build b/gfx/layers/moz.build index dcd8135f5fd0..e73b2b76e821 100644 --- a/gfx/layers/moz.build +++ b/gfx/layers/moz.build @@ -168,7 +168,6 @@ EXPORTS.mozilla.layers += [ 'ipc/CompositorBridgeChild.h', 'ipc/CompositorBridgeParent.h', 'ipc/CompositorThread.h', - 'ipc/FenceUtils.h', 'ipc/GonkNativeHandle.h', 'ipc/GonkNativeHandleUtils.h', 'ipc/ImageBridgeChild.h', @@ -337,7 +336,6 @@ UNIFIED_SOURCES += [ 'ipc/CompositorBridgeChild.cpp', 'ipc/CompositorBridgeParent.cpp', 'ipc/CompositorThread.cpp', - 'ipc/FenceUtils.cpp', 'ipc/ImageBridgeChild.cpp', 'ipc/ImageBridgeParent.cpp', 'ipc/ImageContainerChild.cpp', From 225c1d2972ef35d0c5fe7577e6b1e9362e801a51 Mon Sep 17 00:00:00 2001 From: Lars T Hansen Date: Wed, 26 Oct 2016 19:10:42 +0200 Subject: [PATCH 20/24] Bug 1313114 - order bytecode consumption and deadCode_ skipping properly. r=bbouvier --HG-- extra : rebase_source : 0dd3359535179f741d017f04f65eb05e4706f5c3 extra : amend_source : 2af202a331d78101bfb35b3cdc968f18cf391d0f --- js/src/asmjs/WasmBaselineCompile.cpp | 29 +++++++++++++++++----------- 1 file changed, 18 insertions(+), 11 deletions(-) diff --git a/js/src/asmjs/WasmBaselineCompile.cpp b/js/src/asmjs/WasmBaselineCompile.cpp index 8308cb0b9c93..df60d2d4289c 100644 --- a/js/src/asmjs/WasmBaselineCompile.cpp +++ b/js/src/asmjs/WasmBaselineCompile.cpp @@ -5645,6 +5645,9 @@ BaseCompiler::emitOldCallImport() if (!iter_.readCall(&funcImportIndex)) return false; + if (deadCode_) + return true; + return emitCallImportCommon(lineOrBytecode, funcImportIndex); } @@ -5752,11 +5755,11 @@ BaseCompiler::emitCommonMathCall(uint32_t lineOrBytecode, SymbolicAddress callee bool BaseCompiler::emitUnaryMathBuiltinCall(SymbolicAddress callee, ValType operandType) { + uint32_t lineOrBytecode = readCallSiteLineOrBytecode(); + if (deadCode_) return true; - uint32_t lineOrBytecode = readCallSiteLineOrBytecode(); - return emitCommonMathCall(lineOrBytecode, callee, operandType == ValType::F32 ? SigF_ : SigD_, operandType == ValType::F32 ? ExprType::F32 : ExprType::F64); @@ -5767,9 +5770,6 @@ BaseCompiler::emitBinaryMathBuiltinCall(SymbolicAddress callee, ValType operandT { MOZ_ASSERT(operandType == ValType::F64); - if (deadCode_) - return true; - uint32_t lineOrBytecode = 0; if (callee == SymbolicAddress::ModD) { // Not actually a call in the binary representation @@ -5777,6 +5777,9 @@ BaseCompiler::emitBinaryMathBuiltinCall(SymbolicAddress callee, ValType operandT lineOrBytecode = readCallSiteLineOrBytecode(); } + if (deadCode_) + return true; + return emitCommonMathCall(lineOrBytecode, callee, SigDD_, ExprType::F64); } @@ -6703,19 +6706,21 @@ BaseCompiler::emitTeeStoreWithCoercion(ValType resultType, Scalar::Type viewType bool BaseCompiler::emitGrowMemory() { - if (deadCode_) - return true; + uint32_t lineOrBytecode = readCallSiteLineOrBytecode(); Nothing arg; if (!iter_.readGrowMemory(&arg)) return false; + if (deadCode_) + return true; + sync(); uint32_t numArgs = 1; size_t stackSpace = stackConsumed(numArgs); - FunctionCall baselineCall(readCallSiteLineOrBytecode()); + FunctionCall baselineCall(lineOrBytecode); beginCall(baselineCall, UseABI::System, InterModule::True); ABIArg instanceArg = reservePointerArgument(baselineCall); @@ -6736,15 +6741,17 @@ BaseCompiler::emitGrowMemory() bool BaseCompiler::emitCurrentMemory() { - if (deadCode_) - return true; + uint32_t lineOrBytecode = readCallSiteLineOrBytecode(); if (!iter_.readCurrentMemory()) return false; + if (deadCode_) + return true; + sync(); - FunctionCall baselineCall(readCallSiteLineOrBytecode()); + FunctionCall baselineCall(lineOrBytecode); beginCall(baselineCall, UseABI::System, InterModule::False); ABIArg instanceArg = reservePointerArgument(baselineCall); From 57b13a9369b1d8aa616f2a024b3be6988f85d2b3 Mon Sep 17 00:00:00 2001 From: Makoto Kato Date: Tue, 25 Oct 2016 17:53:38 +0900 Subject: [PATCH 21/24] Bug 1312302 - Set dummy Selection during initializing TextStore. r=masayuki When PC supports table mode, TextInputFramme.dll is loaded and it can be used for TIP. When creating new TextStore object, selection might be nothing yet on e10s. At this time, GetSelection will return E_FAIL since selection data isn't received yet. If GetSelection returns error during SetFocus, TextInputFrame.dll will crash. So we set temporary selection to avoid crash. MozReview-Commit-ID: HyVSwvhXGJh --HG-- extra : rebase_source : 9e4838ffc5c8d8cf0e67685c6c1da09ecba6c7a9 extra : amend_source : dda79c9380ee34c82a611fc6a6691cbe63aec63c --- widget/windows/TSFTextStore.cpp | 12 +++++++++++- widget/windows/TSFTextStore.h | 24 ++++++++++++++++++++++++ 2 files changed, 35 insertions(+), 1 deletion(-) diff --git a/widget/windows/TSFTextStore.cpp b/widget/windows/TSFTextStore.cpp index 0a55055b39b5..2b3ed2a43fd9 100644 --- a/widget/windows/TSFTextStore.cpp +++ b/widget/windows/TSFTextStore.cpp @@ -4793,7 +4793,17 @@ TSFTextStore::CreateAndSetFocus(nsWindowBase* aFocusedWidget, MarkContextAsKeyboardDisabled(topContext); } } - HRESULT hr = sThreadMgr->SetFocus(textStore->mDocumentMgr); + + HRESULT hr; + { + // Windows 10's softwware keyboard requires that SetSelection must be + // always successful into SetFocus. If returning error, it might crash + // into TextInputFramework.dll. + AutoSetTemporarySelection setSelection(textStore->SelectionForTSFRef()); + + hr = sThreadMgr->SetFocus(textStore->mDocumentMgr); + } + if (NS_WARN_IF(FAILED(hr))) { MOZ_LOG(sTextStoreLog, LogLevel::Error, (" TSFTextStore::CreateAndSetFocus() FAILED due to " diff --git a/widget/windows/TSFTextStore.h b/widget/windows/TSFTextStore.h index db5f788b32d2..a146fec49210 100644 --- a/widget/windows/TSFTextStore.h +++ b/widget/windows/TSFTextStore.h @@ -593,6 +593,30 @@ protected: */ Selection& SelectionForTSFRef(); + class MOZ_STACK_CLASS AutoSetTemporarySelection final + { + public: + AutoSetTemporarySelection(Selection& aSelection) + : mSelection(aSelection) + { + mDirty = mSelection.IsDirty(); + if (mDirty) { + mSelection.CollapseAt(0); + } + } + + ~AutoSetTemporarySelection() + { + if (mDirty) { + mSelection.MarkDirty(); + } + } + + private: + Selection& mSelection; + bool mDirty; + }; + struct PendingAction final { enum ActionType : uint8_t From 15cc9318bee62fa3d4095c83730df3b54447ba79 Mon Sep 17 00:00:00 2001 From: Jon Coppeard Date: Thu, 27 Oct 2016 11:03:53 +0100 Subject: [PATCH 22/24] Bug 927318 - Make native functions singletons by default but make promise resolving functions generic objects r=jandem --- js/src/asmjs/WasmJS.cpp | 2 +- js/src/builtin/Promise.cpp | 4 ++-- js/src/jsfun.cpp | 12 ++++-------- js/src/jsfun.h | 10 ++++++---- js/src/vm/GeneratorObject.cpp | 3 ++- 5 files changed, 15 insertions(+), 16 deletions(-) diff --git a/js/src/asmjs/WasmJS.cpp b/js/src/asmjs/WasmJS.cpp index 12c5c2e645f9..427e4a2b06ac 100644 --- a/js/src/asmjs/WasmJS.cpp +++ b/js/src/asmjs/WasmJS.cpp @@ -773,7 +773,7 @@ WasmInstanceObject::getExportedFunction(JSContext* cx, HandleWasmInstanceObject unsigned numArgs = instance.metadata().lookupFuncDefExport(funcDefIndex).sig().args().length(); fun.set(NewNativeConstructor(cx, WasmCall, numArgs, name, gc::AllocKind::FUNCTION_EXTENDED, - GenericObject, JSFunction::ASMJS_CTOR)); + SingletonObject, JSFunction::ASMJS_CTOR)); if (!fun) return false; diff --git a/js/src/builtin/Promise.cpp b/js/src/builtin/Promise.cpp index be5c80cd82ca..cf821ab51487 100644 --- a/js/src/builtin/Promise.cpp +++ b/js/src/builtin/Promise.cpp @@ -368,12 +368,12 @@ CreateResolvingFunctions(JSContext* cx, HandleValue promise, { RootedAtom funName(cx, cx->names().empty); RootedFunction resolve(cx, NewNativeFunction(cx, ResolvePromiseFunction, 1, funName, - gc::AllocKind::FUNCTION_EXTENDED)); + gc::AllocKind::FUNCTION_EXTENDED, GenericObject)); if (!resolve) return false; RootedFunction reject(cx, NewNativeFunction(cx, RejectPromiseFunction, 1, funName, - gc::AllocKind::FUNCTION_EXTENDED)); + gc::AllocKind::FUNCTION_EXTENDED, GenericObject)); if (!reject) return false; diff --git a/js/src/jsfun.cpp b/js/src/jsfun.cpp index 8e098aab6101..62e1d5c02f63 100644 --- a/js/src/jsfun.cpp +++ b/js/src/jsfun.cpp @@ -1933,8 +1933,9 @@ JSFunction::needsNamedLambdaEnvironment() const JSFunction* js::NewNativeFunction(ExclusiveContext* cx, Native native, unsigned nargs, HandleAtom atom, gc::AllocKind allocKind /* = AllocKind::FUNCTION */, - NewObjectKind newKind /* = GenericObject */) + NewObjectKind newKind /* = SingletonObject */) { + MOZ_ASSERT(native); return NewFunctionWithProto(cx, native, nargs, JSFunction::NATIVE_FUN, nullptr, atom, nullptr, allocKind, newKind); } @@ -1942,9 +1943,10 @@ js::NewNativeFunction(ExclusiveContext* cx, Native native, unsigned nargs, Handl JSFunction* js::NewNativeConstructor(ExclusiveContext* cx, Native native, unsigned nargs, HandleAtom atom, gc::AllocKind allocKind /* = AllocKind::FUNCTION */, - NewObjectKind newKind /* = GenericObject */, + NewObjectKind newKind /* = SingletonObject */, JSFunction::Flags flags /* = JSFunction::NATIVE_CTOR */) { + MOZ_ASSERT(native); MOZ_ASSERT(flags & JSFunction::NATIVE_CTOR); return NewFunctionWithProto(cx, native, nargs, flags, nullptr, atom, nullptr, allocKind, newKind); @@ -1992,12 +1994,6 @@ js::NewFunctionWithProto(ExclusiveContext* cx, Native native, MOZ_ASSERT(NewFunctionEnvironmentIsWellFormed(cx, enclosingEnv)); RootedObject funobj(cx); - // Don't mark asm.js module functions as singleton since they are - // cloned (via CloneFunctionObjectIfNotSingleton) which assumes that - // isSingleton implies isInterpreted. - if (native && !IsAsmJSModuleNative(native)) - newKind = SingletonObject; - if (protoHandling == NewFunctionClassProto) { funobj = NewObjectWithClassProto(cx, &JSFunction::class_, proto, allocKind, newKind); diff --git a/js/src/jsfun.h b/js/src/jsfun.h index 6d8a7ea6b72b..d4274f350e2c 100644 --- a/js/src/jsfun.h +++ b/js/src/jsfun.h @@ -601,17 +601,19 @@ Function(JSContext* cx, unsigned argc, Value* vp); extern bool Generator(JSContext* cx, unsigned argc, Value* vp); -// Allocate a new function backed by a JSNative. +// Allocate a new function backed by a JSNative. Note that by default this +// creates a singleton object. extern JSFunction* NewNativeFunction(ExclusiveContext* cx, JSNative native, unsigned nargs, HandleAtom atom, gc::AllocKind allocKind = gc::AllocKind::FUNCTION, - NewObjectKind newKind = GenericObject); + NewObjectKind newKind = SingletonObject); -// Allocate a new constructor backed by a JSNative. +// Allocate a new constructor backed by a JSNative. Note that by default this +// creates a singleton object. extern JSFunction* NewNativeConstructor(ExclusiveContext* cx, JSNative native, unsigned nargs, HandleAtom atom, gc::AllocKind allocKind = gc::AllocKind::FUNCTION, - NewObjectKind newKind = GenericObject, + NewObjectKind newKind = SingletonObject, JSFunction::Flags flags = JSFunction::NATIVE_CTOR); // Allocate a new scripted function. If enclosingEnv is null, the diff --git a/js/src/vm/GeneratorObject.cpp b/js/src/vm/GeneratorObject.cpp index 85e04c7a1ab3..c808fe5dd1fc 100644 --- a/js/src/vm/GeneratorObject.cpp +++ b/js/src/vm/GeneratorObject.cpp @@ -322,7 +322,8 @@ GlobalObject::initStarGenerators(JSContext* cx, Handle global) RootedAtom name(cx, cx->names().GeneratorFunction); RootedObject genFunction(cx, NewFunctionWithProto(cx, Generator, 1, JSFunction::NATIVE_CTOR, nullptr, name, - proto)); + proto, gc::AllocKind::FUNCTION, + SingletonObject)); if (!genFunction) return false; if (!LinkConstructorAndPrototype(cx, genFunction, genFunctionProto)) From 4f90a79a0c725fe611939eb5e88cf0795f32f2c9 Mon Sep 17 00:00:00 2001 From: Jon Coppeard Date: Thu, 27 Oct 2016 11:03:53 +0100 Subject: [PATCH 23/24] Bug 1310147 - Rename AutoAssertOnGC to AutoAssertNoGC r=sfink --- dom/ipc/ProcessHangMonitor.cpp | 2 +- js/public/GCAPI.h | 24 +++++++++++++---------- js/src/gc/GCRuntime.h | 2 +- js/src/jit/BaselineJIT.cpp | 4 ++-- js/src/jit/Ion.cpp | 4 ++-- js/src/jit/MacroAssembler.cpp | 2 +- js/src/jsapi-tests/testGCExactRooting.cpp | 4 ++-- js/src/jsgc.cpp | 12 ++++++------ xpcom/base/nsCycleCollector.cpp | 10 +++++----- 9 files changed, 34 insertions(+), 30 deletions(-) diff --git a/dom/ipc/ProcessHangMonitor.cpp b/dom/ipc/ProcessHangMonitor.cpp index 08cffc3a7baa..c651cccbb9c4 100644 --- a/dom/ipc/ProcessHangMonitor.cpp +++ b/dom/ipc/ProcessHangMonitor.cpp @@ -316,7 +316,7 @@ HangMonitorChild::InterruptCallback() if (forcePaint) { RefPtr tabChild = TabChild::FindTabChild(forcePaintTab); if (tabChild) { - JS::AutoAssertOnGC nogc(mContext); + JS::AutoAssertNoGC nogc(mContext); JS::AutoAssertOnBarrier nobarrier(mContext); tabChild->ForcePaint(forcePaintEpoch); } diff --git a/js/public/GCAPI.h b/js/public/GCAPI.h index e8c72f640800..bde91b44558a 100644 --- a/js/public/GCAPI.h +++ b/js/public/GCAPI.h @@ -496,18 +496,22 @@ class JS_PUBLIC_API(AutoRequireNoGC) }; /** - * Release assert if a GC occurs while this class is live. This class does - * not disable the static rooting hazard analysis. + * Diagnostic assert (see MOZ_DIAGNOSTIC_ASSERT) that GC cannot occur while this + * class is live. This class does not disable the static rooting hazard + * analysis. + * + * This works by entering a GC unsafe region, which is checked on allocation and + * on GC. */ -class JS_PUBLIC_API(AutoAssertOnGC) : public AutoRequireNoGC +class JS_PUBLIC_API(AutoAssertNoGC) : public AutoRequireNoGC { js::gc::GCRuntime* gc; size_t gcNumber; public: - AutoAssertOnGC(); - explicit AutoAssertOnGC(JSContext* cx); - ~AutoAssertOnGC(); + AutoAssertNoGC(); + explicit AutoAssertNoGC(JSContext* cx); + ~AutoAssertNoGC(); }; /** @@ -583,7 +587,7 @@ class JS_PUBLIC_API(AutoAssertGCCallback) : public AutoSuppressGCAnalysis /** * Place AutoCheckCannotGC in scopes that you believe can never GC. These - * annotations will be verified both dynamically via AutoAssertOnGC, and + * annotations will be verified both dynamically via AutoAssertNoGC, and * statically with the rooting hazard analysis (implemented by making the * analysis consider AutoCheckCannotGC to be a GC pointer, and therefore * complain if it is live across a GC call.) It is useful when dealing with @@ -594,11 +598,11 @@ class JS_PUBLIC_API(AutoAssertGCCallback) : public AutoSuppressGCAnalysis * We only do the assertion checking in DEBUG builds. */ #ifdef DEBUG -class JS_PUBLIC_API(AutoCheckCannotGC) : public AutoAssertOnGC +class JS_PUBLIC_API(AutoCheckCannotGC) : public AutoAssertNoGC { public: - AutoCheckCannotGC() : AutoAssertOnGC() {} - explicit AutoCheckCannotGC(JSContext* cx) : AutoAssertOnGC(cx) {} + AutoCheckCannotGC() : AutoAssertNoGC() {} + explicit AutoCheckCannotGC(JSContext* cx) : AutoAssertNoGC(cx) {} } JS_HAZ_GC_INVALIDATED; #else class JS_PUBLIC_API(AutoCheckCannotGC) : public AutoRequireNoGC diff --git a/js/src/gc/GCRuntime.h b/js/src/gc/GCRuntime.h index 244124e6b62b..9f4059104a70 100644 --- a/js/src/gc/GCRuntime.h +++ b/js/src/gc/GCRuntime.h @@ -739,7 +739,7 @@ class GCRuntime void verifyIsSafeToGC() { MOZ_DIAGNOSTIC_ASSERT(!isInsideUnsafeRegion(), - "[AutoAssertOnGC] possible GC in GC-unsafe region"); + "[AutoAssertNoGC] possible GC in GC-unsafe region"); } void setAlwaysPreserveCode() { alwaysPreserveCode = true; } diff --git a/js/src/jit/BaselineJIT.cpp b/js/src/jit/BaselineJIT.cpp index cb8a9a8a6918..097165266c7d 100644 --- a/js/src/jit/BaselineJIT.cpp +++ b/js/src/jit/BaselineJIT.cpp @@ -117,8 +117,8 @@ EnterBaseline(JSContext* cx, EnterJitData& data) // Assert we don't GC before entering JIT code. A GC could discard JIT code // or move the function stored in the CalleeToken (it won't be traced at // this point). We use Maybe<> here so we can call reset() to call the - // AutoAssertOnGC destructor before we enter JIT code. - mozilla::Maybe nogc; + // AutoAssertNoGC destructor before we enter JIT code. + mozilla::Maybe nogc; nogc.emplace(cx); #endif diff --git a/js/src/jit/Ion.cpp b/js/src/jit/Ion.cpp index cacd6e181e7a..74e148b4f23d 100644 --- a/js/src/jit/Ion.cpp +++ b/js/src/jit/Ion.cpp @@ -2824,7 +2824,7 @@ EnterIon(JSContext* cx, EnterJitData& data) #ifdef DEBUG // See comment in EnterBaseline. - mozilla::Maybe nogc; + mozilla::Maybe nogc; nogc.emplace(cx); #endif @@ -2961,7 +2961,7 @@ jit::FastInvoke(JSContext* cx, HandleFunction fun, CallArgs& args) #ifdef DEBUG // See comment in EnterBaseline. - mozilla::Maybe nogc; + mozilla::Maybe nogc; nogc.emplace(cx); #endif diff --git a/js/src/jit/MacroAssembler.cpp b/js/src/jit/MacroAssembler.cpp index afb1945ffc76..464ddb6b94cb 100644 --- a/js/src/jit/MacroAssembler.cpp +++ b/js/src/jit/MacroAssembler.cpp @@ -1259,7 +1259,7 @@ MacroAssembler::initGCThing(Register obj, Register temp, JSObject* templateObj, } } } else if (templateObj->is()) { - JS::AutoAssertOnGC nogc; // off-thread, so cannot GC + JS::AutoAssertNoGC nogc; // off-thread, so cannot GC size_t nbytes = templateObj->as().size(); const uint8_t* memory = templateObj->as().inlineTypedMem(nogc); diff --git a/js/src/jsapi-tests/testGCExactRooting.cpp b/js/src/jsapi-tests/testGCExactRooting.cpp index 5b77d805e82f..912e049d514f 100644 --- a/js/src/jsapi-tests/testGCExactRooting.cpp +++ b/js/src/jsapi-tests/testGCExactRooting.cpp @@ -32,11 +32,11 @@ END_TEST(testGCExactRooting) BEGIN_TEST(testGCSuppressions) { - JS::AutoAssertOnGC nogc; + JS::AutoAssertNoGC nogc; JS::AutoCheckCannotGC checkgc; JS::AutoSuppressGCAnalysis noanalysis; - JS::AutoAssertOnGC nogcCx(cx); + JS::AutoAssertNoGC nogcCx(cx); JS::AutoCheckCannotGC checkgcCx(cx); JS::AutoSuppressGCAnalysis noanalysisCx(cx); diff --git a/js/src/jsgc.cpp b/js/src/jsgc.cpp index 3314d97e00d9..1fb048cc8b8e 100644 --- a/js/src/jsgc.cpp +++ b/js/src/jsgc.cpp @@ -6995,14 +6995,14 @@ JS::GetGCNumber() } #endif -JS::AutoAssertOnGC::AutoAssertOnGC() +JS::AutoAssertNoGC::AutoAssertNoGC() : gc(nullptr), gcNumber(0) { js::PerThreadData* data = js::TlsPerThreadData.get(); if (data) { /* * GC's from off-thread will always assert, so off-thread is implicitly - * AutoAssertOnGC. We still need to allow AutoAssertOnGC to be used in + * AutoAssertNoGC. We still need to allow AutoAssertNoGC to be used in * code that works from both threads, however. We also use this to * annotate the off thread run loops. */ @@ -7015,13 +7015,13 @@ JS::AutoAssertOnGC::AutoAssertOnGC() } } -JS::AutoAssertOnGC::AutoAssertOnGC(JSContext* cx) +JS::AutoAssertNoGC::AutoAssertNoGC(JSContext* cx) : gc(&cx->gc), gcNumber(cx->gc.gcNumber()) { gc->enterUnsafeRegion(); } -JS::AutoAssertOnGC::~AutoAssertOnGC() +JS::AutoAssertNoGC::~AutoAssertNoGC() { if (gc) { gc->leaveUnsafeRegion(); @@ -7030,7 +7030,7 @@ JS::AutoAssertOnGC::~AutoAssertOnGC() * The following backstop assertion should never fire: if we bumped the * gcNumber, we should have asserted because inUnsafeRegion was true. */ - MOZ_ASSERT(gcNumber == gc->gcNumber(), "GC ran inside an AutoAssertOnGC scope."); + MOZ_ASSERT(gcNumber == gc->gcNumber(), "GC ran inside an AutoAssertNoGC scope."); } } @@ -7723,7 +7723,7 @@ GCRuntime::invokeInterruptCallback(JSContext* cx) { interruptCallbackRequested = false; - JS::AutoAssertOnGC nogc(cx); + JS::AutoAssertNoGC nogc(cx); JS::AutoAssertOnBarrier nobarrier(cx); JS::AutoSuppressGCAnalysis suppress(cx); for (JS::GCInterruptCallback callback : interruptCallbacks) { diff --git a/xpcom/base/nsCycleCollector.cpp b/xpcom/base/nsCycleCollector.cpp index 80eb29aeff13..40656ba714ea 100644 --- a/xpcom/base/nsCycleCollector.cpp +++ b/xpcom/base/nsCycleCollector.cpp @@ -2868,7 +2868,7 @@ nsCycleCollector::ForgetSkippable(bool aRemoveChildlessNodes, MOZ_NEVER_INLINE void nsCycleCollector::MarkRoots(SliceBudget& aBudget) { - JS::AutoAssertOnGC nogc; + JS::AutoAssertNoGC nogc; TimeLog timeLog; AutoRestore ar(mScanInProgress); MOZ_ASSERT(!mScanInProgress); @@ -3190,7 +3190,7 @@ nsCycleCollector::ScanBlackNodes() void nsCycleCollector::ScanRoots(bool aFullySynchGraphBuild) { - JS::AutoAssertOnGC nogc; + JS::AutoAssertNoGC nogc; AutoRestore ar(mScanInProgress); MOZ_ASSERT(!mScanInProgress); mScanInProgress = true; @@ -3281,7 +3281,7 @@ nsCycleCollector::CollectWhite() uint32_t numWhiteJSZones = 0; { - JS::AutoAssertOnGC nogc; + JS::AutoAssertNoGC nogc; bool hasJSContext = !!mJSContext; nsCycleCollectionParticipant* zoneParticipant = hasJSContext ? mJSContext->ZoneParticipant() : nullptr; @@ -3338,7 +3338,7 @@ nsCycleCollector::CollectWhite() } timeLog.Checkpoint("CollectWhite::Unlink"); - JS::AutoAssertOnGC nogc; + JS::AutoAssertNoGC nogc; for (auto iter = whiteNodes.Iter(); !iter.Done(); iter.Next()) { PtrInfo* pinfo = iter.Get(); MOZ_ASSERT(pinfo->mParticipant, @@ -3836,7 +3836,7 @@ nsCycleCollector::BeginCollection(ccType aCCType, timeLog.Checkpoint("Post-FreeSnowWhite finish IGC"); // Set up the data structures for building the graph. - JS::AutoAssertOnGC nogc; + JS::AutoAssertNoGC nogc; JS::AutoEnterCycleCollection autocc(mJSContext->Context()); mGraph.Init(); mResults.Init(); From 435bdeeaecdaf77ddbdaf4dda1a0a94822de9173 Mon Sep 17 00:00:00 2001 From: Jon Coppeard Date: Thu, 27 Oct 2016 11:03:53 +0100 Subject: [PATCH 24/24] Bug 1310147 - Remove AutoAssertNoAlloc and replace with AutoAssertNoGC r=sfink --- js/public/GCAPI.h | 1 + js/src/jit/IonCaches.cpp | 2 +- js/src/jsgc.cpp | 6 ++++++ js/src/jsgcinlines.h | 4 ++-- js/src/vm/HelperThreads.cpp | 2 +- 5 files changed, 11 insertions(+), 4 deletions(-) diff --git a/js/public/GCAPI.h b/js/public/GCAPI.h index bde91b44558a..f4c9fd7e8022 100644 --- a/js/public/GCAPI.h +++ b/js/public/GCAPI.h @@ -510,6 +510,7 @@ class JS_PUBLIC_API(AutoAssertNoGC) : public AutoRequireNoGC public: AutoAssertNoGC(); + explicit AutoAssertNoGC(JSRuntime* rt); explicit AutoAssertNoGC(JSContext* cx); ~AutoAssertNoGC(); }; diff --git a/js/src/jit/IonCaches.cpp b/js/src/jit/IonCaches.cpp index b42587e0c0c5..df82c83e3d71 100644 --- a/js/src/jit/IonCaches.cpp +++ b/js/src/jit/IonCaches.cpp @@ -3657,7 +3657,7 @@ SetPropertyIC::tryAttachAddSlot(JSContext* cx, HandleScript outerScript, IonScri // A GC may have caused cache.value() to become stale as it is not traced. // In this case the IonScript will have been invalidated, so check for that. // Assert no further GC is possible past this point. - JS::AutoAssertNoAlloc nogc; + JS::AutoAssertNoGC nogc; if (ion->invalidated()) return true; diff --git a/js/src/jsgc.cpp b/js/src/jsgc.cpp index 1fb048cc8b8e..1858f7ae24e2 100644 --- a/js/src/jsgc.cpp +++ b/js/src/jsgc.cpp @@ -7015,6 +7015,12 @@ JS::AutoAssertNoGC::AutoAssertNoGC() } } +JS::AutoAssertNoGC::AutoAssertNoGC(JSRuntime* rt) + : gc(&rt->gc), gcNumber(rt->gc.gcNumber()) +{ + gc->enterUnsafeRegion(); +} + JS::AutoAssertNoGC::AutoAssertNoGC(JSContext* cx) : gc(&cx->gc), gcNumber(cx->gc.gcNumber()) { diff --git a/js/src/jsgcinlines.h b/js/src/jsgcinlines.h index 5ea37dc9a09c..8710e9884021 100644 --- a/js/src/jsgcinlines.h +++ b/js/src/jsgcinlines.h @@ -202,7 +202,7 @@ template <> class ZoneCellIter { ArenaIter arenaIter; ArenaCellIterImpl cellIter; - JS::AutoAssertNoAlloc noAlloc; + mozilla::Maybe nogc; protected: // For use when a subclass wants to insert some setup before init(). @@ -221,7 +221,7 @@ class ZoneCellIter { // that allows us to iterate. if (!rt->isHeapBusy()) { // Assert that no GCs can occur while a ZoneCellIter is live. - noAlloc.disallowAlloc(rt); + nogc.emplace(rt); } // We have a single-threaded runtime, so there's no need to protect diff --git a/js/src/vm/HelperThreads.cpp b/js/src/vm/HelperThreads.cpp index 67266a209a3b..dd1f1ddde0d5 100644 --- a/js/src/vm/HelperThreads.cpp +++ b/js/src/vm/HelperThreads.cpp @@ -1321,7 +1321,7 @@ GlobalHelperThreadState::mergeParseTaskCompartment(JSContext* cx, ParseTask* par // destination compartment. Finish any ongoing incremental GC first and // assert that no allocation can occur. gc::FinishGC(cx); - JS::AutoAssertNoAlloc noAlloc(cx); + JS::AutoAssertNoGC nogc(cx); LeaveParseTaskZone(cx, parseTask);