From acbe8ee5cdabb8c46e704ceb68fee4db464ed16f Mon Sep 17 00:00:00 2001 From: Erwin Coumans Date: Thu, 23 Mar 2017 15:10:47 -0700 Subject: [PATCH 01/20] remove use of snprint, fixes Issue 1037 --- examples/ExampleBrowser/CMakeLists.txt | 3 +-- examples/ExampleBrowser/main.cpp | 2 -- .../Importers/ImportMJCFDemo/BulletMJCFImporter.cpp | 8 ++++++++ examples/Importers/ImportURDFDemo/UrdfParser.cpp | 10 ++++++++++ 4 files changed, 19 insertions(+), 4 deletions(-) diff --git a/examples/ExampleBrowser/CMakeLists.txt b/examples/ExampleBrowser/CMakeLists.txt index 127ab11f5..de69074ed 100644 --- a/examples/ExampleBrowser/CMakeLists.txt +++ b/examples/ExampleBrowser/CMakeLists.txt @@ -378,12 +378,11 @@ ADD_EXECUTABLE(App_ExampleBrowser ${BulletExampleBrowser_SRCS} ) -FILE( MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/data" ) ADD_CUSTOM_COMMAND( TARGET App_ExampleBrowser POST_BUILD - COMMAND ${CMAKE_COMMAND} ARGS -E copy_directory ${BULLET_PHYSICS_SOURCE_DIR}/data ${PROJECT_BINARY_DIR}/data + COMMAND ${CMAKE_COMMAND} ARGS -E create_symlink ${BULLET_PHYSICS_SOURCE_DIR}/data ${PROJECT_BINARY_DIR}/data ) IF (BULLET2_MULTITHREADED_TBB_DEMO AND WIN32) diff --git a/examples/ExampleBrowser/main.cpp b/examples/ExampleBrowser/main.cpp index 0395fcbd9..46bbd2b0b 100644 --- a/examples/ExampleBrowser/main.cpp +++ b/examples/ExampleBrowser/main.cpp @@ -1,5 +1,3 @@ - - #include "OpenGLExampleBrowser.h" #include "Bullet3Common/b3CommandLineArgs.h" diff --git a/examples/Importers/ImportMJCFDemo/BulletMJCFImporter.cpp b/examples/Importers/ImportMJCFDemo/BulletMJCFImporter.cpp index 563c657a4..17f77631c 100644 --- a/examples/Importers/ImportMJCFDemo/BulletMJCFImporter.cpp +++ b/examples/Importers/ImportMJCFDemo/BulletMJCFImporter.cpp @@ -173,9 +173,17 @@ struct BulletMJCFImporterInternalData std::string sourceFileLocation(TiXmlElement* e) { +#if 0 + //no C++11 snprintf etc char buf[1024]; snprintf(buf, sizeof(buf), "%s:%i", m_sourceFileName.c_str(), e->Row()); return buf; +#else + char row[1024]; + sprintf(row,"%d",e->Row()); + std::string str = m_sourceFileName.c_str() + std::string(":") + std::string(row); + return str; +#endif } const UrdfLink* getLink(int modelIndex, int linkIndex) const diff --git a/examples/Importers/ImportURDFDemo/UrdfParser.cpp b/examples/Importers/ImportURDFDemo/UrdfParser.cpp index 0b42eb2c9..53857c6c2 100644 --- a/examples/Importers/ImportURDFDemo/UrdfParser.cpp +++ b/examples/Importers/ImportURDFDemo/UrdfParser.cpp @@ -1679,7 +1679,17 @@ bool UrdfParser::loadSDF(const char* sdfText, ErrorLogger* logger) std::string UrdfParser::sourceFileLocation(TiXmlElement* e) { +#if 0 + //no C++11 etc, no snprintf + char buf[1024]; snprintf(buf, sizeof(buf), "%s:%i", m_urdf2Model.m_sourceFile.c_str(), e->Row()); return buf; +#else + char row[1024]; + sprintf(row,"%d",e->Row()); + std::string str = m_urdf2Model.m_sourceFile.c_str() + std::string(":") + std::string(row); + return str; +#endif + } From 544f289b24249e6793e6db507b3cd430a9a33929 Mon Sep 17 00:00:00 2001 From: Erwin Coumans Date: Thu, 23 Mar 2017 15:31:17 -0700 Subject: [PATCH 02/20] better pr2_gripper collision model --- data/pr2_gripper.urdf | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/data/pr2_gripper.urdf b/data/pr2_gripper.urdf index 6ca8dc674..7d16d986a 100644 --- a/data/pr2_gripper.urdf +++ b/data/pr2_gripper.urdf @@ -71,9 +71,9 @@ - + - + @@ -130,10 +130,17 @@ - + - + + + + + + + + From 21d1827c9f7953065fc9dfd20bedcaa9901175f7 Mon Sep 17 00:00:00 2001 From: Erwin Coumans Date: Thu, 23 Mar 2017 17:30:59 -0700 Subject: [PATCH 03/20] revert previous cmake copy->symlink (doesn't work on Windows) fix timing issues at small timestep, disable default linear damping for btMultiBody --- examples/ExampleBrowser/CMakeLists.txt | 3 ++- examples/SharedMemory/PhysicsServerExample.cpp | 11 ++++++++++- src/BulletDynamics/Featherstone/btMultiBody.cpp | 2 +- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/examples/ExampleBrowser/CMakeLists.txt b/examples/ExampleBrowser/CMakeLists.txt index de69074ed..127ab11f5 100644 --- a/examples/ExampleBrowser/CMakeLists.txt +++ b/examples/ExampleBrowser/CMakeLists.txt @@ -378,11 +378,12 @@ ADD_EXECUTABLE(App_ExampleBrowser ${BulletExampleBrowser_SRCS} ) +FILE( MAKE_DIRECTORY "${PROJECT_BINARY_DIR}/data" ) ADD_CUSTOM_COMMAND( TARGET App_ExampleBrowser POST_BUILD - COMMAND ${CMAKE_COMMAND} ARGS -E create_symlink ${BULLET_PHYSICS_SOURCE_DIR}/data ${PROJECT_BINARY_DIR}/data + COMMAND ${CMAKE_COMMAND} ARGS -E copy_directory ${BULLET_PHYSICS_SOURCE_DIR}/data ${PROJECT_BINARY_DIR}/data ) IF (BULLET2_MULTITHREADED_TBB_DEMO AND WIN32) diff --git a/examples/SharedMemory/PhysicsServerExample.cpp b/examples/SharedMemory/PhysicsServerExample.cpp index 970b209d3..7ca002b8d 100644 --- a/examples/SharedMemory/PhysicsServerExample.cpp +++ b/examples/SharedMemory/PhysicsServerExample.cpp @@ -305,7 +305,8 @@ void MotionThreadFunc(void* userPtr,void* lsMemory) double deltaTimeInSeconds = 0; int numCmdSinceSleep1ms = 0; - + unsigned long long int prevTime = clock.getTimeMicroseconds(); + do { BT_PROFILE("loop"); @@ -330,8 +331,16 @@ void MotionThreadFunc(void* userPtr,void* lsMemory) sleepClock.reset(); numCmdSinceSleep1ms = 0; } + + unsigned long long int curTime = clock.getTimeMicroseconds(); + unsigned long long int dtMicro = curTime - prevTime; + prevTime = curTime; +#if 1 + double dt = double(dtMicro)/1000000.; +#else double dt = double(clock.getTimeMicroseconds())/1000000.; clock.reset(); +#endif deltaTimeInSeconds+= dt; { diff --git a/src/BulletDynamics/Featherstone/btMultiBody.cpp b/src/BulletDynamics/Featherstone/btMultiBody.cpp index c14aa2aea..07b2fcddb 100644 --- a/src/BulletDynamics/Featherstone/btMultiBody.cpp +++ b/src/BulletDynamics/Featherstone/btMultiBody.cpp @@ -112,7 +112,7 @@ btMultiBody::btMultiBody(int n_links, m_userObjectPointer(0), m_userIndex2(-1), m_userIndex(-1), - m_linearDamping(0.04f), + m_linearDamping(0.0f), m_angularDamping(0.04f), m_useGyroTerm(true), m_maxAppliedImpulse(1000.f), From ee0e3ba2718cb636b178574c53d67fef2e6daaf7 Mon Sep 17 00:00:00 2001 From: Erwin Coumans Date: Thu, 23 Mar 2017 18:00:00 -0700 Subject: [PATCH 04/20] Remove RobotLogging from CMakeLists.txt Avoid crashing if threadIndex exceeds BT_QUICKPROF_MAX_THREAD_COUNT (64) --- src/LinearMath/btQuickprof.cpp | 8 ++++---- test/CMakeLists.txt | 2 +- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/LinearMath/btQuickprof.cpp b/src/LinearMath/btQuickprof.cpp index b419495c0..c690b57c8 100644 --- a/src/LinearMath/btQuickprof.cpp +++ b/src/LinearMath/btQuickprof.cpp @@ -518,7 +518,7 @@ CProfileIterator * CProfileManager::Get_Iterator( void ) { int threadIndex = btQuickprofGetCurrentThreadIndex2(); - if (threadIndex<0) + if ((threadIndex<0) || threadIndex >= BT_QUICKPROF_MAX_THREAD_COUNT) return 0; return new CProfileIterator( &gRoots[threadIndex]); @@ -549,7 +549,7 @@ void CProfileManager::CleanupMemory(void) void CProfileManager::Start_Profile( const char * name ) { int threadIndex = btQuickprofGetCurrentThreadIndex2(); - if (threadIndex<0) + if ((threadIndex<0) || threadIndex >= BT_QUICKPROF_MAX_THREAD_COUNT) return; if (name != gCurrentNodes[threadIndex]->Get_Name()) { @@ -566,7 +566,7 @@ void CProfileManager::Start_Profile( const char * name ) void CProfileManager::Stop_Profile( void ) { int threadIndex = btQuickprofGetCurrentThreadIndex2(); - if (threadIndex<0) + if ((threadIndex<0) || threadIndex >= BT_QUICKPROF_MAX_THREAD_COUNT) return; // Return will indicate whether we should back up to our parent (we may @@ -590,7 +590,7 @@ void CProfileManager::Reset( void ) { gProfileClock.reset(); int threadIndex = btQuickprofGetCurrentThreadIndex2(); - if (threadIndex<0) + if ((threadIndex<0) || threadIndex >= BT_QUICKPROF_MAX_THREAD_COUNT) return; gRoots[threadIndex].Reset(); gRoots[threadIndex].Call(); diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index ff1da9bff..9bbfdf78c 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -3,5 +3,5 @@ IF(BUILD_BULLET3) SUBDIRS( InverseDynamics SharedMemory ) ENDIF(BUILD_BULLET3) -SUBDIRS( gtest-1.7.0 collision RobotLogging BulletDynamics ) +SUBDIRS( gtest-1.7.0 collision BulletDynamics ) From f27eb19633de3c1864098ee1167f2ba34184cff2 Mon Sep 17 00:00:00 2001 From: erwincoumans Date: Thu, 23 Mar 2017 19:59:53 -0700 Subject: [PATCH 05/20] revert m_linearDamping to previous (0.04f) it broke many tests with empirical check values --- src/BulletDynamics/Featherstone/btMultiBody.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/BulletDynamics/Featherstone/btMultiBody.cpp b/src/BulletDynamics/Featherstone/btMultiBody.cpp index 07b2fcddb..c14aa2aea 100644 --- a/src/BulletDynamics/Featherstone/btMultiBody.cpp +++ b/src/BulletDynamics/Featherstone/btMultiBody.cpp @@ -112,7 +112,7 @@ btMultiBody::btMultiBody(int n_links, m_userObjectPointer(0), m_userIndex2(-1), m_userIndex(-1), - m_linearDamping(0.0f), + m_linearDamping(0.04f), m_angularDamping(0.04f), m_useGyroTerm(true), m_maxAppliedImpulse(1000.f), From ed6530264f56d9f35cc3ae16ab61494b68e647de Mon Sep 17 00:00:00 2001 From: Erwin Coumans Date: Sat, 25 Mar 2017 12:03:40 -0700 Subject: [PATCH 06/20] enable USE_MSVC_SSE2 for MSVC by default, AVX for MSVX disabled by default. --- CMakeLists.txt | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index 05a7897e7..cca0c797d 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -85,10 +85,23 @@ IF(MSVC) ADD_DEFINITIONS(-D_WIN64) ELSE() OPTION(USE_MSVC_SSE "Use MSVC /arch:sse option" ON) + option(USE_MSVC_SSE2 "Compile your program with SSE2 instructions" ON) + IF (USE_MSVC_SSE) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:SSE") ENDIF() + IF (USE_MSVC_SSE2) + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /arch:SSE2") + ENDIF() + ENDIF() + + option(USE_MSVC_AVX "Compile your program with AVX instructions" OFF) + + IF(USE_MSVC_AVX) + add_definitions(/arch:AVX) + ENDIF() + OPTION(USE_MSVC_FAST_FLOATINGPOINT "Use MSVC /fp:fast option" ON) IF (USE_MSVC_FAST_FLOATINGPOINT) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /fp:fast") From 7503418c72f0afc5a4180ea28055bf744999895a Mon Sep 17 00:00:00 2001 From: Erwin Coumans Date: Sun, 26 Mar 2017 13:06:46 -0700 Subject: [PATCH 07/20] Split Bullet/src/LinearMath/btSerializer.cpp into btSerializer64.cpp to make it easier to rebuild serialization structure. Add several MSVC optimization flags to cmake. Bump up VERSION because serialization format changed Expose btScalar& jointMaxForce, btScalar& jointMaxVelocity to 'getJointInfo2' API, add backwards compatibility to examples\Importers\ImportURDFDemo\URDFImporterInterface::getJointInfo. pybullet: expose 4 more fields to getJointInfo: jointLowerLimit/jointUpperLimit/jointMaxForce/jointMaxVelocity fix performance issue in CMD_ACTUAL_STATE_UPDATE_COMPLETED --- CMakeLists.txt | 32 + .../BulletFileLoader/autogenerated/bullet.h | 8 + Extras/Serialize/HeaderGenerator/apiGen.cpp | 16 +- .../HeaderGenerator/bulletGenerate.py | 3 + Extras/Serialize/makesdna/CMakeLists.txt | 28 +- VERSION | 2 +- .../ImportMJCFDemo/BulletMJCFImporter.cpp | 18 +- .../ImportMJCFDemo/BulletMJCFImporter.h | 3 +- .../ImportURDFDemo/BulletUrdfImporter.cpp | 15 +- .../ImportURDFDemo/BulletUrdfImporter.h | 3 +- .../Importers/ImportURDFDemo/URDF2Bullet.cpp | 9 +- .../ImportURDFDemo/URDFImporterInterface.h | 8 + examples/RobotSimulator/CMakeLists.txt | 7 + examples/SharedMemory/BodyJointInfoUtility.h | 6 +- examples/SharedMemory/PhysicsClientC_API.cpp | 31 +- examples/SharedMemory/PhysicsClientC_API.h | 2 + .../PhysicsClientSharedMemory.cpp | 169 ++- .../PhysicsServerCommandProcessor.cpp | 135 +- .../SharedMemory/PhysicsServerExample.cpp | 33 +- .../PhysicsServerSharedMemory.cpp | 1 + examples/SharedMemory/SharedMemoryCommands.h | 1 + .../SharedMemoryInProcessPhysicsC_API.cpp | 39 +- examples/SharedMemory/SharedMemoryPublic.h | 23 +- examples/pybullet/pybullet.c | 52 +- .../Featherstone/btMultiBody.cpp | 4 + src/BulletDynamics/Featherstone/btMultiBody.h | 12 +- .../Featherstone/btMultiBodyLink.h | 12 +- src/LinearMath/CMakeLists.txt | 1 + src/LinearMath/btScalar.h | 2 +- src/LinearMath/btSerializer.cpp | 1160 ++++------------- src/LinearMath/btSerializer.h | 4 +- src/LinearMath/btSerializer64.cpp | 599 +++++++++ 32 files changed, 1412 insertions(+), 1026 deletions(-) create mode 100644 src/LinearMath/btSerializer64.cpp diff --git a/CMakeLists.txt b/CMakeLists.txt index cca0c797d..9c2d5fa0a 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -107,6 +107,38 @@ IF(MSVC) SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /fp:fast") ENDIF() + OPTION(USE_MSVC_STRING_POOLING "Use MSVC /GF string pooling option" ON) + IF (USE_MSVC_STRING_POOLING) + SET(CMAKE_C_FLAGS "/GF ${CMAKE_C_FLAGS}") + SET(CMAKE_CXX_FLAGS "/GF ${CMAKE_CXX_FLAGS}") + ENDIF() + + OPTION(USE_MSVC_FUNCTION_LEVEL_LINKING "Use MSVC /Gy function level linking option" ON) + IF(USE_MSVC_FUNCTION_LEVEL_LINKING) + SET(CMAKE_C_FLAGS "/Gy ${CMAKE_C_FLAGS}") + SET(CMAKE_CXX_FLAGS "/Gy ${CMAKE_CXX_FLAGS}") + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /OPT:REF") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /OPT:REF") + ENDIF(USE_MSVC_FUNCTION_LEVEL_LINKING) + + OPTION(USE_MSVC_EXEPTIONS "Use MSVC C++ exceptions option" OFF) + + + + OPTION(USE_MSVC_COMDAT_FOLDING "Use MSVC /OPT:ICF COMDAT folding option" ON) + + IF(USE_MSVC_COMDAT_FOLDING) + set(CMAKE_SHARED_LINKER_FLAGS "${CMAKE_SHARED_LINKER_FLAGS} /OPT:ICF") + set(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /OPT:ICF") + ENDIF() + + OPTION(USE_MSVC_DISABLE_RTTI "Use MSVC /GR- disabled RTTI flags option" ON) + IF(USE_MSVC_DISABLE_RTTI) + STRING(REGEX REPLACE "/GR" "" CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS}) # Disable RTTI + SET(CMAKE_C_FLAGS "/GR- ${CMAKE_C_FLAGS}") + SET(CMAKE_CXX_FLAGS "/GR- ${CMAKE_CXX_FLAGS}") + ENDIF(USE_MSVC_DISABLE_RTTI) + SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} /wd4244 /wd4267") ENDIF(MSVC) diff --git a/Extras/Serialize/BulletFileLoader/autogenerated/bullet.h b/Extras/Serialize/BulletFileLoader/autogenerated/bullet.h index 2e2e8e322..a4e4599be 100644 --- a/Extras/Serialize/BulletFileLoader/autogenerated/bullet.h +++ b/Extras/Serialize/BulletFileLoader/autogenerated/bullet.h @@ -1368,6 +1368,10 @@ typedef struct bInvalidHandle { double m_jointTorque[6]; double m_jointDamping; double m_jointFriction; + double m_jointLowerLimit; + double m_jointUpperLimit; + double m_jointMaxForce; + double m_jointMaxVelocity; char *m_linkName; char *m_jointName; btCollisionObjectDoubleData *m_linkCollider; @@ -1395,6 +1399,10 @@ typedef struct bInvalidHandle { int m_posVarCount; float m_jointDamping; float m_jointFriction; + float m_jointLowerLimit; + float m_jointUpperLimit; + float m_jointMaxForce; + float m_jointMaxVelocity; char *m_linkName; char *m_jointName; btCollisionObjectFloatData *m_linkCollider; diff --git a/Extras/Serialize/HeaderGenerator/apiGen.cpp b/Extras/Serialize/HeaderGenerator/apiGen.cpp index 16c643e5d..2c4c76327 100644 --- a/Extras/Serialize/HeaderGenerator/apiGen.cpp +++ b/Extras/Serialize/HeaderGenerator/apiGen.cpp @@ -20,12 +20,13 @@ #include "bDNA.h" #include "bBlenderFile.h" #include "btBulletFile.h" +#include "LinearMath/btSerializer.h" #include "bCommon.h" #include #include #include -bool isBulletFile = false; +bool isBulletFile = true; using namespace bParse; typedef std::string bString; @@ -216,10 +217,12 @@ int main(int argc,char** argv) using namespace bParse; dump = fopen("dump.py", "w"); + if (!dump) return 0; fprintf(dump, "%s\n", data); - + +#if 0 char* filename = "../../../../data/r2d2_multibody.bullet"; if (argc==2) @@ -269,9 +272,12 @@ int main(int argc,char** argv) bBlenderFile f(memBuf,len); swap = (f.getFlags() & FD_ENDIAN_SWAP)!=0; } - - - +#else + isBulletFile = true; + bool swap = false; + char* memBuf = sBulletDNAstr; + int len = sBulletDNAlen; +#endif char *blenderData = memBuf; diff --git a/Extras/Serialize/HeaderGenerator/bulletGenerate.py b/Extras/Serialize/HeaderGenerator/bulletGenerate.py index 6d30ae0d2..90d616c56 100644 --- a/Extras/Serialize/HeaderGenerator/bulletGenerate.py +++ b/Extras/Serialize/HeaderGenerator/bulletGenerate.py @@ -1,6 +1,9 @@ +import sys +sys.path.append(".") import dump + header = """/* Copyright (C) 2011 Erwin Coumans & Charlie C * * This software is provided 'as-is', without any express or implied diff --git a/Extras/Serialize/makesdna/CMakeLists.txt b/Extras/Serialize/makesdna/CMakeLists.txt index 04fcdfc7f..3157b0ff4 100644 --- a/Extras/Serialize/makesdna/CMakeLists.txt +++ b/Extras/Serialize/makesdna/CMakeLists.txt @@ -23,15 +23,29 @@ SET (INC_FILES SET(SRC makesdna.cpp) ADD_EXECUTABLE(makesdna ${SRC} ${INC_FILES}) -# Output BulletDNA.c -ADD_CUSTOM_COMMAND( - OUTPUT ${BULLET_PHYSICS_SOURCE_DIR}/src/LinearMath/btSerializer.cpp - COMMAND ${CMAKE_CFG_INTDIR}/makesdna ${BULLET_PHYSICS_SOURCE_DIR}/src/LinearMath/btSerializer.cpp ${BULLET_PHYSICS_SOURCE_DIR}/Extras/Serialize/CommonSerialize/ - DEPENDS makesdna -) +IF (CMAKE_CL_64) + # Output BulletDNA.c + ADD_CUSTOM_COMMAND( + OUTPUT ${BULLET_PHYSICS_SOURCE_DIR}/src/LinearMath/btSerializer64.cpp + COMMAND ${CMAKE_CFG_INTDIR}/makesdna ${BULLET_PHYSICS_SOURCE_DIR}/src/LinearMath/btSerializer64.cpp ${BULLET_PHYSICS_SOURCE_DIR}/Extras/Serialize/CommonSerialize/ + DEPENDS makesdna + ) +SET(SRC ${BULLET_PHYSICS_SOURCE_DIR}/src/LinearMath/btSerializer64.cpp) + +ELSE() + # Output BulletDNA.c + ADD_CUSTOM_COMMAND( + OUTPUT ${BULLET_PHYSICS_SOURCE_DIR}/src/LinearMath/btSerializer.cpp + COMMAND ${CMAKE_CFG_INTDIR}/makesdna ${BULLET_PHYSICS_SOURCE_DIR}/src/LinearMath/btSerializer.cpp ${BULLET_PHYSICS_SOURCE_DIR}/Extras/Serialize/CommonSerialize/ + DEPENDS makesdna + ) +SET(SRC ${BULLET_PHYSICS_SOURCE_DIR}/src/LinearMath/btSerializer.cpp) + +ENDIF() # Build bf_dna library -SET(SRC ${BULLET_PHYSICS_SOURCE_DIR}/src/LinearMath/btSerializer.cpp) + + ADD_LIBRARY(BulletDNA ${SRC} ${INC_FILES}) MESSAGE(STATUS "Configuring makesdna") diff --git a/VERSION b/VERSION index 0104e57c4..3274853c8 100644 --- a/VERSION +++ b/VERSION @@ -1 +1 @@ -2.86 +2.87 diff --git a/examples/Importers/ImportMJCFDemo/BulletMJCFImporter.cpp b/examples/Importers/ImportMJCFDemo/BulletMJCFImporter.cpp index 17f77631c..78c2745da 100644 --- a/examples/Importers/ImportMJCFDemo/BulletMJCFImporter.cpp +++ b/examples/Importers/ImportMJCFDemo/BulletMJCFImporter.cpp @@ -1398,12 +1398,14 @@ void BulletMJCFImporter::getLinkChildIndices(int urdfLinkIndex, btAlignedObjectA } } -bool BulletMJCFImporter::getJointInfo(int urdfLinkIndex, btTransform& parent2joint, btTransform& linkTransformInWorld, btVector3& jointAxisInJointSpace, int& jointType, btScalar& jointLowerLimit, btScalar& jointUpperLimit, btScalar& jointDamping, btScalar& jointFriction) const +bool BulletMJCFImporter::getJointInfo2(int urdfLinkIndex, btTransform& parent2joint, btTransform& linkTransformInWorld, btVector3& jointAxisInJointSpace, int& jointType, btScalar& jointLowerLimit, btScalar& jointUpperLimit, btScalar& jointDamping, btScalar& jointFriction, btScalar& jointMaxForce, btScalar& jointMaxVelocity) const { - jointLowerLimit = 0.f; + jointLowerLimit = 0.f; jointUpperLimit = 0.f; jointDamping = 0.f; jointFriction = 0.f; + jointMaxForce = 0; + jointMaxVelocity = 0; const UrdfLink* link = m_data->getLink(m_data->m_activeModel,urdfLinkIndex); if (link) @@ -1421,7 +1423,9 @@ bool BulletMJCFImporter::getJointInfo(int urdfLinkIndex, btTransform& parent2joi jointUpperLimit = pj->m_upperLimit; jointDamping = pj->m_jointDamping; jointFriction = pj->m_jointFriction; - + jointMaxForce = pj->m_effortLimit; + jointMaxVelocity = pj->m_velocityLimit; + return true; } else { @@ -1432,6 +1436,14 @@ bool BulletMJCFImporter::getJointInfo(int urdfLinkIndex, btTransform& parent2joi return false; } + +bool BulletMJCFImporter::getJointInfo(int urdfLinkIndex, btTransform& parent2joint, btTransform& linkTransformInWorld, btVector3& jointAxisInJointSpace, int& jointType, btScalar& jointLowerLimit, btScalar& jointUpperLimit, btScalar& jointDamping, btScalar& jointFriction) const +{ + //backwards compatibility for custom file importers + btScalar jointMaxForce = 0; + btScalar jointMaxVelocity = 0; + return getJointInfo2(urdfLinkIndex, parent2joint, linkTransformInWorld, jointAxisInJointSpace, jointType, jointLowerLimit, jointUpperLimit, jointDamping, jointFriction,jointMaxForce, jointMaxVelocity); +} bool BulletMJCFImporter::getRootTransformInWorld(btTransform& rootTransformInWorld) const { diff --git a/examples/Importers/ImportMJCFDemo/BulletMJCFImporter.h b/examples/Importers/ImportMJCFDemo/BulletMJCFImporter.h index a719c984e..66e9a2424 100644 --- a/examples/Importers/ImportMJCFDemo/BulletMJCFImporter.h +++ b/examples/Importers/ImportMJCFDemo/BulletMJCFImporter.h @@ -60,7 +60,8 @@ public: virtual void getLinkChildIndices(int urdfLinkIndex, btAlignedObjectArray& childLinkIndices) const; virtual bool getJointInfo(int urdfLinkIndex, btTransform& parent2joint, btTransform& linkTransformInWorld, btVector3& jointAxisInJointSpace, int& jointType, btScalar& jointLowerLimit, btScalar& jointUpperLimit, btScalar& jointDamping, btScalar& jointFriction) const; - + virtual bool getJointInfo2(int urdfLinkIndex, btTransform& parent2joint, btTransform& linkTransformInWorld, btVector3& jointAxisInJointSpace, int& jointType, btScalar& jointLowerLimit, btScalar& jointUpperLimit, btScalar& jointDamping, btScalar& jointFriction, btScalar& jointMaxForce, btScalar& jointMaxVelocity) const; + virtual bool getRootTransformInWorld(btTransform& rootTransformInWorld) const; virtual int convertLinkVisualShapes(int linkIndex, const char* pathPrefix, const btTransform& inertialFrame) const; diff --git a/examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp b/examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp index 5ba817b51..8c242fe3e 100644 --- a/examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp +++ b/examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp @@ -360,12 +360,14 @@ void BulletURDFImporter::getMassAndInertia(int linkIndex, btScalar& mass,btVect } } -bool BulletURDFImporter::getJointInfo(int urdfLinkIndex, btTransform& parent2joint, btTransform& linkTransformInWorld, btVector3& jointAxisInJointSpace, int& jointType, btScalar& jointLowerLimit, btScalar& jointUpperLimit, btScalar& jointDamping, btScalar& jointFriction) const +bool BulletURDFImporter::getJointInfo2(int urdfLinkIndex, btTransform& parent2joint, btTransform& linkTransformInWorld, btVector3& jointAxisInJointSpace, int& jointType, btScalar& jointLowerLimit, btScalar& jointUpperLimit, btScalar& jointDamping, btScalar& jointFriction, btScalar& jointMaxForce, btScalar& jointMaxVelocity) const { jointLowerLimit = 0.f; jointUpperLimit = 0.f; jointDamping = 0.f; jointFriction = 0.f; + jointMaxForce = 0.f; + jointMaxVelocity = 0.f; UrdfLink* const* linkPtr = m_data->m_urdfParser.getModel().m_links.getAtIndex(urdfLinkIndex); btAssert(linkPtr); @@ -384,7 +386,8 @@ bool BulletURDFImporter::getJointInfo(int urdfLinkIndex, btTransform& parent2joi jointUpperLimit = pj->m_upperLimit; jointDamping = pj->m_jointDamping; jointFriction = pj->m_jointFriction; - + jointMaxForce = pj->m_effortLimit; + jointMaxVelocity = pj->m_velocityLimit; return true; } else { @@ -394,6 +397,14 @@ bool BulletURDFImporter::getJointInfo(int urdfLinkIndex, btTransform& parent2joi } return false; + +}; + +bool BulletURDFImporter::getJointInfo(int urdfLinkIndex, btTransform& parent2joint, btTransform& linkTransformInWorld, btVector3& jointAxisInJointSpace, int& jointType, btScalar& jointLowerLimit, btScalar& jointUpperLimit, btScalar& jointDamping, btScalar& jointFriction) const +{ + btScalar jointMaxForce; + btScalar jointMaxVelocity; + return getJointInfo2(urdfLinkIndex, parent2joint, linkTransformInWorld, jointAxisInJointSpace, jointType, jointLowerLimit, jointUpperLimit, jointDamping, jointFriction,jointMaxForce,jointMaxVelocity); } diff --git a/examples/Importers/ImportURDFDemo/BulletUrdfImporter.h b/examples/Importers/ImportURDFDemo/BulletUrdfImporter.h index 2ceb8e0d7..c61bf77a2 100644 --- a/examples/Importers/ImportURDFDemo/BulletUrdfImporter.h +++ b/examples/Importers/ImportURDFDemo/BulletUrdfImporter.h @@ -46,7 +46,8 @@ public: virtual void getMassAndInertia(int linkIndex, btScalar& mass,btVector3& localInertiaDiagonal, btTransform& inertialFrame) const; virtual bool getJointInfo(int urdfLinkIndex, btTransform& parent2joint, btTransform& linkTransformInWorld, btVector3& jointAxisInJointSpace, int& jointType, btScalar& jointLowerLimit, btScalar& jointUpperLimit, btScalar& jointDamping, btScalar& jointFriction) const; - + virtual bool getJointInfo2(int urdfLinkIndex, btTransform& parent2joint, btTransform& linkTransformInWorld, btVector3& jointAxisInJointSpace, int& jointType, btScalar& jointLowerLimit, btScalar& jointUpperLimit, btScalar& jointDamping, btScalar& jointFriction, btScalar& jointMaxForce, btScalar& jointMaxVelocity) const; + virtual bool getRootTransformInWorld(btTransform& rootTransformInWorld) const; virtual int convertLinkVisualShapes(int linkIndex, const char* pathPrefix, const btTransform& inertialFrame) const; diff --git a/examples/Importers/ImportURDFDemo/URDF2Bullet.cpp b/examples/Importers/ImportURDFDemo/URDF2Bullet.cpp index 7cd514804..51df659a0 100644 --- a/examples/Importers/ImportURDFDemo/URDF2Bullet.cpp +++ b/examples/Importers/ImportURDFDemo/URDF2Bullet.cpp @@ -232,9 +232,11 @@ void ConvertURDF2BulletInternal( btScalar jointUpperLimit; btScalar jointDamping; btScalar jointFriction; + btScalar jointMaxForce; + btScalar jointMaxVelocity; - bool hasParentJoint = u2b.getJointInfo(urdfLinkIndex, parent2joint, linkTransformInWorldSpace, jointAxisInJointSpace, jointType,jointLowerLimit,jointUpperLimit, jointDamping, jointFriction); + bool hasParentJoint = u2b.getJointInfo2(urdfLinkIndex, parent2joint, linkTransformInWorldSpace, jointAxisInJointSpace, jointType,jointLowerLimit,jointUpperLimit, jointDamping, jointFriction,jointMaxForce,jointMaxVelocity); std::string linkName = u2b.getLinkName(urdfLinkIndex); if (flags & CUF_USE_SDF) @@ -375,7 +377,10 @@ void ConvertURDF2BulletInternal( -offsetInB.getOrigin(), disableParentCollision); cache.m_bulletMultiBody->getLink(mbLinkIndex).m_jointDamping = jointDamping; - cache.m_bulletMultiBody->getLink(mbLinkIndex).m_jointFriction= jointFriction; + cache.m_bulletMultiBody->getLink(mbLinkIndex).m_jointFriction = jointFriction; + cache.m_bulletMultiBody->getLink(mbLinkIndex).m_jointLowerLimit = jointLowerLimit; + cache.m_bulletMultiBody->getLink(mbLinkIndex).m_jointUpperLimit = jointUpperLimit; + creation.addLinkMapping(urdfLinkIndex,mbLinkIndex); if (jointType == URDFRevoluteJoint && jointLowerLimit <= jointUpperLimit) { //std::string name = u2b.getLinkName(urdfLinkIndex); diff --git a/examples/Importers/ImportURDFDemo/URDFImporterInterface.h b/examples/Importers/ImportURDFDemo/URDFImporterInterface.h index 427f98b3b..c8f996bf5 100644 --- a/examples/Importers/ImportURDFDemo/URDFImporterInterface.h +++ b/examples/Importers/ImportURDFDemo/URDFImporterInterface.h @@ -43,6 +43,14 @@ public: virtual void getLinkChildIndices(int urdfLinkIndex, btAlignedObjectArray& childLinkIndices) const =0; virtual bool getJointInfo(int urdfLinkIndex, btTransform& parent2joint, btTransform& linkTransformInWorld, btVector3& jointAxisInJointSpace, int& jointType, btScalar& jointLowerLimit, btScalar& jointUpperLimit, btScalar& jointDamping, btScalar& jointFriction) const =0; + + virtual bool getJointInfo2(int urdfLinkIndex, btTransform& parent2joint, btTransform& linkTransformInWorld, btVector3& jointAxisInJointSpace, int& jointType, btScalar& jointLowerLimit, btScalar& jointUpperLimit, btScalar& jointDamping, btScalar& jointFriction, btScalar& jointMaxForce, btScalar& jointMaxVelocity) const + { + //backwards compatibility for custom file importers + jointMaxForce = 0; + jointMaxVelocity = 0; + return getJointInfo(urdfLinkIndex, parent2joint, linkTransformInWorld, jointAxisInJointSpace, jointType, jointLowerLimit, jointUpperLimit, jointDamping, jointFriction); + }; virtual bool getRootTransformInWorld(btTransform& rootTransformInWorld) const =0; diff --git a/examples/RobotSimulator/CMakeLists.txt b/examples/RobotSimulator/CMakeLists.txt index c9e0a66c3..e966cf390 100644 --- a/examples/RobotSimulator/CMakeLists.txt +++ b/examples/RobotSimulator/CMakeLists.txt @@ -14,6 +14,13 @@ SET(RobotSimulator_SRCS b3RobotSimulatorClientAPI.h MinitaurSetup.cpp MinitaurSetup.h + Bound.cpp + GRAPI/BulletMinitaur.cpp + GRAPI/BulletMotor.cpp + GRAPI/BulletRemoteKeyboard + GRAPI/BulletRobot + GRAPI/Impl.cpp + GRAPI/MinitaurLeg.cpp ../../examples/SharedMemory/IKTrajectoryHelper.cpp ../../examples/SharedMemory/IKTrajectoryHelper.h ../../examples/ExampleBrowser/InProcessExampleBrowser.cpp diff --git a/examples/SharedMemory/BodyJointInfoUtility.h b/examples/SharedMemory/BodyJointInfoUtility.h index a959b40dd..6c3e61c16 100644 --- a/examples/SharedMemory/BodyJointInfoUtility.h +++ b/examples/SharedMemory/BodyJointInfoUtility.h @@ -60,7 +60,11 @@ template void addJointInfoFromMultiBodyData(const T* mb info.m_jointType = mb->m_links[link].m_jointType; info.m_jointDamping = mb->m_links[link].m_jointDamping; - info.m_jointFriction = mb->m_links[link].m_jointFriction; + info.m_jointFriction1 = mb->m_links[link].m_jointFriction; + info.m_jointLowerLimit = mb->m_links[link].m_jointLowerLimit; + info.m_jointUpperLimit = mb->m_links[link].m_jointUpperLimit; + info.m_jointMaxForce = mb->m_links[link].m_jointMaxForce; + info.m_jointMaxVelocity = mb->m_links[link].m_jointMaxVelocity; if ((mb->m_links[link].m_jointType == eRevoluteType) || (mb->m_links[link].m_jointType == ePrismaticType)) { diff --git a/examples/SharedMemory/PhysicsClientC_API.cpp b/examples/SharedMemory/PhysicsClientC_API.cpp index 0e2cf9839..bf2c95dad 100644 --- a/examples/SharedMemory/PhysicsClientC_API.cpp +++ b/examples/SharedMemory/PhysicsClientC_API.cpp @@ -548,10 +548,24 @@ b3SharedMemoryCommandHandle b3RequestActualStateCommandInit(b3PhysicsClientHandl struct SharedMemoryCommand* command = cl->getAvailableSharedMemoryCommand(); b3Assert(command); command->m_type =CMD_REQUEST_ACTUAL_STATE; + command->m_updateFlags = 0; command->m_requestActualStateInformationCommandArgument.m_bodyUniqueId = bodyUniqueId; return (b3SharedMemoryCommandHandle) command; } +int b3RequestActualStateCommandComputeLinkVelocity(b3SharedMemoryCommandHandle commandHandle, int computeLinkVelocity) +{ + struct SharedMemoryCommand* command = (struct SharedMemoryCommand*) commandHandle; + b3Assert(command); + btAssert(command->m_type == CMD_REQUEST_ACTUAL_STATE); + if (computeLinkVelocity && command->m_type == CMD_REQUEST_ACTUAL_STATE) + { + command->m_updateFlags |= ACTUAL_STATE_COMPUTE_LINKVELOCITY; + } + return 0; +} + + int b3GetJointState(b3PhysicsClientHandle physClient, b3SharedMemoryStatusHandle statusHandle, int jointIndex, b3JointSensorState *state) { const SharedMemoryStatus* status = (const SharedMemoryStatus* ) statusHandle; @@ -605,6 +619,8 @@ int b3GetLinkState(b3PhysicsClientHandle physClient, b3SharedMemoryStatusHandle { state->m_worldPosition[i] = status->m_sendActualStateArgs.m_linkState[7 * linkIndex + i]; state->m_localInertialPosition[i] = status->m_sendActualStateArgs.m_linkLocalInertialFrames[7 * linkIndex + i]; + state->m_worldLinearVelocity[i] = status->m_sendActualStateArgs.m_linkWorldVelocities[6*linkIndex+i]; + state->m_worldAngularVelocity[i] = status->m_sendActualStateArgs.m_linkWorldVelocities[6*linkIndex+i+3]; } for (int i = 0; i < 4; ++i) { @@ -1086,6 +1102,7 @@ int b3SubmitClientCommand(b3PhysicsClientHandle physClient, const b3SharedMemory b3SharedMemoryStatusHandle b3SubmitClientCommandAndWaitStatus(b3PhysicsClientHandle physClient, const b3SharedMemoryCommandHandle commandHandle) { + B3_PROFILE("b3SubmitClientCommandAndWaitStatus"); b3Clock clock; double startTime = clock.getTimeInSeconds(); @@ -1099,11 +1116,17 @@ b3SharedMemoryStatusHandle b3SubmitClientCommandAndWaitStatus(b3PhysicsClientHan double timeOutInSeconds = cl->getTimeOut(); - b3SubmitClientCommand(physClient, commandHandle); - - while (cl->isConnected() && (statusHandle == 0) && (clock.getTimeInSeconds()-startTime < timeOutInSeconds)) { - statusHandle = b3ProcessServerStatus(physClient); + B3_PROFILE("b3SubmitClientCommand"); + b3SubmitClientCommand(physClient, commandHandle); + } + { + B3_PROFILE("b3ProcessServerStatus"); + while (cl->isConnected() && (statusHandle == 0) && (clock.getTimeInSeconds()-startTime < timeOutInSeconds)) + { + clock.usleep(0); + statusHandle = b3ProcessServerStatus(physClient); + } } return (b3SharedMemoryStatusHandle)statusHandle; } diff --git a/examples/SharedMemory/PhysicsClientC_API.h b/examples/SharedMemory/PhysicsClientC_API.h index 7aef18f86..ff553680c 100644 --- a/examples/SharedMemory/PhysicsClientC_API.h +++ b/examples/SharedMemory/PhysicsClientC_API.h @@ -313,6 +313,8 @@ int b3CreateSensorEnable6DofJointForceTorqueSensor(b3SharedMemoryCommandHandle c int b3CreateSensorEnableIMUForLink(b3SharedMemoryCommandHandle commandHandle, int linkIndex, int enable); b3SharedMemoryCommandHandle b3RequestActualStateCommandInit(b3PhysicsClientHandle physClient,int bodyUniqueId); +int b3RequestActualStateCommandComputeLinkVelocity(b3SharedMemoryCommandHandle commandHandle, int computeLinkVelocity); + int b3GetJointState(b3PhysicsClientHandle physClient, b3SharedMemoryStatusHandle statusHandle, int jointIndex, struct b3JointSensorState *state); int b3GetLinkState(b3PhysicsClientHandle physClient, b3SharedMemoryStatusHandle statusHandle, int linkIndex, struct b3LinkState *state); diff --git a/examples/SharedMemory/PhysicsClientSharedMemory.cpp b/examples/SharedMemory/PhysicsClientSharedMemory.cpp index 0910e1adc..a0e18235e 100644 --- a/examples/SharedMemory/PhysicsClientSharedMemory.cpp +++ b/examples/SharedMemory/PhysicsClientSharedMemory.cpp @@ -338,7 +338,7 @@ void PhysicsClientSharedMemory::processBodyJointInfo(int bodyUniqueId, const Sha const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() { // SharedMemoryStatus* stat = 0; - + if (!m_data->m_testBlock1) { m_data->m_lastServerStatus.m_type = CMD_SHARED_MEMORY_NOT_INITIALIZED; return &m_data->m_lastServerStatus; @@ -355,7 +355,9 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() { } if (m_data->m_testBlock1->m_numServerCommands > - m_data->m_testBlock1->m_numProcessedServerCommands) { + m_data->m_testBlock1->m_numProcessedServerCommands) + { + B3_PROFILE("processServerCMD"); btAssert(m_data->m_testBlock1->m_numServerCommands == m_data->m_testBlock1->m_numProcessedServerCommands + 1); @@ -365,8 +367,13 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() { // EnumSharedMemoryServerStatus s = (EnumSharedMemoryServerStatus)serverCmd.m_type; // consume the command - switch (serverCmd.m_type) { - case CMD_CLIENT_COMMAND_COMPLETED: { + switch (serverCmd.m_type) + { + + case CMD_CLIENT_COMMAND_COMPLETED: + { + B3_PROFILE("CMD_CLIENT_COMMAND_COMPLETED"); + if (m_data->m_verboseOutput) { b3Printf("Server completed command"); } @@ -375,13 +382,17 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() { case CMD_MJCF_LOADING_COMPLETED: { + B3_PROFILE("CMD_MJCF_LOADING_COMPLETED"); + if (m_data->m_verboseOutput) { b3Printf("Server loading the MJCF OK\n"); } break; } - case CMD_SDF_LOADING_COMPLETED: { - + case CMD_SDF_LOADING_COMPLETED: + { + B3_PROFILE("CMD_SDF_LOADING_COMPLETED"); + if (m_data->m_verboseOutput) { b3Printf("Server loading the SDF OK\n"); } @@ -389,7 +400,9 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() { break; } - case CMD_URDF_LOADING_COMPLETED: { + case CMD_URDF_LOADING_COMPLETED: + { + B3_PROFILE("CMD_URDF_LOADING_COMPLETED"); if (m_data->m_verboseOutput) { b3Printf("Server loading the URDF OK\n"); @@ -440,19 +453,28 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() { } break; } - case CMD_DESIRED_STATE_RECEIVED_COMPLETED: { + case CMD_DESIRED_STATE_RECEIVED_COMPLETED: + { + B3_PROFILE("CMD_DESIRED_STATE_RECEIVED_COMPLETED"); + if (m_data->m_verboseOutput) { b3Printf("Server received desired state"); } break; } - case CMD_STEP_FORWARD_SIMULATION_COMPLETED: { + case CMD_STEP_FORWARD_SIMULATION_COMPLETED: + { + B3_PROFILE("CMD_STEP_FORWARD_SIMULATION_COMPLETED"); + if (m_data->m_verboseOutput) { b3Printf("Server completed step simulation"); } break; } - case CMD_URDF_LOADING_FAILED: { + case CMD_URDF_LOADING_FAILED: + { + B3_PROFILE("CMD_URDF_LOADING_FAILED"); + if (m_data->m_verboseOutput) { b3Printf("Server failed loading the URDF...\n"); } @@ -461,24 +483,30 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() { } case CMD_USER_CONSTRAINT_INFO_COMPLETED: { - int cid = serverCmd.m_userConstraintResultArgs.m_userConstraintUniqueId; + B3_PROFILE("CMD_USER_CONSTRAINT_INFO_COMPLETED"); + + int cid = serverCmd.m_userConstraintResultArgs.m_userConstraintUniqueId; m_data->m_userConstraintInfoMap.insert(cid,serverCmd.m_userConstraintResultArgs); break; } case CMD_USER_CONSTRAINT_COMPLETED: { + B3_PROFILE("CMD_USER_CONSTRAINT_COMPLETED"); int cid = serverCmd.m_userConstraintResultArgs.m_userConstraintUniqueId; m_data->m_userConstraintInfoMap.insert(cid,serverCmd.m_userConstraintResultArgs); break; } case CMD_REMOVE_USER_CONSTRAINT_COMPLETED: { + B3_PROFILE("CMD_REMOVE_USER_CONSTRAINT_COMPLETED"); int cid = serverCmd.m_userConstraintResultArgs.m_userConstraintUniqueId; m_data->m_userConstraintInfoMap.remove(cid); break; } case CMD_CHANGE_USER_CONSTRAINT_COMPLETED: { + B3_PROFILE("CMD_CHANGE_USER_CONSTRAINT_COMPLETED"); + int cid = serverCmd.m_userConstraintResultArgs.m_userConstraintUniqueId; b3UserConstraint* userConstraintPtr = m_data->m_userConstraintInfoMap[cid]; if (userConstraintPtr) @@ -507,26 +535,31 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() { case CMD_USER_CONSTRAINT_FAILED: { + B3_PROFILE("CMD_USER_CONSTRAINT_FAILED"); b3Warning("createConstraint failed"); break; } case CMD_REMOVE_USER_CONSTRAINT_FAILED: { + B3_PROFILE("CMD_REMOVE_USER_CONSTRAINT_FAILED"); b3Warning("removeConstraint failed"); break; } case CMD_CHANGE_USER_CONSTRAINT_FAILED: { + B3_PROFILE("CMD_CHANGE_USER_CONSTRAINT_FAILED"); b3Warning("changeConstraint failed"); break; } case CMD_ACTUAL_STATE_UPDATE_FAILED: { + B3_PROFILE("CMD_ACTUAL_STATE_UPDATE_FAILED"); b3Warning("request actual state failed"); break; } case CMD_BODY_INFO_COMPLETED: { + B3_PROFILE("CMD_BODY_INFO_COMPLETED"); if (m_data->m_verboseOutput) { b3Printf("Received body info\n"); } @@ -537,12 +570,14 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() { } case CMD_MJCF_LOADING_FAILED: { + B3_PROFILE("CMD_MJCF_LOADING_FAILED"); if (m_data->m_verboseOutput) { b3Printf("Server failed loading the MJCF...\n"); } break; } case CMD_SDF_LOADING_FAILED: { + B3_PROFILE("CMD_SDF_LOADING_FAILED"); if (m_data->m_verboseOutput) { b3Printf("Server failed loading the SDF...\n"); } @@ -551,6 +586,7 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() { } case CMD_BULLET_DATA_STREAM_RECEIVED_COMPLETED: { + B3_PROFILE("CMD_BULLET_DATA_STREAM_RECEIVED_COMPLETED"); if (m_data->m_verboseOutput) { b3Printf("Server received bullet data stream OK\n"); } @@ -558,6 +594,7 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() { break; } case CMD_BULLET_DATA_STREAM_RECEIVED_FAILED: { + B3_PROFILE("CMD_BULLET_DATA_STREAM_RECEIVED_FAILED"); if (m_data->m_verboseOutput) { b3Printf("Server failed receiving bullet data stream\n"); } @@ -566,37 +603,33 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() { } case CMD_ACTUAL_STATE_UPDATE_COMPLETED: { - if (m_data->m_verboseOutput) { + B3_PROFILE("CMD_ACTUAL_STATE_UPDATE_COMPLETED"); + if (m_data->m_verboseOutput) + { b3Printf("Received actual state\n"); - } - SharedMemoryStatus& command = m_data->m_testBlock1->m_serverCommands[0]; + + SharedMemoryStatus& command = m_data->m_testBlock1->m_serverCommands[0]; - int numQ = command.m_sendActualStateArgs.m_numDegreeOfFreedomQ; - int numU = command.m_sendActualStateArgs.m_numDegreeOfFreedomU; - if (m_data->m_verboseOutput) { + int numQ = command.m_sendActualStateArgs.m_numDegreeOfFreedomQ; + int numU = command.m_sendActualStateArgs.m_numDegreeOfFreedomU; b3Printf("size Q = %d, size U = %d\n", numQ, numU); - } - char msg[1024]; + char msg[1024]; + { + sprintf(msg, "Q=["); - { - sprintf(msg, "Q=["); - - for (int i = 0; i < numQ; i++) { - if (i < numQ - 1) { - sprintf(msg, "%s%f,", msg, - command.m_sendActualStateArgs.m_actualStateQ[i]); - } else { - sprintf(msg, "%s%f", msg, - command.m_sendActualStateArgs.m_actualStateQ[i]); - } - } - sprintf(msg, "%s]", msg); - } - if (m_data->m_verboseOutput) { + for (int i = 0; i < numQ; i++) { + if (i < numQ - 1) { + sprintf(msg, "%s%f,", msg, + command.m_sendActualStateArgs.m_actualStateQ[i]); + } else { + sprintf(msg, "%s%f", msg, + command.m_sendActualStateArgs.m_actualStateQ[i]); + } + } + sprintf(msg, "%s]", msg); + } b3Printf(msg); - } - - { + sprintf(msg, "U=["); for (int i = 0; i < numU; i++) { @@ -609,18 +642,15 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() { } } sprintf(msg, "%s]", msg); - } - if (m_data->m_verboseOutput) { + b3Printf(msg); - } - - if (m_data->m_verboseOutput) { b3Printf("\n"); } break; } case CMD_RESET_SIMULATION_COMPLETED: { - if (m_data->m_verboseOutput) { + B3_PROFILE("CMD_RESET_SIMULATION_COMPLETED"); + if (m_data->m_verboseOutput) { b3Printf("CMD_RESET_SIMULATION_COMPLETED clean data\n"); } resetData(); @@ -628,6 +658,7 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() { break; } case CMD_DEBUG_LINES_COMPLETED: { + B3_PROFILE("CMD_DEBUG_LINES_COMPLETED"); if (m_data->m_verboseOutput) { b3Printf("Success receiving %d debug lines", serverCmd.m_sendDebugLinesArgs.m_numDebugLines); @@ -671,11 +702,13 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() { } case CMD_RIGID_BODY_CREATION_COMPLETED: { + B3_PROFILE("CMD_RIGID_BODY_CREATION_COMPLETED"); break; } case CMD_DEBUG_LINES_OVERFLOW_FAILED: { - b3Warning("Error receiving debug lines"); + B3_PROFILE("CMD_DEBUG_LINES_OVERFLOW_FAILED"); + b3Warning("Error receiving debug lines"); m_data->m_debugLinesFrom.resize(0); m_data->m_debugLinesTo.resize(0); m_data->m_debugLinesColor.resize(0); @@ -685,6 +718,7 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() { case CMD_CAMERA_IMAGE_COMPLETED: { + B3_PROFILE("CMD_CAMERA_IMAGE_COMPLETED"); if (m_data->m_verboseOutput) { b3Printf("Camera image OK\n"); @@ -734,7 +768,8 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() { case CMD_CAMERA_IMAGE_FAILED: { - b3Warning("Camera image FAILED\n"); + B3_PROFILE("CMD_CAMERA_IMAGE_FAILED"); + b3Warning("Camera image FAILED\n"); break; } case CMD_CALCULATED_INVERSE_DYNAMICS_COMPLETED: @@ -768,6 +803,7 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() { case CMD_REQUEST_VR_EVENTS_DATA_COMPLETED: { + B3_PROFILE("CMD_REQUEST_VR_EVENTS_DATA_COMPLETED"); if (m_data->m_verboseOutput) { b3Printf("Request VR Events completed"); @@ -782,6 +818,7 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() { case CMD_REQUEST_KEYBOARD_EVENTS_DATA_COMPLETED: { + B3_PROFILE("CMD_REQUEST_KEYBOARD_EVENTS_DATA_COMPLETED"); if (m_data->m_verboseOutput) { b3Printf("Request keyboard events completed"); @@ -796,6 +833,7 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() { case CMD_REQUEST_AABB_OVERLAP_COMPLETED: { + B3_PROFILE("CMD_REQUEST_AABB_OVERLAP_COMPLETED"); if (m_data->m_verboseOutput) { b3Printf("Overlapping object request completed"); @@ -815,7 +853,8 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() { } case CMD_CONTACT_POINT_INFORMATION_COMPLETED: { - if (m_data->m_verboseOutput) + B3_PROFILE("CMD_CONTACT_POINT_INFORMATION_COMPLETED"); + if (m_data->m_verboseOutput) { b3Printf("Contact Point Information Request OK\n"); } @@ -835,30 +874,38 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() { } case CMD_CONTACT_POINT_INFORMATION_FAILED: { - b3Warning("Contact Point Information Request failed"); + B3_PROFILE("CMD_CONTACT_POINT_INFORMATION_FAILED"); + b3Warning("Contact Point Information Request failed"); break; } case CMD_SAVE_WORLD_COMPLETED: - break; + { + B3_PROFILE("CMD_SAVE_WORLD_COMPLETED"); + break; + } case CMD_SAVE_WORLD_FAILED: { - b3Warning("Saving world failed"); + B3_PROFILE("CMD_SAVE_WORLD_FAILED"); + b3Warning("Saving world failed"); break; } case CMD_CALCULATE_INVERSE_KINEMATICS_COMPLETED: { - break; + B3_PROFILE("CMD_CALCULATE_INVERSE_KINEMATICS_COMPLETED"); + break; } case CMD_CALCULATE_INVERSE_KINEMATICS_FAILED: { - b3Warning("Calculate Inverse Kinematics Request failed"); + B3_PROFILE("CMD_CALCULATE_INVERSE_KINEMATICS_FAILED"); + b3Warning("Calculate Inverse Kinematics Request failed"); break; } case CMD_VISUAL_SHAPE_INFO_COMPLETED: { - if (m_data->m_verboseOutput) + B3_PROFILE("CMD_VISUAL_SHAPE_INFO_COMPLETED"); + if (m_data->m_verboseOutput) { b3Printf("Visual Shape Information Request OK\n"); } @@ -945,6 +992,7 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() { } }; + m_data->m_testBlock1->m_numProcessedServerCommands++; // we don't have more than 1 command outstanding (in total, either server or client) btAssert(m_data->m_testBlock1->m_numProcessedServerCommands == @@ -960,6 +1008,7 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() { if ((serverCmd.m_type == CMD_SDF_LOADING_COMPLETED) || (serverCmd.m_type == CMD_MJCF_LOADING_COMPLETED) || (serverCmd.m_type == CMD_SYNC_BODY_INFO_COMPLETED)) { + B3_PROFILE("CMD_LOADING_COMPLETED"); int numConstraints = serverCmd.m_sdfLoadedArgs.m_numUserConstraints; for (int i=0;im_constraintIdsRequestInfo.size()) { int cid = m_data->m_constraintIdsRequestInfo[m_data->m_constraintIdsRequestInfo.size()-1]; @@ -1009,6 +1060,7 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() { if (serverCmd.m_type == CMD_BODY_INFO_COMPLETED) { + B3_PROFILE("CMD_BODY_INFO_COMPLETED"); //are there any bodies left to be processed? if (m_data->m_bodyIdsRequestInfo.size()) { @@ -1042,6 +1094,7 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() { if (serverCmd.m_type == CMD_REQUEST_AABB_OVERLAP_COMPLETED) { + B3_PROFILE("CMD_REQUEST_AABB_OVERLAP_COMPLETED2"); SharedMemoryCommand& command = m_data->m_testBlock1->m_clientCommands[0]; if (serverCmd.m_sendOverlappingObjectsArgs.m_numRemainingOverlappingObjects > 0 && serverCmd.m_sendOverlappingObjectsArgs.m_numOverlappingObjectsCopied) { @@ -1054,6 +1107,7 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() { if (serverCmd.m_type == CMD_CONTACT_POINT_INFORMATION_COMPLETED) { + B3_PROFILE("CMD_CONTACT_POINT_INFORMATION_COMPLETED2"); SharedMemoryCommand& command = m_data->m_testBlock1->m_clientCommands[0]; if (serverCmd.m_sendContactPointArgs.m_numRemainingContactPoints>0 && serverCmd.m_sendContactPointArgs.m_numContactPointsCopied) { @@ -1068,6 +1122,7 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() { if (serverCmd.m_type == CMD_VISUAL_SHAPE_INFO_COMPLETED) { + B3_PROFILE("CMD_VISUAL_SHAPE_INFO_COMPLETED2"); SharedMemoryCommand& command = m_data->m_testBlock1->m_clientCommands[0]; if (serverCmd.m_sendVisualShapeArgs.m_numRemainingVisualShapes >0 && serverCmd.m_sendVisualShapeArgs.m_numVisualShapesCopied) { @@ -1083,6 +1138,7 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() { if (serverCmd.m_type == CMD_CAMERA_IMAGE_COMPLETED) { + B3_PROFILE("CMD_CAMERA_IMAGE_COMPLETED2"); SharedMemoryCommand& command = m_data->m_testBlock1->m_clientCommands[0]; if (serverCmd.m_sendPixelDataArguments.m_numRemainingPixels > 0 && serverCmd.m_sendPixelDataArguments.m_numPixelsCopied) @@ -1106,7 +1162,9 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() { } if ((serverCmd.m_type == CMD_DEBUG_LINES_COMPLETED) && - (serverCmd.m_sendDebugLinesArgs.m_numRemainingDebugLines > 0)) { + (serverCmd.m_sendDebugLinesArgs.m_numRemainingDebugLines > 0)) + { + B3_PROFILE("CMD_DEBUG_LINES_COMPLETED2"); SharedMemoryCommand& command = m_data->m_testBlock1->m_clientCommands[0]; // continue requesting debug lines for drawing @@ -1121,7 +1179,10 @@ const SharedMemoryStatus* PhysicsClientSharedMemory::processServerStatus() { return &m_data->m_lastServerStatus; } else { - if (m_data->m_verboseOutput) { + if (m_data->m_verboseOutput) + { + B3_PROFILE("m_verboseOutput"); + b3Printf("m_numServerStatus = %d, processed = %d\n", m_data->m_testBlock1->m_numServerCommands, m_data->m_testBlock1->m_numProcessedServerCommands); diff --git a/examples/SharedMemory/PhysicsServerCommandProcessor.cpp b/examples/SharedMemory/PhysicsServerCommandProcessor.cpp index 22469e7e6..614dc8da5 100644 --- a/examples/SharedMemory/PhysicsServerCommandProcessor.cpp +++ b/examples/SharedMemory/PhysicsServerCommandProcessor.cpp @@ -1758,6 +1758,7 @@ int PhysicsServerCommandProcessor::createBodyInfoStream(int bodyUniqueId, char* bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryCommand& clientCmd, struct SharedMemoryStatus& serverStatusOut, char* bufferServerToClient, int bufferSizeInBytes ) { + BT_PROFILE("processCommand"); bool hasStatus = false; @@ -1818,6 +1819,8 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm #endif case CMD_STATE_LOGGING: { + BT_PROFILE("CMD_STATE_LOGGING"); + serverStatusOut.m_type = CMD_STATE_LOGGING_FAILED; hasStatus = true; @@ -1934,6 +1937,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm } case CMD_SET_VR_CAMERA_STATE: { + BT_PROFILE("CMD_SET_VR_CAMERA_STATE"); if (clientCmd.m_updateFlags & VR_CAMERA_ROOT_POSITION) { @@ -1960,6 +1964,8 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm } case CMD_REQUEST_VR_EVENTS_DATA: { + BT_PROFILE("CMD_REQUEST_VR_EVENTS_DATA"); + serverStatusOut.m_sendVREvents.m_numVRControllerEvents = 0; for (int i=0;im_keyboardEvents.size(); if (serverStatusOut.m_sendKeyboardEvents.m_numKeyboardEvents>MAX_KEYBOARD_EVENTS) { @@ -2016,6 +2024,8 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm case CMD_REQUEST_RAY_CAST_INTERSECTIONS: { + BT_PROFILE("CMD_REQUEST_RAY_CAST_INTERSECTIONS"); + btVector3 rayFromWorld(clientCmd.m_requestRaycastIntersections.m_rayFromPosition[0], clientCmd.m_requestRaycastIntersections.m_rayFromPosition[1], clientCmd.m_requestRaycastIntersections.m_rayFromPosition[2]); @@ -2075,6 +2085,8 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm }; case CMD_REQUEST_DEBUG_LINES: { + BT_PROFILE("CMD_REQUEST_DEBUG_LINES"); + int curFlags =m_data->m_remoteDebugDrawer->getDebugMode(); int debugMode = clientCmd.m_requestDebugLinesArguments.m_debugMode;//clientCmd.btIDebugDraw::DBG_DrawWireframe|btIDebugDraw::DBG_DrawAabb; @@ -2144,7 +2156,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm case CMD_REQUEST_CAMERA_IMAGE_DATA: { - + BT_PROFILE("CMD_REQUEST_CAMERA_IMAGE_DATA"); int startPixelIndex = clientCmd.m_requestPixelDataArguments.m_startPixelIndex; int width = clientCmd.m_requestPixelDataArguments.m_pixelWidth; int height = clientCmd.m_requestPixelDataArguments.m_pixelHeight; @@ -2273,6 +2285,8 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm case CMD_SYNC_BODY_INFO: { + BT_PROFILE("CMD_SYNC_BODY_INFO"); + int numHandles = m_data->getNumHandles(); int actualNumBodies = 0; for (int i=0;im_verboseOutput) { @@ -2581,7 +2601,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm } case CMD_LOAD_URDF: { - + BT_PROFILE("CMD_LOAD_URDF"); const UrdfArgs& urdfArgs = clientCmd.m_urdfArguments; if (m_data->m_verboseOutput) { @@ -2686,6 +2706,8 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm } case CMD_CREATE_SENSOR: { + BT_PROFILE("CMD_CREATE_SENSOR"); + if (m_data->m_verboseOutput) { b3Printf("Processed CMD_CREATE_SENSOR"); @@ -2754,6 +2776,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm } case CMD_SEND_DESIRED_STATE: { + BT_PROFILE("CMD_SEND_DESIRED_STATE"); if (m_data->m_verboseOutput) { b3Printf("Processed CMD_SEND_DESIRED_STATE"); @@ -2946,6 +2969,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm } case CMD_REQUEST_ACTUAL_STATE: { + BT_PROFILE("CMD_REQUEST_ACTUAL_STATE"); if (m_data->m_verboseOutput) { b3Printf("Sending the actual state (Q,U)"); @@ -3019,6 +3043,20 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm serverCmd.m_sendActualStateArgs.m_actualStateQdot[5] = mb->getBaseOmega()[2]; totalDegreeOfFreedomU += 6;//3 linear and 3 angular DOF } + + btAlignedObjectArray omega; + btAlignedObjectArray linVel; + + bool computeLinkVelocities = ((clientCmd.m_updateFlags & ACTUAL_STATE_COMPUTE_LINKVELOCITY)!=0); + if (computeLinkVelocities) + { + omega.resize(mb->getNumLinks()+1); + linVel.resize(mb->getNumLinks()+1); + { + B3_PROFILE("compTreeLinkVelocities"); + mb->compTreeLinkVelocities(&omega[0], &linVel[0]); + } + } for (int l=0;lgetNumLinks();l++) { for (int d=0;dgetLink(l).m_posVarCount;d++) @@ -3068,28 +3106,46 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm //} } } - btVector3 linkLocalInertialOrigin = body->m_linkLocalInertialFrames[l].getOrigin(); - btQuaternion linkLocalInertialRotation = body->m_linkLocalInertialFrames[l].getRotation(); + btVector3 linkLocalInertialOrigin = body->m_linkLocalInertialFrames[l].getOrigin(); + btQuaternion linkLocalInertialRotation = body->m_linkLocalInertialFrames[l].getRotation(); - btVector3 linkCOMOrigin = mb->getLink(l).m_cachedWorldTransform.getOrigin(); - btQuaternion linkCOMRotation = mb->getLink(l).m_cachedWorldTransform.getRotation(); + btVector3 linkCOMOrigin = mb->getLink(l).m_cachedWorldTransform.getOrigin(); + btQuaternion linkCOMRotation = mb->getLink(l).m_cachedWorldTransform.getRotation(); - serverCmd.m_sendActualStateArgs.m_linkState[l*7+0] = linkCOMOrigin.getX(); - serverCmd.m_sendActualStateArgs.m_linkState[l*7+1] = linkCOMOrigin.getY(); - serverCmd.m_sendActualStateArgs.m_linkState[l*7+2] = linkCOMOrigin.getZ(); - serverCmd.m_sendActualStateArgs.m_linkState[l*7+3] = linkCOMRotation.x(); - serverCmd.m_sendActualStateArgs.m_linkState[l*7+4] = linkCOMRotation.y(); - serverCmd.m_sendActualStateArgs.m_linkState[l*7+5] = linkCOMRotation.z(); - serverCmd.m_sendActualStateArgs.m_linkState[l*7+6] = linkCOMRotation.w(); + serverCmd.m_sendActualStateArgs.m_linkState[l*7+0] = linkCOMOrigin.getX(); + serverCmd.m_sendActualStateArgs.m_linkState[l*7+1] = linkCOMOrigin.getY(); + serverCmd.m_sendActualStateArgs.m_linkState[l*7+2] = linkCOMOrigin.getZ(); + serverCmd.m_sendActualStateArgs.m_linkState[l*7+3] = linkCOMRotation.x(); + serverCmd.m_sendActualStateArgs.m_linkState[l*7+4] = linkCOMRotation.y(); + serverCmd.m_sendActualStateArgs.m_linkState[l*7+5] = linkCOMRotation.z(); + serverCmd.m_sendActualStateArgs.m_linkState[l*7+6] = linkCOMRotation.w(); - serverCmd.m_sendActualStateArgs.m_linkLocalInertialFrames[l*7+0] = linkLocalInertialOrigin.getX(); - serverCmd.m_sendActualStateArgs.m_linkLocalInertialFrames[l*7+1] = linkLocalInertialOrigin.getY(); - serverCmd.m_sendActualStateArgs.m_linkLocalInertialFrames[l*7+2] = linkLocalInertialOrigin.getZ(); - serverCmd.m_sendActualStateArgs.m_linkLocalInertialFrames[l*7+3] = linkLocalInertialRotation.x(); - serverCmd.m_sendActualStateArgs.m_linkLocalInertialFrames[l*7+4] = linkLocalInertialRotation.y(); - serverCmd.m_sendActualStateArgs.m_linkLocalInertialFrames[l*7+5] = linkLocalInertialRotation.z(); - serverCmd.m_sendActualStateArgs.m_linkLocalInertialFrames[l*7+6] = linkLocalInertialRotation.w(); + btVector3 worldLinVel(0,0,0); + btVector3 worldAngVel(0,0,0); + + if (computeLinkVelocities) + { + const btMatrix3x3& linkRotMat = mb->getLink(l).m_cachedWorldTransform.getBasis(); + worldLinVel = linkRotMat * linVel[l+1]; + worldAngVel = linkRotMat * omega[l+1]; + } + + serverCmd.m_sendActualStateArgs.m_linkWorldVelocities[l*6+0] = worldLinVel[0]; + serverCmd.m_sendActualStateArgs.m_linkWorldVelocities[l*6+1] = worldLinVel[1]; + serverCmd.m_sendActualStateArgs.m_linkWorldVelocities[l*6+2] = worldLinVel[2]; + serverCmd.m_sendActualStateArgs.m_linkWorldVelocities[l*6+3] = worldAngVel[0]; + serverCmd.m_sendActualStateArgs.m_linkWorldVelocities[l*6+4] = worldAngVel[1]; + serverCmd.m_sendActualStateArgs.m_linkWorldVelocities[l*6+5] = worldAngVel[2]; + + serverCmd.m_sendActualStateArgs.m_linkLocalInertialFrames[l*7+0] = linkLocalInertialOrigin.getX(); + serverCmd.m_sendActualStateArgs.m_linkLocalInertialFrames[l*7+1] = linkLocalInertialOrigin.getY(); + serverCmd.m_sendActualStateArgs.m_linkLocalInertialFrames[l*7+2] = linkLocalInertialOrigin.getZ(); + + serverCmd.m_sendActualStateArgs.m_linkLocalInertialFrames[l*7+3] = linkLocalInertialRotation.x(); + serverCmd.m_sendActualStateArgs.m_linkLocalInertialFrames[l*7+4] = linkLocalInertialRotation.y(); + serverCmd.m_sendActualStateArgs.m_linkLocalInertialFrames[l*7+5] = linkLocalInertialRotation.z(); + serverCmd.m_sendActualStateArgs.m_linkLocalInertialFrames[l*7+6] = linkLocalInertialRotation.w(); } @@ -3152,6 +3208,8 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm } case CMD_STEP_FORWARD_SIMULATION: { + BT_PROFILE("CMD_STEP_FORWARD_SIMULATION"); + if (m_data->m_verboseOutput) { @@ -3186,6 +3244,8 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm case CMD_REQUEST_INTERNAL_DATA: { + BT_PROFILE("CMD_REQUEST_INTERNAL_DATA"); + //todo: also check version etc? SharedMemoryStatus& serverCmd = serverStatusOut; @@ -3208,6 +3268,8 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm }; case CMD_SEND_PHYSICS_SIMULATION_PARAMETERS: { + BT_PROFILE("CMD_SEND_PHYSICS_SIMULATION_PARAMETERS"); + if (clientCmd.m_updateFlags&SIM_PARAM_UPDATE_DELTA_TIME) { m_data->m_physicsDeltaTime = clientCmd.m_physSimParamArgs.m_deltaTime; @@ -3283,6 +3345,8 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm }; case CMD_INIT_POSE: { + BT_PROFILE("CMD_INIT_POSE"); + if (m_data->m_verboseOutput) { b3Printf("Server Init Pose not implemented yet"); @@ -3431,7 +3495,8 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm case CMD_RESET_SIMULATION: { - + BT_PROFILE("CMD_RESET_SIMULATION"); + resetSimulation(); SharedMemoryStatus& serverCmd =serverStatusOut; @@ -3442,6 +3507,8 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm case CMD_CREATE_RIGID_BODY: case CMD_CREATE_BOX_COLLISION_SHAPE: { + BT_PROFILE("CMD_CREATE_RIGID_BODY"); + btVector3 halfExtents(1,1,1); if (clientCmd.m_updateFlags & BOX_SHAPE_HAS_HALF_EXTENTS) { @@ -3576,6 +3643,8 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm } case CMD_PICK_BODY: { + BT_PROFILE("CMD_PICK_BODY"); + pickBody(btVector3(clientCmd.m_pickBodyArguments.m_rayFromWorld[0], clientCmd.m_pickBodyArguments.m_rayFromWorld[1], clientCmd.m_pickBodyArguments.m_rayFromWorld[2]), @@ -3591,6 +3660,8 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm } case CMD_MOVE_PICKED_BODY: { + BT_PROFILE("CMD_MOVE_PICKED_BODY"); + movePickedBody(btVector3(clientCmd.m_pickBodyArguments.m_rayFromWorld[0], clientCmd.m_pickBodyArguments.m_rayFromWorld[1], clientCmd.m_pickBodyArguments.m_rayFromWorld[2]), @@ -3605,6 +3676,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm } case CMD_REMOVE_PICKING_CONSTRAINT_BODY: { + BT_PROFILE("CMD_REMOVE_PICKING_CONSTRAINT_BODY"); removePickingConstraint(); SharedMemoryStatus& serverCmd =serverStatusOut; @@ -3614,6 +3686,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm } case CMD_REQUEST_AABB_OVERLAP: { + BT_PROFILE("CMD_REQUEST_AABB_OVERLAP"); SharedMemoryStatus& serverCmd = serverStatusOut; int curObjectIndex = clientCmd.m_requestOverlappingObjectsArgs.m_startingOverlappingObjectIndex; @@ -3671,6 +3744,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm case CMD_CONFIGURE_OPENGL_VISUALIZER: { + BT_PROFILE("CMD_CONFIGURE_OPENGL_VISUALIZER"); SharedMemoryStatus& serverCmd = serverStatusOut; serverCmd.m_type =CMD_CLIENT_COMMAND_COMPLETED; @@ -3694,6 +3768,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm case CMD_REQUEST_CONTACT_POINT_INFORMATION: { + BT_PROFILE("CMD_REQUEST_CONTACT_POINT_INFORMATION"); SharedMemoryStatus& serverCmd =serverStatusOut; serverCmd.m_sendContactPointArgs.m_numContactPointsCopied = 0; @@ -4004,6 +4079,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm } case CMD_CALCULATE_INVERSE_DYNAMICS: { + BT_PROFILE("CMD_CALCULATE_INVERSE_DYNAMICS"); SharedMemoryStatus& serverCmd = serverStatusOut; InternalBodyHandle* bodyHandle = m_data->getHandle(clientCmd.m_calculateInverseDynamicsArguments.m_bodyUniqueId); if (bodyHandle && bodyHandle->m_multiBody) @@ -4054,6 +4130,8 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm } case CMD_CALCULATE_JACOBIAN: { + BT_PROFILE("CMD_CALCULATE_JACOBIAN"); + SharedMemoryStatus& serverCmd = serverStatusOut; InternalBodyHandle* bodyHandle = m_data->getHandle(clientCmd.m_calculateJacobianArguments.m_bodyUniqueId); if (bodyHandle && bodyHandle->m_multiBody) @@ -4110,6 +4188,8 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm } case CMD_APPLY_EXTERNAL_FORCE: { + BT_PROFILE("CMD_APPLY_EXTERNAL_FORCE"); + if (m_data->m_verboseOutput) { b3Printf("CMD_APPLY_EXTERNAL_FORCE clientCmd = %d\n", clientCmd.m_sequenceNumber); @@ -4209,6 +4289,8 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm } case CMD_USER_CONSTRAINT: { + BT_PROFILE("CMD_USER_CONSTRAINT"); + SharedMemoryStatus& serverCmd =serverStatusOut; serverCmd.m_type = CMD_USER_CONSTRAINT_FAILED; hasStatus = true; @@ -4439,6 +4521,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm } case CMD_CALCULATE_INVERSE_KINEMATICS: { + BT_PROFILE("CMD_CALCULATE_INVERSE_KINEMATICS"); SharedMemoryStatus& serverCmd = serverStatusOut; serverCmd.m_type = CMD_CALCULATE_INVERSE_KINEMATICS_FAILED; @@ -4608,7 +4691,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm } case CMD_REQUEST_VISUAL_SHAPE_INFO: { - + BT_PROFILE("CMD_REQUEST_VISUAL_SHAPE_INFO"); SharedMemoryStatus& serverCmd = serverStatusOut; serverCmd.m_type = CMD_VISUAL_SHAPE_INFO_FAILED; //retrieve the visual shape information for a specific body @@ -4637,6 +4720,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm } case CMD_UPDATE_VISUAL_SHAPE: { + BT_PROFILE("CMD_UPDATE_VISUAL_SHAPE"); SharedMemoryStatus& serverCmd = serverStatusOut; serverCmd.m_type = CMD_VISUAL_SHAPE_UPDATE_FAILED; @@ -4649,6 +4733,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm } case CMD_LOAD_TEXTURE: { + BT_PROFILE("CMD_LOAD_TEXTURE"); SharedMemoryStatus& serverCmd = serverStatusOut; serverCmd.m_type = CMD_LOAD_TEXTURE_FAILED; @@ -4668,7 +4753,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm case CMD_LOAD_BULLET: { - + BT_PROFILE("CMD_LOAD_BULLET"); SharedMemoryStatus& serverCmd = serverStatusOut; btBulletWorldImporter* importer = new btBulletWorldImporter(m_data->m_dynamicsWorld); @@ -4739,6 +4824,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm case CMD_SAVE_BULLET: { + BT_PROFILE("CMD_SAVE_BULLET"); SharedMemoryStatus& serverCmd = serverStatusOut; FILE* f = fopen(clientCmd.m_fileArguments.m_fileName, "wb"); @@ -4758,6 +4844,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm case CMD_LOAD_MJCF: { + BT_PROFILE("CMD_LOAD_MJCF"); SharedMemoryStatus& serverCmd = serverStatusOut; serverCmd.m_type = CMD_MJCF_LOADING_FAILED; const MjcfArgs& mjcfArgs = clientCmd.m_mjcfArguments; @@ -4792,6 +4879,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm case CMD_USER_DEBUG_DRAW: { + BT_PROFILE("CMD_USER_DEBUG_DRAW"); SharedMemoryStatus& serverCmd = serverStatusOut; serverCmd.m_type = CMD_USER_DEBUG_DRAW_FAILED; hasStatus = true; @@ -4916,6 +5004,7 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm default: { + BT_PROFILE("CMD_UNKNOWN"); b3Error("Unknown command encountered"); SharedMemoryStatus& serverCmd =serverStatusOut; diff --git a/examples/SharedMemory/PhysicsServerExample.cpp b/examples/SharedMemory/PhysicsServerExample.cpp index 7ca002b8d..25252fd9d 100644 --- a/examples/SharedMemory/PhysicsServerExample.cpp +++ b/examples/SharedMemory/PhysicsServerExample.cpp @@ -23,7 +23,6 @@ #include "../CommonInterfaces/CommonParameterInterface.h" - //@todo(erwincoumans) those globals are hacks for a VR demo, move this to Python/pybullet! extern btVector3 gLastPickPos; @@ -309,27 +308,27 @@ void MotionThreadFunc(void* userPtr,void* lsMemory) do { - BT_PROFILE("loop"); - { - BT_PROFILE("usleep(0)"); b3Clock::usleep(0); } - if (gMaxNumCmdPer1ms>0) { - if (numCmdSinceSleep1ms>gMaxNumCmdPer1ms) + + if (gMaxNumCmdPer1ms>0) { - BT_PROFILE("usleep(10)"); - b3Clock::usleep(10); - numCmdSinceSleep1ms = 0; - sleepClock.reset(); + if (numCmdSinceSleep1ms>gMaxNumCmdPer1ms) + { + BT_PROFILE("usleep(10)"); + b3Clock::usleep(10); + numCmdSinceSleep1ms = 0; + sleepClock.reset(); + } + } + if (sleepClock.getTimeMilliseconds()>1) + { + sleepClock.reset(); + numCmdSinceSleep1ms = 0; } - } - if (sleepClock.getTimeMilliseconds()>1) - { - sleepClock.reset(); - numCmdSinceSleep1ms = 0; } unsigned long long int curTime = clock.getTimeMicroseconds(); @@ -344,7 +343,7 @@ void MotionThreadFunc(void* userPtr,void* lsMemory) deltaTimeInSeconds+= dt; { - + //process special controller commands, such as //VR controller button press/release and controller motion @@ -449,7 +448,6 @@ void MotionThreadFunc(void* userPtr,void* lsMemory) args->m_csGUI->unlock(); { - BT_PROFILE("stepSimulationRealTime"); args->m_physicsServerPtr->stepSimulationRealTime(deltaTimeInSeconds, args->m_sendVrControllerEvents,numSendVrControllers, keyEvents, args->m_sendKeyEvents.size()); } deltaTimeInSeconds = 0; @@ -487,7 +485,6 @@ void MotionThreadFunc(void* userPtr,void* lsMemory) args->m_csGUI->unlock(); { - BT_PROFILE("processClientCommands"); args->m_physicsServerPtr->processClientCommands(); numCmdSinceSleep1ms++; } diff --git a/examples/SharedMemory/PhysicsServerSharedMemory.cpp b/examples/SharedMemory/PhysicsServerSharedMemory.cpp index 70d173784..dde91f028 100644 --- a/examples/SharedMemory/PhysicsServerSharedMemory.cpp +++ b/examples/SharedMemory/PhysicsServerSharedMemory.cpp @@ -252,6 +252,7 @@ void PhysicsServerSharedMemory::processClientCommands() if (m_data->m_testBlocks[block]->m_numClientCommands> m_data->m_testBlocks[block]->m_numProcessedClientCommands) { + BT_PROFILE("processClientCommand"); //until we implement a proper ring buffer, we assume always maximum of 1 outstanding commands btAssert(m_data->m_testBlocks[block]->m_numClientCommands==m_data->m_testBlocks[block]->m_numProcessedClientCommands+1); diff --git a/examples/SharedMemory/SharedMemoryCommands.h b/examples/SharedMemory/SharedMemoryCommands.h index 0f413791f..fdc1aa709 100644 --- a/examples/SharedMemory/SharedMemoryCommands.h +++ b/examples/SharedMemory/SharedMemoryCommands.h @@ -383,6 +383,7 @@ struct SendActualStateArgs double m_jointMotorForce[MAX_DEGREE_OF_FREEDOM]; double m_linkState[7*MAX_NUM_LINKS]; + double m_linkWorldVelocities[6*MAX_NUM_LINKS];//linear velocity and angular velocity in world space (x/y/z each). double m_linkLocalInertialFrames[7*MAX_NUM_LINKS]; }; diff --git a/examples/SharedMemory/SharedMemoryInProcessPhysicsC_API.cpp b/examples/SharedMemory/SharedMemoryInProcessPhysicsC_API.cpp index f1a4b4966..476b33fb7 100644 --- a/examples/SharedMemory/SharedMemoryInProcessPhysicsC_API.cpp +++ b/examples/SharedMemory/SharedMemoryInProcessPhysicsC_API.cpp @@ -5,7 +5,7 @@ #include "PhysicsClientSharedMemory.h" #include"../ExampleBrowser/InProcessExampleBrowser.h" - +#include "Bullet3Common/b3Logging.h" class InProcessPhysicsClientSharedMemoryMainThread : public PhysicsClientSharedMemory { btInProcessExampleBrowserMainThreadInternalData* m_data; @@ -39,18 +39,33 @@ public: // return non-null if there is a status, nullptr otherwise virtual const struct SharedMemoryStatus* processServerStatus() { - if (btIsExampleBrowserMainThreadTerminated(m_data)) - { - PhysicsClientSharedMemory::disconnectSharedMemory(); - } - unsigned long int ms = m_clock.getTimeMilliseconds(); - if (ms>20) - { - m_clock.reset(); - btUpdateInProcessExampleBrowserMainThread(m_data); + + { + if (btIsExampleBrowserMainThreadTerminated(m_data)) + { + PhysicsClientSharedMemory::disconnectSharedMemory(); + } } - b3Clock::usleep(0); - return PhysicsClientSharedMemory::processServerStatus(); + { + unsigned long int ms = m_clock.getTimeMilliseconds(); + if (ms>20) + { + B3_PROFILE("m_clock.reset()"); + + m_clock.reset(); + btUpdateInProcessExampleBrowserMainThread(m_data); + } + } + { + b3Clock::usleep(0); + } + const SharedMemoryStatus* stat = 0; + + { + stat = PhysicsClientSharedMemory::processServerStatus(); + } + + return stat; } diff --git a/examples/SharedMemory/SharedMemoryPublic.h b/examples/SharedMemory/SharedMemoryPublic.h index 6421a37e0..6587747d4 100644 --- a/examples/SharedMemory/SharedMemoryPublic.h +++ b/examples/SharedMemory/SharedMemoryPublic.h @@ -4,7 +4,7 @@ #define SHARED_MEMORY_KEY 12347 ///increase the SHARED_MEMORY_MAGIC_NUMBER whenever incompatible changes are made in the structures ///my convention is year/month/day/rev -#define SHARED_MEMORY_MAGIC_NUMBER 201703010 +#define SHARED_MEMORY_MAGIC_NUMBER 201703024 enum EnumSharedMemoryClientCommand { @@ -174,10 +174,14 @@ struct b3JointInfo int m_jointIndex; int m_flags; double m_jointDamping; - double m_jointFriction; - double m_parentFrame[7]; // position and orientation (quaternion) - double m_childFrame[7]; // ^^^ - double m_jointAxis[3]; // joint axis in parent local frame + double m_jointFriction1; + double m_jointLowerLimit; + double m_jointUpperLimit; + double m_jointMaxForce; + double m_jointMaxVelocity; + double m_parentFrame[7]; // position and orientation (quaternion) + double m_childFrame[7]; // ^^^ + double m_jointAxis[3]; // joint axis in parent local frame }; struct b3UserConstraint @@ -377,6 +381,11 @@ struct b3VisualShapeInformation struct b3VisualShapeData* m_visualShapeData; }; +enum eLinkStateFlags +{ + ACTUAL_STATE_COMPUTE_LINKVELOCITY=1 +}; + ///b3LinkState provides extra information such as the Cartesian world coordinates ///center of mass (COM) of the link, relative to the world reference frame. ///Orientation is a quaternion x,y,z,w @@ -394,6 +403,10 @@ struct b3LinkState ///world position and orientation of the (URDF) link frame double m_worldLinkFramePosition[3]; double m_worldLinkFrameOrientation[4]; + + double m_worldLinearVelocity[3]; //only valid when ACTUAL_STATE_COMPUTE_LINKVELOCITY is set (b3RequestActualStateCommandComputeLinkVelocity) + double m_worldAngularVelocity[3]; //only valid when ACTUAL_STATE_COMPUTE_LINKVELOCITY is set (b3RequestActualStateCommandComputeLinkVelocity) + }; //todo: discuss and decide about control mode and combinations diff --git a/examples/pybullet/pybullet.c b/examples/pybullet/pybullet.c index b3b462d90..ddf444d6e 100644 --- a/examples/pybullet/pybullet.c +++ b/examples/pybullet/pybullet.c @@ -2075,7 +2075,7 @@ static PyObject* pybullet_getJointInfo(PyObject* self, PyObject* args, PyObject* int bodyUniqueId = -1; int jointIndex = -1; - int jointInfoSize = 8; // size of struct b3JointInfo + int jointInfoSize = 12; // size of struct b3JointInfo b3PhysicsClientHandle sm = 0; int physicsClientId = 0; static char* kwlist[] = {"bodyUniqueId", "jointIndex", "physicsClientId", NULL}; @@ -2118,7 +2118,16 @@ static PyObject* pybullet_getJointInfo(PyObject* self, PyObject* args, PyObject* PyTuple_SetItem(pyListJointInfo, 6, PyFloat_FromDouble(info.m_jointDamping)); PyTuple_SetItem(pyListJointInfo, 7, - PyFloat_FromDouble(info.m_jointFriction)); + PyFloat_FromDouble(info.m_jointFriction1)); + PyTuple_SetItem(pyListJointInfo, 8, + PyFloat_FromDouble(info.m_jointLowerLimit)); + PyTuple_SetItem(pyListJointInfo, 9, + PyFloat_FromDouble(info.m_jointUpperLimit)); + PyTuple_SetItem(pyListJointInfo, 10, + PyFloat_FromDouble(info.m_jointMaxForce)); + PyTuple_SetItem(pyListJointInfo, 11, + PyFloat_FromDouble(info.m_jointMaxVelocity)); + return pyListJointInfo; } else @@ -2246,17 +2255,21 @@ static PyObject* pybullet_getLinkState(PyObject* self, PyObject* args, PyObject* PyObject* pyLinkStateLocalInertialOrientation; PyObject* pyLinkStateWorldLinkFramePosition; PyObject* pyLinkStateWorldLinkFrameOrientation; + PyObject* pyLinkStateWorldLinkLinearVelocity; + PyObject* pyLinkStateWorldLinkAngularVelocity; struct b3LinkState linkState; int bodyUniqueId = -1; int linkIndex = -1; + int computeLinkVelocity = 0; + int i; b3PhysicsClientHandle sm = 0; int physicsClientId = 0; - static char* kwlist[] = {"bodyUniqueId", "linkIndex", "physicsClientId", NULL}; - if (!PyArg_ParseTupleAndKeywords(args, keywds, "ii|i", kwlist, &bodyUniqueId, &linkIndex, &physicsClientId)) + static char* kwlist[] = {"bodyUniqueId", "linkIndex", "computeLinkVelocity", "physicsClientId", NULL}; + if (!PyArg_ParseTupleAndKeywords(args, keywds, "ii|ii", kwlist, &bodyUniqueId, &linkIndex,&computeLinkVelocity, &physicsClientId)) { return NULL; } @@ -2286,6 +2299,12 @@ static PyObject* pybullet_getLinkState(PyObject* self, PyObject* args, PyObject* cmd_handle = b3RequestActualStateCommandInit(sm, bodyUniqueId); + + if (computeLinkVelocity) + { + b3RequestActualStateCommandComputeLinkVelocity(cmd_handle,computeLinkVelocity); + } + status_handle = b3SubmitClientCommandAndWaitStatus(sm, cmd_handle); @@ -2340,7 +2359,16 @@ static PyObject* pybullet_getLinkState(PyObject* self, PyObject* args, PyObject* PyFloat_FromDouble(linkState.m_worldLinkFrameOrientation[i])); } - pyLinkState = PyTuple_New(6); + + + if (computeLinkVelocity) + { + pyLinkState = PyTuple_New(8); + } else + { + pyLinkState = PyTuple_New(6); + } + PyTuple_SetItem(pyLinkState, 0, pyLinkStateWorldPosition); PyTuple_SetItem(pyLinkState, 1, pyLinkStateWorldOrientation); PyTuple_SetItem(pyLinkState, 2, pyLinkStateLocalInertialPosition); @@ -2348,6 +2376,20 @@ static PyObject* pybullet_getLinkState(PyObject* self, PyObject* args, PyObject* PyTuple_SetItem(pyLinkState, 4, pyLinkStateWorldLinkFramePosition); PyTuple_SetItem(pyLinkState, 5, pyLinkStateWorldLinkFrameOrientation); + if (computeLinkVelocity) + { + pyLinkStateWorldLinkLinearVelocity = PyTuple_New(3); + pyLinkStateWorldLinkAngularVelocity = PyTuple_New(3); + for (i = 0; i < 3; ++i) + { + PyTuple_SetItem(pyLinkStateWorldLinkLinearVelocity, i, + PyFloat_FromDouble(linkState.m_worldLinearVelocity[i])); + PyTuple_SetItem(pyLinkStateWorldLinkAngularVelocity, i, + PyFloat_FromDouble(linkState.m_worldAngularVelocity[i])); + } + PyTuple_SetItem(pyLinkState, 6, pyLinkStateWorldLinkLinearVelocity); + PyTuple_SetItem(pyLinkState, 7, pyLinkStateWorldLinkAngularVelocity); + } return pyLinkState; } } diff --git a/src/BulletDynamics/Featherstone/btMultiBody.cpp b/src/BulletDynamics/Featherstone/btMultiBody.cpp index c14aa2aea..6fcca2dd9 100644 --- a/src/BulletDynamics/Featherstone/btMultiBody.cpp +++ b/src/BulletDynamics/Featherstone/btMultiBody.cpp @@ -1965,6 +1965,10 @@ const char* btMultiBody::serialize(void* dataBuffer, class btSerializer* seriali memPtr->m_parentIndex = getLink(i).m_parent; memPtr->m_jointDamping = getLink(i).m_jointDamping; memPtr->m_jointFriction = getLink(i).m_jointFriction; + memPtr->m_jointLowerLimit = getLink(i).m_jointLowerLimit; + memPtr->m_jointUpperLimit = getLink(i).m_jointUpperLimit; + memPtr->m_jointMaxForce = getLink(i).m_jointMaxForce; + memPtr->m_jointMaxVelocity = getLink(i).m_jointMaxVelocity; getLink(i).m_eVector.serialize(memPtr->m_parentComToThisComOffset); getLink(i).m_dVector.serialize(memPtr->m_thisPivotToThisComOffset); diff --git a/src/BulletDynamics/Featherstone/btMultiBody.h b/src/BulletDynamics/Featherstone/btMultiBody.h index b36d0e4e8..ea5e90521 100644 --- a/src/BulletDynamics/Featherstone/btMultiBody.h +++ b/src/BulletDynamics/Featherstone/btMultiBody.h @@ -728,7 +728,11 @@ struct btMultiBodyLinkDoubleData double m_jointDamping; double m_jointFriction; - + double m_jointLowerLimit; + double m_jointUpperLimit; + double m_jointMaxForce; + double m_jointMaxVelocity; + char *m_linkName; char *m_jointName; btCollisionObjectDoubleData *m_linkCollider; @@ -757,7 +761,11 @@ struct btMultiBodyLinkFloatData int m_posVarCount; float m_jointDamping; float m_jointFriction; - + float m_jointLowerLimit; + float m_jointUpperLimit; + float m_jointMaxForce; + float m_jointMaxVelocity; + char *m_linkName; char *m_jointName; btCollisionObjectFloatData *m_linkCollider; diff --git a/src/BulletDynamics/Featherstone/btMultiBodyLink.h b/src/BulletDynamics/Featherstone/btMultiBodyLink.h index 8b9036303..2734bf4bd 100644 --- a/src/BulletDynamics/Featherstone/btMultiBodyLink.h +++ b/src/BulletDynamics/Featherstone/btMultiBodyLink.h @@ -136,7 +136,11 @@ btVector3 m_appliedConstraintForce; // In WORLD frame btScalar m_jointDamping; //todo: implement this internally. It is unused for now, it is set by a URDF loader. User can apply manual damping. btScalar m_jointFriction; //todo: implement this internally. It is unused for now, it is set by a URDF loader. User can apply manual friction using a velocity motor. - + btScalar m_jointLowerLimit; //todo: implement this internally. It is unused for now, it is set by a URDF loader. + btScalar m_jointUpperLimit; //todo: implement this internally. It is unused for now, it is set by a URDF loader. + btScalar m_jointMaxForce; //todo: implement this internally. It is unused for now, it is set by a URDF loader. + btScalar m_jointMaxVelocity;//todo: implement this internally. It is unused for now, it is set by a URDF loader. + // ctor: set some sensible defaults btMultibodyLink() : m_mass(1), @@ -153,7 +157,11 @@ btVector3 m_appliedConstraintForce; // In WORLD frame m_jointName(0), m_userPtr(0), m_jointDamping(0), - m_jointFriction(0) + m_jointFriction(0), + m_jointLowerLimit(0), + m_jointUpperLimit(0), + m_jointMaxForce(0), + m_jointMaxVelocity(0) { m_inertiaLocal.setValue(1, 1, 1); diff --git a/src/LinearMath/CMakeLists.txt b/src/LinearMath/CMakeLists.txt index 9c1980442..ede21d9a7 100644 --- a/src/LinearMath/CMakeLists.txt +++ b/src/LinearMath/CMakeLists.txt @@ -11,6 +11,7 @@ SET(LinearMath_SRCS btPolarDecomposition.cpp btQuickprof.cpp btSerializer.cpp + btSerializer64.cpp btThreads.cpp btVector3.cpp ) diff --git a/src/LinearMath/btScalar.h b/src/LinearMath/btScalar.h index 054652255..de9fddd3f 100644 --- a/src/LinearMath/btScalar.h +++ b/src/LinearMath/btScalar.h @@ -25,7 +25,7 @@ subject to the following restrictions: #include /* SVN $Revision$ on $Date$ from http://bullet.googlecode.com*/ -#define BT_BULLET_VERSION 286 +#define BT_BULLET_VERSION 287 inline int btGetVersion() { diff --git a/src/LinearMath/btSerializer.cpp b/src/LinearMath/btSerializer.cpp index 2b5740b40..fcd2255ad 100644 --- a/src/LinearMath/btSerializer.cpp +++ b/src/LinearMath/btSerializer.cpp @@ -1,5 +1,5 @@ char sBulletDNAstr[]= { -char(83),char(68),char(78),char(65),char(78),char(65),char(77),char(69),char(-128),char(1),char(0),char(0),char(109),char(95),char(115),char(105),char(122),char(101),char(0),char(109), +char(83),char(68),char(78),char(65),char(78),char(65),char(77),char(69),char(-124),char(1),char(0),char(0),char(109),char(95),char(115),char(105),char(122),char(101),char(0),char(109), char(95),char(99),char(97),char(112),char(97),char(99),char(105),char(116),char(121),char(0),char(42),char(109),char(95),char(100),char(97),char(116),char(97),char(0),char(109),char(95), char(99),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(83),char(104),char(97),char(112),char(101),char(115),char(0),char(109),char(95),char(99),char(111), char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(79),char(98),char(106),char(101),char(99),char(116),char(115),char(0),char(109),char(95),char(99),char(111),char(110), @@ -306,884 +306,294 @@ char(117),char(110),char(116),char(0),char(109),char(95),char(106),char(111),cha char(106),char(111),char(105),char(110),char(116),char(86),char(101),char(108),char(91),char(54),char(93),char(0),char(109),char(95),char(106),char(111),char(105),char(110),char(116),char(84), char(111),char(114),char(113),char(117),char(101),char(91),char(54),char(93),char(0),char(109),char(95),char(106),char(111),char(105),char(110),char(116),char(68),char(97),char(109),char(112), char(105),char(110),char(103),char(0),char(109),char(95),char(106),char(111),char(105),char(110),char(116),char(70),char(114),char(105),char(99),char(116),char(105),char(111),char(110),char(0), -char(42),char(109),char(95),char(108),char(105),char(110),char(107),char(78),char(97),char(109),char(101),char(0),char(42),char(109),char(95),char(106),char(111),char(105),char(110),char(116), -char(78),char(97),char(109),char(101),char(0),char(42),char(109),char(95),char(108),char(105),char(110),char(107),char(67),char(111),char(108),char(108),char(105),char(100),char(101),char(114), -char(0),char(42),char(109),char(95),char(112),char(97),char(100),char(100),char(105),char(110),char(103),char(80),char(116),char(114),char(0),char(109),char(95),char(98),char(97),char(115), -char(101),char(87),char(111),char(114),char(108),char(100),char(84),char(114),char(97),char(110),char(115),char(102),char(111),char(114),char(109),char(0),char(109),char(95),char(98),char(97), -char(115),char(101),char(73),char(110),char(101),char(114),char(116),char(105),char(97),char(0),char(109),char(95),char(98),char(97),char(115),char(101),char(77),char(97),char(115),char(115), -char(0),char(42),char(109),char(95),char(98),char(97),char(115),char(101),char(78),char(97),char(109),char(101),char(0),char(42),char(109),char(95),char(98),char(97),char(115),char(101), -char(67),char(111),char(108),char(108),char(105),char(100),char(101),char(114),char(0),char(0),char(0),char(0),char(84),char(89),char(80),char(69),char(95),char(0),char(0),char(0), -char(99),char(104),char(97),char(114),char(0),char(117),char(99),char(104),char(97),char(114),char(0),char(115),char(104),char(111),char(114),char(116),char(0),char(117),char(115),char(104), -char(111),char(114),char(116),char(0),char(105),char(110),char(116),char(0),char(108),char(111),char(110),char(103),char(0),char(117),char(108),char(111),char(110),char(103),char(0),char(102), -char(108),char(111),char(97),char(116),char(0),char(100),char(111),char(117),char(98),char(108),char(101),char(0),char(118),char(111),char(105),char(100),char(0),char(80),char(111),char(105), -char(110),char(116),char(101),char(114),char(65),char(114),char(114),char(97),char(121),char(0),char(98),char(116),char(80),char(104),char(121),char(115),char(105),char(99),char(115),char(83), -char(121),char(115),char(116),char(101),char(109),char(0),char(76),char(105),char(115),char(116),char(66),char(97),char(115),char(101),char(0),char(98),char(116),char(86),char(101),char(99), -char(116),char(111),char(114),char(51),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(86),char(101),char(99),char(116), -char(111),char(114),char(51),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(81),char(117),char(97),char(116), -char(101),char(114),char(110),char(105),char(111),char(110),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(81),char(117), -char(97),char(116),char(101),char(114),char(110),char(105),char(111),char(110),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98), -char(116),char(77),char(97),char(116),char(114),char(105),char(120),char(51),char(120),char(51),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0), -char(98),char(116),char(77),char(97),char(116),char(114),char(105),char(120),char(51),char(120),char(51),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116), -char(97),char(0),char(98),char(116),char(84),char(114),char(97),char(110),char(115),char(102),char(111),char(114),char(109),char(70),char(108),char(111),char(97),char(116),char(68),char(97), -char(116),char(97),char(0),char(98),char(116),char(84),char(114),char(97),char(110),char(115),char(102),char(111),char(114),char(109),char(68),char(111),char(117),char(98),char(108),char(101), -char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(66),char(118),char(104),char(83),char(117),char(98),char(116),char(114),char(101),char(101),char(73),char(110),char(102), -char(111),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(79),char(112),char(116),char(105),char(109),char(105),char(122),char(101),char(100),char(66),char(118),char(104), -char(78),char(111),char(100),char(101),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(79),char(112),char(116),char(105), -char(109),char(105),char(122),char(101),char(100),char(66),char(118),char(104),char(78),char(111),char(100),char(101),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97), -char(116),char(97),char(0),char(98),char(116),char(81),char(117),char(97),char(110),char(116),char(105),char(122),char(101),char(100),char(66),char(118),char(104),char(78),char(111),char(100), -char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(81),char(117),char(97),char(110),char(116),char(105),char(122),char(101),char(100),char(66),char(118),char(104), -char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(81),char(117),char(97),char(110),char(116),char(105),char(122),char(101), -char(100),char(66),char(118),char(104),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(108), -char(108),char(105),char(115),char(105),char(111),char(110),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(83),char(116), -char(97),char(116),char(105),char(99),char(80),char(108),char(97),char(110),char(101),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98), -char(116),char(67),char(111),char(110),char(118),char(101),char(120),char(73),char(110),char(116),char(101),char(114),char(110),char(97),char(108),char(83),char(104),char(97),char(112),char(101), -char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(80),char(111),char(115),char(105),char(116),char(105),char(111),char(110),char(65),char(110),char(100),char(82),char(97), -char(100),char(105),char(117),char(115),char(0),char(98),char(116),char(77),char(117),char(108),char(116),char(105),char(83),char(112),char(104),char(101),char(114),char(101),char(83),char(104), -char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(73),char(110),char(116),char(73),char(110),char(100),char(101),char(120),char(68),char(97), -char(116),char(97),char(0),char(98),char(116),char(83),char(104),char(111),char(114),char(116),char(73),char(110),char(116),char(73),char(110),char(100),char(101),char(120),char(68),char(97), -char(116),char(97),char(0),char(98),char(116),char(83),char(104),char(111),char(114),char(116),char(73),char(110),char(116),char(73),char(110),char(100),char(101),char(120),char(84),char(114), -char(105),char(112),char(108),char(101),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(104),char(97),char(114),char(73),char(110),char(100),char(101), -char(120),char(84),char(114),char(105),char(112),char(108),char(101),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(77),char(101),char(115),char(104),char(80), -char(97),char(114),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(83),char(116),char(114),char(105),char(100),char(105),char(110),char(103),char(77),char(101), -char(115),char(104),char(73),char(110),char(116),char(101),char(114),char(102),char(97),char(99),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(84),char(114), +char(109),char(95),char(106),char(111),char(105),char(110),char(116),char(76),char(111),char(119),char(101),char(114),char(76),char(105),char(109),char(105),char(116),char(0),char(109),char(95), +char(106),char(111),char(105),char(110),char(116),char(85),char(112),char(112),char(101),char(114),char(76),char(105),char(109),char(105),char(116),char(0),char(109),char(95),char(106),char(111), +char(105),char(110),char(116),char(77),char(97),char(120),char(70),char(111),char(114),char(99),char(101),char(0),char(109),char(95),char(106),char(111),char(105),char(110),char(116),char(77), +char(97),char(120),char(86),char(101),char(108),char(111),char(99),char(105),char(116),char(121),char(0),char(42),char(109),char(95),char(108),char(105),char(110),char(107),char(78),char(97), +char(109),char(101),char(0),char(42),char(109),char(95),char(106),char(111),char(105),char(110),char(116),char(78),char(97),char(109),char(101),char(0),char(42),char(109),char(95),char(108), +char(105),char(110),char(107),char(67),char(111),char(108),char(108),char(105),char(100),char(101),char(114),char(0),char(42),char(109),char(95),char(112),char(97),char(100),char(100),char(105), +char(110),char(103),char(80),char(116),char(114),char(0),char(109),char(95),char(98),char(97),char(115),char(101),char(87),char(111),char(114),char(108),char(100),char(84),char(114),char(97), +char(110),char(115),char(102),char(111),char(114),char(109),char(0),char(109),char(95),char(98),char(97),char(115),char(101),char(73),char(110),char(101),char(114),char(116),char(105),char(97), +char(0),char(109),char(95),char(98),char(97),char(115),char(101),char(77),char(97),char(115),char(115),char(0),char(42),char(109),char(95),char(98),char(97),char(115),char(101),char(78), +char(97),char(109),char(101),char(0),char(42),char(109),char(95),char(98),char(97),char(115),char(101),char(67),char(111),char(108),char(108),char(105),char(100),char(101),char(114),char(0), +char(84),char(89),char(80),char(69),char(95),char(0),char(0),char(0),char(99),char(104),char(97),char(114),char(0),char(117),char(99),char(104),char(97),char(114),char(0),char(115), +char(104),char(111),char(114),char(116),char(0),char(117),char(115),char(104),char(111),char(114),char(116),char(0),char(105),char(110),char(116),char(0),char(108),char(111),char(110),char(103), +char(0),char(117),char(108),char(111),char(110),char(103),char(0),char(102),char(108),char(111),char(97),char(116),char(0),char(100),char(111),char(117),char(98),char(108),char(101),char(0), +char(118),char(111),char(105),char(100),char(0),char(80),char(111),char(105),char(110),char(116),char(101),char(114),char(65),char(114),char(114),char(97),char(121),char(0),char(98),char(116), +char(80),char(104),char(121),char(115),char(105),char(99),char(115),char(83),char(121),char(115),char(116),char(101),char(109),char(0),char(76),char(105),char(115),char(116),char(66),char(97), +char(115),char(101),char(0),char(98),char(116),char(86),char(101),char(99),char(116),char(111),char(114),char(51),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116), +char(97),char(0),char(98),char(116),char(86),char(101),char(99),char(116),char(111),char(114),char(51),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116), +char(97),char(0),char(98),char(116),char(81),char(117),char(97),char(116),char(101),char(114),char(110),char(105),char(111),char(110),char(70),char(108),char(111),char(97),char(116),char(68), +char(97),char(116),char(97),char(0),char(98),char(116),char(81),char(117),char(97),char(116),char(101),char(114),char(110),char(105),char(111),char(110),char(68),char(111),char(117),char(98), +char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(77),char(97),char(116),char(114),char(105),char(120),char(51),char(120),char(51),char(70),char(108), +char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(77),char(97),char(116),char(114),char(105),char(120),char(51),char(120),char(51),char(68), +char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(84),char(114),char(97),char(110),char(115),char(102),char(111),char(114), +char(109),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(84),char(114),char(97),char(110),char(115),char(102),char(111), +char(114),char(109),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(66),char(118),char(104),char(83),char(117), +char(98),char(116),char(114),char(101),char(101),char(73),char(110),char(102),char(111),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(79),char(112),char(116),char(105), +char(109),char(105),char(122),char(101),char(100),char(66),char(118),char(104),char(78),char(111),char(100),char(101),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116), +char(97),char(0),char(98),char(116),char(79),char(112),char(116),char(105),char(109),char(105),char(122),char(101),char(100),char(66),char(118),char(104),char(78),char(111),char(100),char(101), +char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(81),char(117),char(97),char(110),char(116),char(105),char(122), +char(101),char(100),char(66),char(118),char(104),char(78),char(111),char(100),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(81),char(117),char(97),char(110), +char(116),char(105),char(122),char(101),char(100),char(66),char(118),char(104),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116), +char(81),char(117),char(97),char(110),char(116),char(105),char(122),char(101),char(100),char(66),char(118),char(104),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97), +char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(83),char(104),char(97),char(112),char(101),char(68), +char(97),char(116),char(97),char(0),char(98),char(116),char(83),char(116),char(97),char(116),char(105),char(99),char(80),char(108),char(97),char(110),char(101),char(83),char(104),char(97), +char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(110),char(118),char(101),char(120),char(73),char(110),char(116),char(101),char(114), +char(110),char(97),char(108),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(80),char(111),char(115),char(105),char(116), +char(105),char(111),char(110),char(65),char(110),char(100),char(82),char(97),char(100),char(105),char(117),char(115),char(0),char(98),char(116),char(77),char(117),char(108),char(116),char(105), +char(83),char(112),char(104),char(101),char(114),char(101),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(73),char(110), +char(116),char(73),char(110),char(100),char(101),char(120),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(83),char(104),char(111),char(114),char(116),char(73),char(110), +char(116),char(73),char(110),char(100),char(101),char(120),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(83),char(104),char(111),char(114),char(116),char(73),char(110), +char(116),char(73),char(110),char(100),char(101),char(120),char(84),char(114),char(105),char(112),char(108),char(101),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116), +char(67),char(104),char(97),char(114),char(73),char(110),char(100),char(101),char(120),char(84),char(114),char(105),char(112),char(108),char(101),char(116),char(68),char(97),char(116),char(97), +char(0),char(98),char(116),char(77),char(101),char(115),char(104),char(80),char(97),char(114),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(83),char(116), +char(114),char(105),char(100),char(105),char(110),char(103),char(77),char(101),char(115),char(104),char(73),char(110),char(116),char(101),char(114),char(102),char(97),char(99),char(101),char(68), +char(97),char(116),char(97),char(0),char(98),char(116),char(84),char(114),char(105),char(97),char(110),char(103),char(108),char(101),char(77),char(101),char(115),char(104),char(83),char(104), +char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(84),char(114),char(105),char(97),char(110),char(103),char(108),char(101),char(73),char(110), +char(102),char(111),char(77),char(97),char(112),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(83),char(99),char(97),char(108),char(101),char(100),char(84),char(114), char(105),char(97),char(110),char(103),char(108),char(101),char(77),char(101),char(115),char(104),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0), -char(98),char(116),char(84),char(114),char(105),char(97),char(110),char(103),char(108),char(101),char(73),char(110),char(102),char(111),char(77),char(97),char(112),char(68),char(97),char(116), -char(97),char(0),char(98),char(116),char(83),char(99),char(97),char(108),char(101),char(100),char(84),char(114),char(105),char(97),char(110),char(103),char(108),char(101),char(77),char(101), -char(115),char(104),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(109),char(112),char(111),char(117), -char(110),char(100),char(83),char(104),char(97),char(112),char(101),char(67),char(104),char(105),char(108),char(100),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67), -char(111),char(109),char(112),char(111),char(117),char(110),char(100),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67), -char(121),char(108),char(105),char(110),char(100),char(101),char(114),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67), -char(111),char(110),char(101),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(97),char(112),char(115),char(117), -char(108),char(101),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(84),char(114),char(105),char(97),char(110),char(103), -char(108),char(101),char(73),char(110),char(102),char(111),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(71),char(73),char(109),char(112),char(97),char(99),char(116), -char(77),char(101),char(115),char(104),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(110),char(118), -char(101),char(120),char(72),char(117),char(108),char(108),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111), -char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(79),char(98),char(106),char(101),char(99),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68), +char(98),char(116),char(67),char(111),char(109),char(112),char(111),char(117),char(110),char(100),char(83),char(104),char(97),char(112),char(101),char(67),char(104),char(105),char(108),char(100), +char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(109),char(112),char(111),char(117),char(110),char(100),char(83),char(104),char(97),char(112),char(101), +char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(121),char(108),char(105),char(110),char(100),char(101),char(114),char(83),char(104),char(97),char(112),char(101), +char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(110),char(101),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97), +char(0),char(98),char(116),char(67),char(97),char(112),char(115),char(117),char(108),char(101),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0), +char(98),char(116),char(84),char(114),char(105),char(97),char(110),char(103),char(108),char(101),char(73),char(110),char(102),char(111),char(68),char(97),char(116),char(97),char(0),char(98), +char(116),char(71),char(73),char(109),char(112),char(97),char(99),char(116),char(77),char(101),char(115),char(104),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116), +char(97),char(0),char(98),char(116),char(67),char(111),char(110),char(118),char(101),char(120),char(72),char(117),char(108),char(108),char(83),char(104),char(97),char(112),char(101),char(68), char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(79),char(98),char(106),char(101),char(99), -char(116),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(110),char(116),char(97),char(99),char(116), -char(83),char(111),char(108),char(118),char(101),char(114),char(73),char(110),char(102),char(111),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97), -char(0),char(98),char(116),char(67),char(111),char(110),char(116),char(97),char(99),char(116),char(83),char(111),char(108),char(118),char(101),char(114),char(73),char(110),char(102),char(111), -char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(68),char(121),char(110),char(97),char(109),char(105),char(99),char(115), -char(87),char(111),char(114),char(108),char(100),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(68),char(121), -char(110),char(97),char(109),char(105),char(99),char(115),char(87),char(111),char(114),char(108),char(100),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97), -char(0),char(98),char(116),char(82),char(105),char(103),char(105),char(100),char(66),char(111),char(100),char(121),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116), -char(97),char(0),char(98),char(116),char(82),char(105),char(103),char(105),char(100),char(66),char(111),char(100),char(121),char(68),char(111),char(117),char(98),char(108),char(101),char(68), -char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(73),char(110),char(102),char(111), -char(49),char(0),char(98),char(116),char(84),char(121),char(112),char(101),char(100),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(70), -char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(84),char(121),char(112),char(101),char(100),char(67),char(111),char(110),char(115), -char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(82),char(105),char(103),char(105),char(100),char(66),char(111), -char(100),char(121),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(84),char(121),char(112),char(101),char(100),char(67),char(111),char(110),char(115),char(116),char(114), -char(97),char(105),char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(80),char(111),char(105), -char(110),char(116),char(50),char(80),char(111),char(105),char(110),char(116),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(70),char(108), -char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(80),char(111),char(105),char(110),char(116),char(50),char(80),char(111),char(105),char(110), -char(116),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116), -char(97),char(50),char(0),char(98),char(116),char(80),char(111),char(105),char(110),char(116),char(50),char(80),char(111),char(105),char(110),char(116),char(67),char(111),char(110),char(115), -char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(72), -char(105),char(110),char(103),char(101),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101), +char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(108),char(108),char(105),char(115), +char(105),char(111),char(110),char(79),char(98),char(106),char(101),char(99),char(116),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98), +char(116),char(67),char(111),char(110),char(116),char(97),char(99),char(116),char(83),char(111),char(108),char(118),char(101),char(114),char(73),char(110),char(102),char(111),char(68),char(111), +char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(110),char(116),char(97),char(99),char(116),char(83),char(111), +char(108),char(118),char(101),char(114),char(73),char(110),char(102),char(111),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116), +char(68),char(121),char(110),char(97),char(109),char(105),char(99),char(115),char(87),char(111),char(114),char(108),char(100),char(68),char(111),char(117),char(98),char(108),char(101),char(68), +char(97),char(116),char(97),char(0),char(98),char(116),char(68),char(121),char(110),char(97),char(109),char(105),char(99),char(115),char(87),char(111),char(114),char(108),char(100),char(70), +char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(82),char(105),char(103),char(105),char(100),char(66),char(111),char(100),char(121), +char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(82),char(105),char(103),char(105),char(100),char(66),char(111),char(100), +char(121),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(110),char(115),char(116),char(114), +char(97),char(105),char(110),char(116),char(73),char(110),char(102),char(111),char(49),char(0),char(98),char(116),char(84),char(121),char(112),char(101),char(100),char(67),char(111),char(110), +char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(84), +char(121),char(112),char(101),char(100),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(97),char(116),char(97),char(0),char(98), +char(116),char(82),char(105),char(103),char(105),char(100),char(66),char(111),char(100),char(121),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(84),char(121),char(112), +char(101),char(100),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97), +char(116),char(97),char(0),char(98),char(116),char(80),char(111),char(105),char(110),char(116),char(50),char(80),char(111),char(105),char(110),char(116),char(67),char(111),char(110),char(115), +char(116),char(114),char(97),char(105),char(110),char(116),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(80),char(111), +char(105),char(110),char(116),char(50),char(80),char(111),char(105),char(110),char(116),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68), +char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(50),char(0),char(98),char(116),char(80),char(111),char(105),char(110),char(116),char(50),char(80), +char(111),char(105),char(110),char(116),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101), char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(72),char(105),char(110),char(103),char(101),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105), -char(110),char(116),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(72),char(105),char(110),char(103),char(101),char(67), -char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(50), -char(0),char(98),char(116),char(67),char(111),char(110),char(101),char(84),char(119),char(105),char(115),char(116),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105), -char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(110),char(101),char(84), -char(119),char(105),char(115),char(116),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(97),char(116),char(97),char(0),char(98), -char(116),char(71),char(101),char(110),char(101),char(114),char(105),char(99),char(54),char(68),char(111),char(102),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105), -char(110),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(71),char(101),char(110),char(101),char(114),char(105),char(99),char(54),char(68),char(111),char(102), +char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(72),char(105),char(110),char(103),char(101), +char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0), +char(98),char(116),char(72),char(105),char(110),char(103),char(101),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(111),char(117), +char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(50),char(0),char(98),char(116),char(67),char(111),char(110),char(101),char(84),char(119),char(105),char(115),char(116), char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97), -char(50),char(0),char(98),char(116),char(71),char(101),char(110),char(101),char(114),char(105),char(99),char(54),char(68),char(111),char(102),char(83),char(112),char(114),char(105),char(110), -char(103),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(71),char(101), -char(110),char(101),char(114),char(105),char(99),char(54),char(68),char(111),char(102),char(83),char(112),char(114),char(105),char(110),char(103),char(67),char(111),char(110),char(115),char(116), -char(114),char(97),char(105),char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(50),char(0),char(98),char(116),char(71), -char(101),char(110),char(101),char(114),char(105),char(99),char(54),char(68),char(111),char(102),char(83),char(112),char(114),char(105),char(110),char(103),char(50),char(67),char(111),char(110), -char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(71),char(101),char(110),char(101),char(114),char(105), -char(99),char(54),char(68),char(111),char(102),char(83),char(112),char(114),char(105),char(110),char(103),char(50),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105), -char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(50),char(0),char(98),char(116),char(83),char(108),char(105),char(100), -char(101),char(114),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(83), -char(108),char(105),char(100),char(101),char(114),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(111),char(117),char(98),char(108), -char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(71),char(101),char(97),char(114),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105), -char(110),char(116),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(71),char(101),char(97),char(114),char(67),char(111), -char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(83), -char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(77),char(97),char(116),char(101),char(114),char(105),char(97),char(108),char(68),char(97),char(116),char(97),char(0), -char(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(78),char(111),char(100),char(101),char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102), -char(116),char(66),char(111),char(100),char(121),char(76),char(105),char(110),char(107),char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102),char(116),char(66),char(111), -char(100),char(121),char(70),char(97),char(99),char(101),char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(84), -char(101),char(116),char(114),char(97),char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102),char(116),char(82),char(105),char(103),char(105),char(100),char(65),char(110), -char(99),char(104),char(111),char(114),char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(67),char(111),char(110), -char(102),char(105),char(103),char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(80),char(111),char(115),char(101), -char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(67),char(108),char(117),char(115),char(116),char(101),char(114), -char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(74),char(111),char(105),char(110),char(116), -char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(70),char(108),char(111),char(97),char(116), -char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(77),char(117),char(108),char(116),char(105),char(66),char(111),char(100),char(121),char(76),char(105),char(110),char(107), -char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(77),char(117),char(108),char(116),char(105),char(66),char(111), -char(100),char(121),char(76),char(105),char(110),char(107),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(77),char(117), -char(108),char(116),char(105),char(66),char(111),char(100),char(121),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116), -char(77),char(117),char(108),char(116),char(105),char(66),char(111),char(100),char(121),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(0), -char(84),char(76),char(69),char(78),char(1),char(0),char(1),char(0),char(2),char(0),char(2),char(0),char(4),char(0),char(4),char(0),char(4),char(0),char(4),char(0), -char(8),char(0),char(0),char(0),char(12),char(0),char(36),char(0),char(8),char(0),char(16),char(0),char(32),char(0),char(16),char(0),char(32),char(0),char(48),char(0), -char(96),char(0),char(64),char(0),char(-128),char(0),char(20),char(0),char(48),char(0),char(80),char(0),char(16),char(0),char(84),char(0),char(-124),char(0),char(12),char(0), -char(52),char(0),char(52),char(0),char(20),char(0),char(64),char(0),char(4),char(0),char(4),char(0),char(8),char(0),char(4),char(0),char(32),char(0),char(28),char(0), -char(60),char(0),char(56),char(0),char(76),char(0),char(76),char(0),char(24),char(0),char(60),char(0),char(60),char(0),char(60),char(0),char(16),char(0),char(64),char(0), -char(68),char(0),char(-32),char(1),char(8),char(1),char(-104),char(0),char(88),char(0),char(-72),char(0),char(104),char(0),char(-16),char(1),char(-80),char(3),char(8),char(0), -char(52),char(0),char(52),char(0),char(0),char(0),char(68),char(0),char(84),char(0),char(-124),char(0),char(116),char(0),char(92),char(1),char(-36),char(0),char(-116),char(1), -char(124),char(1),char(-44),char(0),char(-4),char(0),char(-52),char(1),char(92),char(1),char(116),char(2),char(-124),char(2),char(-76),char(4),char(-52),char(0),char(108),char(1), -char(92),char(0),char(-116),char(0),char(16),char(0),char(100),char(0),char(20),char(0),char(36),char(0),char(100),char(0),char(92),char(0),char(104),char(0),char(-64),char(0), -char(92),char(1),char(104),char(0),char(-76),char(1),char(-48),char(2),char(120),char(1),char(-64),char(0),char(100),char(0),char(0),char(0),char(83),char(84),char(82),char(67), -char(84),char(0),char(0),char(0),char(10),char(0),char(3),char(0),char(4),char(0),char(0),char(0),char(4),char(0),char(1),char(0),char(9),char(0),char(2),char(0), -char(11),char(0),char(3),char(0),char(10),char(0),char(3),char(0),char(10),char(0),char(4),char(0),char(10),char(0),char(5),char(0),char(12),char(0),char(2),char(0), -char(9),char(0),char(6),char(0),char(9),char(0),char(7),char(0),char(13),char(0),char(1),char(0),char(7),char(0),char(8),char(0),char(14),char(0),char(1),char(0), -char(8),char(0),char(8),char(0),char(15),char(0),char(1),char(0),char(7),char(0),char(8),char(0),char(16),char(0),char(1),char(0),char(8),char(0),char(8),char(0), -char(17),char(0),char(1),char(0),char(13),char(0),char(9),char(0),char(18),char(0),char(1),char(0),char(14),char(0),char(9),char(0),char(19),char(0),char(2),char(0), -char(17),char(0),char(10),char(0),char(13),char(0),char(11),char(0),char(20),char(0),char(2),char(0),char(18),char(0),char(10),char(0),char(14),char(0),char(11),char(0), -char(21),char(0),char(4),char(0),char(4),char(0),char(12),char(0),char(4),char(0),char(13),char(0),char(2),char(0),char(14),char(0),char(2),char(0),char(15),char(0), -char(22),char(0),char(6),char(0),char(13),char(0),char(16),char(0),char(13),char(0),char(17),char(0),char(4),char(0),char(18),char(0),char(4),char(0),char(19),char(0), -char(4),char(0),char(20),char(0),char(0),char(0),char(21),char(0),char(23),char(0),char(6),char(0),char(14),char(0),char(16),char(0),char(14),char(0),char(17),char(0), -char(4),char(0),char(18),char(0),char(4),char(0),char(19),char(0),char(4),char(0),char(20),char(0),char(0),char(0),char(21),char(0),char(24),char(0),char(3),char(0), -char(2),char(0),char(14),char(0),char(2),char(0),char(15),char(0),char(4),char(0),char(22),char(0),char(25),char(0),char(12),char(0),char(13),char(0),char(23),char(0), -char(13),char(0),char(24),char(0),char(13),char(0),char(25),char(0),char(4),char(0),char(26),char(0),char(4),char(0),char(27),char(0),char(4),char(0),char(28),char(0), -char(4),char(0),char(29),char(0),char(22),char(0),char(30),char(0),char(24),char(0),char(31),char(0),char(21),char(0),char(32),char(0),char(4),char(0),char(33),char(0), -char(4),char(0),char(34),char(0),char(26),char(0),char(12),char(0),char(14),char(0),char(23),char(0),char(14),char(0),char(24),char(0),char(14),char(0),char(25),char(0), -char(4),char(0),char(26),char(0),char(4),char(0),char(27),char(0),char(4),char(0),char(28),char(0),char(4),char(0),char(29),char(0),char(23),char(0),char(30),char(0), -char(24),char(0),char(31),char(0),char(4),char(0),char(33),char(0),char(4),char(0),char(34),char(0),char(21),char(0),char(32),char(0),char(27),char(0),char(3),char(0), -char(0),char(0),char(35),char(0),char(4),char(0),char(36),char(0),char(0),char(0),char(37),char(0),char(28),char(0),char(5),char(0),char(27),char(0),char(38),char(0), -char(13),char(0),char(39),char(0),char(13),char(0),char(40),char(0),char(7),char(0),char(41),char(0),char(0),char(0),char(21),char(0),char(29),char(0),char(5),char(0), -char(27),char(0),char(38),char(0),char(13),char(0),char(39),char(0),char(13),char(0),char(42),char(0),char(7),char(0),char(43),char(0),char(4),char(0),char(44),char(0), -char(30),char(0),char(2),char(0),char(13),char(0),char(45),char(0),char(7),char(0),char(46),char(0),char(31),char(0),char(4),char(0),char(29),char(0),char(47),char(0), -char(30),char(0),char(48),char(0),char(4),char(0),char(49),char(0),char(0),char(0),char(37),char(0),char(32),char(0),char(1),char(0),char(4),char(0),char(50),char(0), -char(33),char(0),char(2),char(0),char(2),char(0),char(50),char(0),char(0),char(0),char(51),char(0),char(34),char(0),char(2),char(0),char(2),char(0),char(52),char(0), -char(0),char(0),char(51),char(0),char(35),char(0),char(2),char(0),char(0),char(0),char(52),char(0),char(0),char(0),char(53),char(0),char(36),char(0),char(8),char(0), -char(13),char(0),char(54),char(0),char(14),char(0),char(55),char(0),char(32),char(0),char(56),char(0),char(34),char(0),char(57),char(0),char(35),char(0),char(58),char(0), -char(33),char(0),char(59),char(0),char(4),char(0),char(60),char(0),char(4),char(0),char(61),char(0),char(37),char(0),char(4),char(0),char(36),char(0),char(62),char(0), -char(13),char(0),char(63),char(0),char(4),char(0),char(64),char(0),char(0),char(0),char(37),char(0),char(38),char(0),char(7),char(0),char(27),char(0),char(38),char(0), -char(37),char(0),char(65),char(0),char(25),char(0),char(66),char(0),char(26),char(0),char(67),char(0),char(39),char(0),char(68),char(0),char(7),char(0),char(43),char(0), -char(0),char(0),char(69),char(0),char(40),char(0),char(2),char(0),char(38),char(0),char(70),char(0),char(13),char(0),char(39),char(0),char(41),char(0),char(4),char(0), -char(19),char(0),char(71),char(0),char(27),char(0),char(72),char(0),char(4),char(0),char(73),char(0),char(7),char(0),char(74),char(0),char(42),char(0),char(4),char(0), -char(27),char(0),char(38),char(0),char(41),char(0),char(75),char(0),char(4),char(0),char(76),char(0),char(7),char(0),char(43),char(0),char(43),char(0),char(3),char(0), -char(29),char(0),char(47),char(0),char(4),char(0),char(77),char(0),char(0),char(0),char(37),char(0),char(44),char(0),char(3),char(0),char(29),char(0),char(47),char(0), -char(4),char(0),char(78),char(0),char(0),char(0),char(37),char(0),char(45),char(0),char(3),char(0),char(29),char(0),char(47),char(0),char(4),char(0),char(77),char(0), -char(0),char(0),char(37),char(0),char(46),char(0),char(4),char(0),char(4),char(0),char(79),char(0),char(7),char(0),char(80),char(0),char(7),char(0),char(81),char(0), -char(7),char(0),char(82),char(0),char(39),char(0),char(14),char(0),char(4),char(0),char(83),char(0),char(4),char(0),char(84),char(0),char(46),char(0),char(85),char(0), -char(4),char(0),char(86),char(0),char(7),char(0),char(87),char(0),char(7),char(0),char(88),char(0),char(7),char(0),char(89),char(0),char(7),char(0),char(90),char(0), -char(7),char(0),char(91),char(0),char(4),char(0),char(92),char(0),char(4),char(0),char(93),char(0),char(4),char(0),char(94),char(0),char(4),char(0),char(95),char(0), -char(0),char(0),char(37),char(0),char(47),char(0),char(5),char(0),char(27),char(0),char(38),char(0),char(37),char(0),char(65),char(0),char(13),char(0),char(39),char(0), -char(7),char(0),char(43),char(0),char(4),char(0),char(96),char(0),char(48),char(0),char(5),char(0),char(29),char(0),char(47),char(0),char(13),char(0),char(97),char(0), -char(14),char(0),char(98),char(0),char(4),char(0),char(99),char(0),char(0),char(0),char(100),char(0),char(49),char(0),char(27),char(0),char(9),char(0),char(101),char(0), -char(9),char(0),char(102),char(0),char(27),char(0),char(103),char(0),char(0),char(0),char(35),char(0),char(20),char(0),char(104),char(0),char(20),char(0),char(105),char(0), -char(14),char(0),char(106),char(0),char(14),char(0),char(107),char(0),char(14),char(0),char(108),char(0),char(8),char(0),char(109),char(0),char(8),char(0),char(110),char(0), -char(8),char(0),char(111),char(0),char(8),char(0),char(112),char(0),char(8),char(0),char(113),char(0),char(8),char(0),char(114),char(0),char(8),char(0),char(115),char(0), -char(8),char(0),char(116),char(0),char(8),char(0),char(117),char(0),char(8),char(0),char(118),char(0),char(4),char(0),char(119),char(0),char(4),char(0),char(120),char(0), +char(0),char(98),char(116),char(67),char(111),char(110),char(101),char(84),char(119),char(105),char(115),char(116),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105), +char(110),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(71),char(101),char(110),char(101),char(114),char(105),char(99),char(54),char(68),char(111),char(102), +char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(71),char(101),char(110), +char(101),char(114),char(105),char(99),char(54),char(68),char(111),char(102),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(111), +char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(50),char(0),char(98),char(116),char(71),char(101),char(110),char(101),char(114),char(105),char(99),char(54), +char(68),char(111),char(102),char(83),char(112),char(114),char(105),char(110),char(103),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68), +char(97),char(116),char(97),char(0),char(98),char(116),char(71),char(101),char(110),char(101),char(114),char(105),char(99),char(54),char(68),char(111),char(102),char(83),char(112),char(114), +char(105),char(110),char(103),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68), +char(97),char(116),char(97),char(50),char(0),char(98),char(116),char(71),char(101),char(110),char(101),char(114),char(105),char(99),char(54),char(68),char(111),char(102),char(83),char(112), +char(114),char(105),char(110),char(103),char(50),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(97),char(116),char(97),char(0), +char(98),char(116),char(71),char(101),char(110),char(101),char(114),char(105),char(99),char(54),char(68),char(111),char(102),char(83),char(112),char(114),char(105),char(110),char(103),char(50), +char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97), +char(50),char(0),char(98),char(116),char(83),char(108),char(105),char(100),char(101),char(114),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116), +char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(83),char(108),char(105),char(100),char(101),char(114),char(67),char(111),char(110),char(115),char(116),char(114),char(97), +char(105),char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(71),char(101),char(97),char(114), +char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0), +char(98),char(116),char(71),char(101),char(97),char(114),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(111),char(117),char(98), +char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(77),char(97),char(116),char(101),char(114), +char(105),char(97),char(108),char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(78),char(111),char(100),char(101), +char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(76),char(105),char(110),char(107),char(68),char(97),char(116), +char(97),char(0),char(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(70),char(97),char(99),char(101),char(68),char(97),char(116),char(97),char(0),char(83), +char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(84),char(101),char(116),char(114),char(97),char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102), +char(116),char(82),char(105),char(103),char(105),char(100),char(65),char(110),char(99),char(104),char(111),char(114),char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102), +char(116),char(66),char(111),char(100),char(121),char(67),char(111),char(110),char(102),char(105),char(103),char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102),char(116), +char(66),char(111),char(100),char(121),char(80),char(111),char(115),char(101),char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102),char(116),char(66),char(111),char(100), +char(121),char(67),char(108),char(117),char(115),char(116),char(101),char(114),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(83),char(111),char(102),char(116),char(66), +char(111),char(100),char(121),char(74),char(111),char(105),char(110),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(83),char(111),char(102),char(116),char(66), +char(111),char(100),char(121),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(77),char(117),char(108),char(116),char(105), +char(66),char(111),char(100),char(121),char(76),char(105),char(110),char(107),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98), +char(116),char(77),char(117),char(108),char(116),char(105),char(66),char(111),char(100),char(121),char(76),char(105),char(110),char(107),char(70),char(108),char(111),char(97),char(116),char(68), +char(97),char(116),char(97),char(0),char(98),char(116),char(77),char(117),char(108),char(116),char(105),char(66),char(111),char(100),char(121),char(68),char(111),char(117),char(98),char(108), +char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(77),char(117),char(108),char(116),char(105),char(66),char(111),char(100),char(121),char(70),char(108),char(111), +char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(0),char(84),char(76),char(69),char(78),char(1),char(0),char(1),char(0),char(2),char(0),char(2),char(0), +char(4),char(0),char(4),char(0),char(4),char(0),char(4),char(0),char(8),char(0),char(0),char(0),char(12),char(0),char(36),char(0),char(8),char(0),char(16),char(0), +char(32),char(0),char(16),char(0),char(32),char(0),char(48),char(0),char(96),char(0),char(64),char(0),char(-128),char(0),char(20),char(0),char(48),char(0),char(80),char(0), +char(16),char(0),char(84),char(0),char(-124),char(0),char(12),char(0),char(52),char(0),char(52),char(0),char(20),char(0),char(64),char(0),char(4),char(0),char(4),char(0), +char(8),char(0),char(4),char(0),char(32),char(0),char(28),char(0),char(60),char(0),char(56),char(0),char(76),char(0),char(76),char(0),char(24),char(0),char(60),char(0), +char(60),char(0),char(60),char(0),char(16),char(0),char(64),char(0),char(68),char(0),char(-32),char(1),char(8),char(1),char(-104),char(0),char(88),char(0),char(-72),char(0), +char(104),char(0),char(-16),char(1),char(-80),char(3),char(8),char(0),char(52),char(0),char(52),char(0),char(0),char(0),char(68),char(0),char(84),char(0),char(-124),char(0), +char(116),char(0),char(92),char(1),char(-36),char(0),char(-116),char(1),char(124),char(1),char(-44),char(0),char(-4),char(0),char(-52),char(1),char(92),char(1),char(116),char(2), +char(-124),char(2),char(-76),char(4),char(-52),char(0),char(108),char(1),char(92),char(0),char(-116),char(0),char(16),char(0),char(100),char(0),char(20),char(0),char(36),char(0), +char(100),char(0),char(92),char(0),char(104),char(0),char(-64),char(0),char(92),char(1),char(104),char(0),char(-76),char(1),char(-16),char(2),char(-120),char(1),char(-64),char(0), +char(100),char(0),char(0),char(0),char(83),char(84),char(82),char(67),char(84),char(0),char(0),char(0),char(10),char(0),char(3),char(0),char(4),char(0),char(0),char(0), +char(4),char(0),char(1),char(0),char(9),char(0),char(2),char(0),char(11),char(0),char(3),char(0),char(10),char(0),char(3),char(0),char(10),char(0),char(4),char(0), +char(10),char(0),char(5),char(0),char(12),char(0),char(2),char(0),char(9),char(0),char(6),char(0),char(9),char(0),char(7),char(0),char(13),char(0),char(1),char(0), +char(7),char(0),char(8),char(0),char(14),char(0),char(1),char(0),char(8),char(0),char(8),char(0),char(15),char(0),char(1),char(0),char(7),char(0),char(8),char(0), +char(16),char(0),char(1),char(0),char(8),char(0),char(8),char(0),char(17),char(0),char(1),char(0),char(13),char(0),char(9),char(0),char(18),char(0),char(1),char(0), +char(14),char(0),char(9),char(0),char(19),char(0),char(2),char(0),char(17),char(0),char(10),char(0),char(13),char(0),char(11),char(0),char(20),char(0),char(2),char(0), +char(18),char(0),char(10),char(0),char(14),char(0),char(11),char(0),char(21),char(0),char(4),char(0),char(4),char(0),char(12),char(0),char(4),char(0),char(13),char(0), +char(2),char(0),char(14),char(0),char(2),char(0),char(15),char(0),char(22),char(0),char(6),char(0),char(13),char(0),char(16),char(0),char(13),char(0),char(17),char(0), +char(4),char(0),char(18),char(0),char(4),char(0),char(19),char(0),char(4),char(0),char(20),char(0),char(0),char(0),char(21),char(0),char(23),char(0),char(6),char(0), +char(14),char(0),char(16),char(0),char(14),char(0),char(17),char(0),char(4),char(0),char(18),char(0),char(4),char(0),char(19),char(0),char(4),char(0),char(20),char(0), +char(0),char(0),char(21),char(0),char(24),char(0),char(3),char(0),char(2),char(0),char(14),char(0),char(2),char(0),char(15),char(0),char(4),char(0),char(22),char(0), +char(25),char(0),char(12),char(0),char(13),char(0),char(23),char(0),char(13),char(0),char(24),char(0),char(13),char(0),char(25),char(0),char(4),char(0),char(26),char(0), +char(4),char(0),char(27),char(0),char(4),char(0),char(28),char(0),char(4),char(0),char(29),char(0),char(22),char(0),char(30),char(0),char(24),char(0),char(31),char(0), +char(21),char(0),char(32),char(0),char(4),char(0),char(33),char(0),char(4),char(0),char(34),char(0),char(26),char(0),char(12),char(0),char(14),char(0),char(23),char(0), +char(14),char(0),char(24),char(0),char(14),char(0),char(25),char(0),char(4),char(0),char(26),char(0),char(4),char(0),char(27),char(0),char(4),char(0),char(28),char(0), +char(4),char(0),char(29),char(0),char(23),char(0),char(30),char(0),char(24),char(0),char(31),char(0),char(4),char(0),char(33),char(0),char(4),char(0),char(34),char(0), +char(21),char(0),char(32),char(0),char(27),char(0),char(3),char(0),char(0),char(0),char(35),char(0),char(4),char(0),char(36),char(0),char(0),char(0),char(37),char(0), +char(28),char(0),char(5),char(0),char(27),char(0),char(38),char(0),char(13),char(0),char(39),char(0),char(13),char(0),char(40),char(0),char(7),char(0),char(41),char(0), +char(0),char(0),char(21),char(0),char(29),char(0),char(5),char(0),char(27),char(0),char(38),char(0),char(13),char(0),char(39),char(0),char(13),char(0),char(42),char(0), +char(7),char(0),char(43),char(0),char(4),char(0),char(44),char(0),char(30),char(0),char(2),char(0),char(13),char(0),char(45),char(0),char(7),char(0),char(46),char(0), +char(31),char(0),char(4),char(0),char(29),char(0),char(47),char(0),char(30),char(0),char(48),char(0),char(4),char(0),char(49),char(0),char(0),char(0),char(37),char(0), +char(32),char(0),char(1),char(0),char(4),char(0),char(50),char(0),char(33),char(0),char(2),char(0),char(2),char(0),char(50),char(0),char(0),char(0),char(51),char(0), +char(34),char(0),char(2),char(0),char(2),char(0),char(52),char(0),char(0),char(0),char(51),char(0),char(35),char(0),char(2),char(0),char(0),char(0),char(52),char(0), +char(0),char(0),char(53),char(0),char(36),char(0),char(8),char(0),char(13),char(0),char(54),char(0),char(14),char(0),char(55),char(0),char(32),char(0),char(56),char(0), +char(34),char(0),char(57),char(0),char(35),char(0),char(58),char(0),char(33),char(0),char(59),char(0),char(4),char(0),char(60),char(0),char(4),char(0),char(61),char(0), +char(37),char(0),char(4),char(0),char(36),char(0),char(62),char(0),char(13),char(0),char(63),char(0),char(4),char(0),char(64),char(0),char(0),char(0),char(37),char(0), +char(38),char(0),char(7),char(0),char(27),char(0),char(38),char(0),char(37),char(0),char(65),char(0),char(25),char(0),char(66),char(0),char(26),char(0),char(67),char(0), +char(39),char(0),char(68),char(0),char(7),char(0),char(43),char(0),char(0),char(0),char(69),char(0),char(40),char(0),char(2),char(0),char(38),char(0),char(70),char(0), +char(13),char(0),char(39),char(0),char(41),char(0),char(4),char(0),char(19),char(0),char(71),char(0),char(27),char(0),char(72),char(0),char(4),char(0),char(73),char(0), +char(7),char(0),char(74),char(0),char(42),char(0),char(4),char(0),char(27),char(0),char(38),char(0),char(41),char(0),char(75),char(0),char(4),char(0),char(76),char(0), +char(7),char(0),char(43),char(0),char(43),char(0),char(3),char(0),char(29),char(0),char(47),char(0),char(4),char(0),char(77),char(0),char(0),char(0),char(37),char(0), +char(44),char(0),char(3),char(0),char(29),char(0),char(47),char(0),char(4),char(0),char(78),char(0),char(0),char(0),char(37),char(0),char(45),char(0),char(3),char(0), +char(29),char(0),char(47),char(0),char(4),char(0),char(77),char(0),char(0),char(0),char(37),char(0),char(46),char(0),char(4),char(0),char(4),char(0),char(79),char(0), +char(7),char(0),char(80),char(0),char(7),char(0),char(81),char(0),char(7),char(0),char(82),char(0),char(39),char(0),char(14),char(0),char(4),char(0),char(83),char(0), +char(4),char(0),char(84),char(0),char(46),char(0),char(85),char(0),char(4),char(0),char(86),char(0),char(7),char(0),char(87),char(0),char(7),char(0),char(88),char(0), +char(7),char(0),char(89),char(0),char(7),char(0),char(90),char(0),char(7),char(0),char(91),char(0),char(4),char(0),char(92),char(0),char(4),char(0),char(93),char(0), +char(4),char(0),char(94),char(0),char(4),char(0),char(95),char(0),char(0),char(0),char(37),char(0),char(47),char(0),char(5),char(0),char(27),char(0),char(38),char(0), +char(37),char(0),char(65),char(0),char(13),char(0),char(39),char(0),char(7),char(0),char(43),char(0),char(4),char(0),char(96),char(0),char(48),char(0),char(5),char(0), +char(29),char(0),char(47),char(0),char(13),char(0),char(97),char(0),char(14),char(0),char(98),char(0),char(4),char(0),char(99),char(0),char(0),char(0),char(100),char(0), +char(49),char(0),char(27),char(0),char(9),char(0),char(101),char(0),char(9),char(0),char(102),char(0),char(27),char(0),char(103),char(0),char(0),char(0),char(35),char(0), +char(20),char(0),char(104),char(0),char(20),char(0),char(105),char(0),char(14),char(0),char(106),char(0),char(14),char(0),char(107),char(0),char(14),char(0),char(108),char(0), +char(8),char(0),char(109),char(0),char(8),char(0),char(110),char(0),char(8),char(0),char(111),char(0),char(8),char(0),char(112),char(0),char(8),char(0),char(113),char(0), +char(8),char(0),char(114),char(0),char(8),char(0),char(115),char(0),char(8),char(0),char(116),char(0),char(8),char(0),char(117),char(0),char(8),char(0),char(118),char(0), +char(4),char(0),char(119),char(0),char(4),char(0),char(120),char(0),char(4),char(0),char(121),char(0),char(4),char(0),char(122),char(0),char(4),char(0),char(123),char(0), +char(4),char(0),char(124),char(0),char(4),char(0),char(125),char(0),char(0),char(0),char(37),char(0),char(50),char(0),char(27),char(0),char(9),char(0),char(101),char(0), +char(9),char(0),char(102),char(0),char(27),char(0),char(103),char(0),char(0),char(0),char(35),char(0),char(19),char(0),char(104),char(0),char(19),char(0),char(105),char(0), +char(13),char(0),char(106),char(0),char(13),char(0),char(107),char(0),char(13),char(0),char(108),char(0),char(7),char(0),char(109),char(0),char(7),char(0),char(110),char(0), +char(7),char(0),char(111),char(0),char(7),char(0),char(112),char(0),char(7),char(0),char(113),char(0),char(7),char(0),char(114),char(0),char(7),char(0),char(115),char(0), +char(7),char(0),char(116),char(0),char(7),char(0),char(117),char(0),char(7),char(0),char(118),char(0),char(4),char(0),char(119),char(0),char(4),char(0),char(120),char(0), char(4),char(0),char(121),char(0),char(4),char(0),char(122),char(0),char(4),char(0),char(123),char(0),char(4),char(0),char(124),char(0),char(4),char(0),char(125),char(0), -char(0),char(0),char(37),char(0),char(50),char(0),char(27),char(0),char(9),char(0),char(101),char(0),char(9),char(0),char(102),char(0),char(27),char(0),char(103),char(0), -char(0),char(0),char(35),char(0),char(19),char(0),char(104),char(0),char(19),char(0),char(105),char(0),char(13),char(0),char(106),char(0),char(13),char(0),char(107),char(0), -char(13),char(0),char(108),char(0),char(7),char(0),char(109),char(0),char(7),char(0),char(110),char(0),char(7),char(0),char(111),char(0),char(7),char(0),char(112),char(0), -char(7),char(0),char(113),char(0),char(7),char(0),char(114),char(0),char(7),char(0),char(115),char(0),char(7),char(0),char(116),char(0),char(7),char(0),char(117),char(0), -char(7),char(0),char(118),char(0),char(4),char(0),char(119),char(0),char(4),char(0),char(120),char(0),char(4),char(0),char(121),char(0),char(4),char(0),char(122),char(0), -char(4),char(0),char(123),char(0),char(4),char(0),char(124),char(0),char(4),char(0),char(125),char(0),char(0),char(0),char(37),char(0),char(51),char(0),char(22),char(0), -char(8),char(0),char(126),char(0),char(8),char(0),char(127),char(0),char(8),char(0),char(111),char(0),char(8),char(0),char(-128),char(0),char(8),char(0),char(115),char(0), -char(8),char(0),char(-127),char(0),char(8),char(0),char(-126),char(0),char(8),char(0),char(-125),char(0),char(8),char(0),char(-124),char(0),char(8),char(0),char(-123),char(0), -char(8),char(0),char(-122),char(0),char(8),char(0),char(-121),char(0),char(8),char(0),char(-120),char(0),char(8),char(0),char(-119),char(0),char(8),char(0),char(-118),char(0), -char(8),char(0),char(-117),char(0),char(4),char(0),char(-116),char(0),char(4),char(0),char(-115),char(0),char(4),char(0),char(-114),char(0),char(4),char(0),char(-113),char(0), -char(4),char(0),char(-112),char(0),char(0),char(0),char(37),char(0),char(52),char(0),char(22),char(0),char(7),char(0),char(126),char(0),char(7),char(0),char(127),char(0), -char(7),char(0),char(111),char(0),char(7),char(0),char(-128),char(0),char(7),char(0),char(115),char(0),char(7),char(0),char(-127),char(0),char(7),char(0),char(-126),char(0), -char(7),char(0),char(-125),char(0),char(7),char(0),char(-124),char(0),char(7),char(0),char(-123),char(0),char(7),char(0),char(-122),char(0),char(7),char(0),char(-121),char(0), -char(7),char(0),char(-120),char(0),char(7),char(0),char(-119),char(0),char(7),char(0),char(-118),char(0),char(7),char(0),char(-117),char(0),char(4),char(0),char(-116),char(0), -char(4),char(0),char(-115),char(0),char(4),char(0),char(-114),char(0),char(4),char(0),char(-113),char(0),char(4),char(0),char(-112),char(0),char(0),char(0),char(37),char(0), -char(53),char(0),char(2),char(0),char(51),char(0),char(-111),char(0),char(14),char(0),char(-110),char(0),char(54),char(0),char(2),char(0),char(52),char(0),char(-111),char(0), -char(13),char(0),char(-110),char(0),char(55),char(0),char(21),char(0),char(50),char(0),char(-109),char(0),char(17),char(0),char(-108),char(0),char(13),char(0),char(-107),char(0), -char(13),char(0),char(-106),char(0),char(13),char(0),char(-105),char(0),char(13),char(0),char(-104),char(0),char(13),char(0),char(-110),char(0),char(13),char(0),char(-103),char(0), -char(13),char(0),char(-102),char(0),char(13),char(0),char(-101),char(0),char(13),char(0),char(-100),char(0),char(7),char(0),char(-99),char(0),char(7),char(0),char(-98),char(0), -char(7),char(0),char(-97),char(0),char(7),char(0),char(-96),char(0),char(7),char(0),char(-95),char(0),char(7),char(0),char(-94),char(0),char(7),char(0),char(-93),char(0), -char(7),char(0),char(-92),char(0),char(7),char(0),char(-91),char(0),char(4),char(0),char(-90),char(0),char(56),char(0),char(22),char(0),char(49),char(0),char(-109),char(0), -char(18),char(0),char(-108),char(0),char(14),char(0),char(-107),char(0),char(14),char(0),char(-106),char(0),char(14),char(0),char(-105),char(0),char(14),char(0),char(-104),char(0), -char(14),char(0),char(-110),char(0),char(14),char(0),char(-103),char(0),char(14),char(0),char(-102),char(0),char(14),char(0),char(-101),char(0),char(14),char(0),char(-100),char(0), -char(8),char(0),char(-99),char(0),char(8),char(0),char(-98),char(0),char(8),char(0),char(-97),char(0),char(8),char(0),char(-96),char(0),char(8),char(0),char(-95),char(0), -char(8),char(0),char(-94),char(0),char(8),char(0),char(-93),char(0),char(8),char(0),char(-92),char(0),char(8),char(0),char(-91),char(0),char(4),char(0),char(-90),char(0), -char(0),char(0),char(37),char(0),char(57),char(0),char(2),char(0),char(4),char(0),char(-89),char(0),char(4),char(0),char(-88),char(0),char(58),char(0),char(13),char(0), -char(55),char(0),char(-87),char(0),char(55),char(0),char(-86),char(0),char(0),char(0),char(35),char(0),char(4),char(0),char(-85),char(0),char(4),char(0),char(-84),char(0), -char(4),char(0),char(-83),char(0),char(4),char(0),char(-82),char(0),char(7),char(0),char(-81),char(0),char(7),char(0),char(-80),char(0),char(4),char(0),char(-79),char(0), -char(4),char(0),char(-78),char(0),char(7),char(0),char(-77),char(0),char(4),char(0),char(-76),char(0),char(59),char(0),char(13),char(0),char(60),char(0),char(-87),char(0), -char(60),char(0),char(-86),char(0),char(0),char(0),char(35),char(0),char(4),char(0),char(-85),char(0),char(4),char(0),char(-84),char(0),char(4),char(0),char(-83),char(0), -char(4),char(0),char(-82),char(0),char(7),char(0),char(-81),char(0),char(7),char(0),char(-80),char(0),char(4),char(0),char(-79),char(0),char(4),char(0),char(-78),char(0), -char(7),char(0),char(-77),char(0),char(4),char(0),char(-76),char(0),char(61),char(0),char(14),char(0),char(56),char(0),char(-87),char(0),char(56),char(0),char(-86),char(0), -char(0),char(0),char(35),char(0),char(4),char(0),char(-85),char(0),char(4),char(0),char(-84),char(0),char(4),char(0),char(-83),char(0),char(4),char(0),char(-82),char(0), -char(8),char(0),char(-81),char(0),char(8),char(0),char(-80),char(0),char(4),char(0),char(-79),char(0),char(4),char(0),char(-78),char(0),char(8),char(0),char(-77),char(0), -char(4),char(0),char(-76),char(0),char(0),char(0),char(-75),char(0),char(62),char(0),char(3),char(0),char(59),char(0),char(-74),char(0),char(13),char(0),char(-73),char(0), -char(13),char(0),char(-72),char(0),char(63),char(0),char(3),char(0),char(61),char(0),char(-74),char(0),char(14),char(0),char(-73),char(0),char(14),char(0),char(-72),char(0), -char(64),char(0),char(3),char(0),char(59),char(0),char(-74),char(0),char(14),char(0),char(-73),char(0),char(14),char(0),char(-72),char(0),char(65),char(0),char(13),char(0), -char(59),char(0),char(-74),char(0),char(20),char(0),char(-71),char(0),char(20),char(0),char(-70),char(0),char(4),char(0),char(-69),char(0),char(4),char(0),char(-68),char(0), -char(4),char(0),char(-67),char(0),char(7),char(0),char(-66),char(0),char(7),char(0),char(-65),char(0),char(7),char(0),char(-64),char(0),char(7),char(0),char(-63),char(0), -char(7),char(0),char(-62),char(0),char(7),char(0),char(-61),char(0),char(7),char(0),char(-60),char(0),char(66),char(0),char(13),char(0),char(59),char(0),char(-74),char(0), -char(19),char(0),char(-71),char(0),char(19),char(0),char(-70),char(0),char(4),char(0),char(-69),char(0),char(4),char(0),char(-68),char(0),char(4),char(0),char(-67),char(0), -char(7),char(0),char(-66),char(0),char(7),char(0),char(-65),char(0),char(7),char(0),char(-64),char(0),char(7),char(0),char(-63),char(0),char(7),char(0),char(-62),char(0), -char(7),char(0),char(-61),char(0),char(7),char(0),char(-60),char(0),char(67),char(0),char(14),char(0),char(61),char(0),char(-74),char(0),char(20),char(0),char(-71),char(0), -char(20),char(0),char(-70),char(0),char(4),char(0),char(-69),char(0),char(4),char(0),char(-68),char(0),char(4),char(0),char(-67),char(0),char(8),char(0),char(-66),char(0), -char(8),char(0),char(-65),char(0),char(8),char(0),char(-64),char(0),char(8),char(0),char(-63),char(0),char(8),char(0),char(-62),char(0),char(8),char(0),char(-61),char(0), -char(8),char(0),char(-60),char(0),char(0),char(0),char(-59),char(0),char(68),char(0),char(10),char(0),char(61),char(0),char(-74),char(0),char(20),char(0),char(-71),char(0), -char(20),char(0),char(-70),char(0),char(8),char(0),char(-58),char(0),char(8),char(0),char(-57),char(0),char(8),char(0),char(-56),char(0),char(8),char(0),char(-62),char(0), -char(8),char(0),char(-61),char(0),char(8),char(0),char(-60),char(0),char(8),char(0),char(127),char(0),char(69),char(0),char(11),char(0),char(59),char(0),char(-74),char(0), -char(19),char(0),char(-71),char(0),char(19),char(0),char(-70),char(0),char(7),char(0),char(-58),char(0),char(7),char(0),char(-57),char(0),char(7),char(0),char(-56),char(0), -char(7),char(0),char(-62),char(0),char(7),char(0),char(-61),char(0),char(7),char(0),char(-60),char(0),char(7),char(0),char(127),char(0),char(0),char(0),char(21),char(0), -char(70),char(0),char(9),char(0),char(59),char(0),char(-74),char(0),char(19),char(0),char(-71),char(0),char(19),char(0),char(-70),char(0),char(13),char(0),char(-55),char(0), -char(13),char(0),char(-54),char(0),char(13),char(0),char(-53),char(0),char(13),char(0),char(-52),char(0),char(4),char(0),char(-51),char(0),char(4),char(0),char(-50),char(0), -char(71),char(0),char(9),char(0),char(61),char(0),char(-74),char(0),char(20),char(0),char(-71),char(0),char(20),char(0),char(-70),char(0),char(14),char(0),char(-55),char(0), -char(14),char(0),char(-54),char(0),char(14),char(0),char(-53),char(0),char(14),char(0),char(-52),char(0),char(4),char(0),char(-51),char(0),char(4),char(0),char(-50),char(0), -char(72),char(0),char(5),char(0),char(70),char(0),char(-49),char(0),char(4),char(0),char(-48),char(0),char(7),char(0),char(-47),char(0),char(7),char(0),char(-46),char(0), -char(7),char(0),char(-45),char(0),char(73),char(0),char(5),char(0),char(71),char(0),char(-49),char(0),char(4),char(0),char(-48),char(0),char(8),char(0),char(-47),char(0), -char(8),char(0),char(-46),char(0),char(8),char(0),char(-45),char(0),char(74),char(0),char(41),char(0),char(59),char(0),char(-74),char(0),char(19),char(0),char(-71),char(0), -char(19),char(0),char(-70),char(0),char(13),char(0),char(-55),char(0),char(13),char(0),char(-54),char(0),char(13),char(0),char(-44),char(0),char(13),char(0),char(-43),char(0), -char(13),char(0),char(-42),char(0),char(13),char(0),char(-41),char(0),char(13),char(0),char(-40),char(0),char(13),char(0),char(-39),char(0),char(13),char(0),char(-38),char(0), -char(13),char(0),char(-37),char(0),char(13),char(0),char(-36),char(0),char(13),char(0),char(-35),char(0),char(13),char(0),char(-34),char(0),char(0),char(0),char(-33),char(0), -char(0),char(0),char(-32),char(0),char(0),char(0),char(-31),char(0),char(0),char(0),char(-30),char(0),char(0),char(0),char(-29),char(0),char(0),char(0),char(-59),char(0), -char(13),char(0),char(-53),char(0),char(13),char(0),char(-52),char(0),char(13),char(0),char(-28),char(0),char(13),char(0),char(-27),char(0),char(13),char(0),char(-26),char(0), -char(13),char(0),char(-25),char(0),char(13),char(0),char(-24),char(0),char(13),char(0),char(-23),char(0),char(13),char(0),char(-22),char(0),char(13),char(0),char(-21),char(0), -char(13),char(0),char(-20),char(0),char(13),char(0),char(-19),char(0),char(13),char(0),char(-18),char(0),char(0),char(0),char(-17),char(0),char(0),char(0),char(-16),char(0), -char(0),char(0),char(-15),char(0),char(0),char(0),char(-14),char(0),char(0),char(0),char(-13),char(0),char(4),char(0),char(-12),char(0),char(75),char(0),char(41),char(0), -char(61),char(0),char(-74),char(0),char(20),char(0),char(-71),char(0),char(20),char(0),char(-70),char(0),char(14),char(0),char(-55),char(0),char(14),char(0),char(-54),char(0), -char(14),char(0),char(-44),char(0),char(14),char(0),char(-43),char(0),char(14),char(0),char(-42),char(0),char(14),char(0),char(-41),char(0),char(14),char(0),char(-40),char(0), -char(14),char(0),char(-39),char(0),char(14),char(0),char(-38),char(0),char(14),char(0),char(-37),char(0),char(14),char(0),char(-36),char(0),char(14),char(0),char(-35),char(0), -char(14),char(0),char(-34),char(0),char(0),char(0),char(-33),char(0),char(0),char(0),char(-32),char(0),char(0),char(0),char(-31),char(0),char(0),char(0),char(-30),char(0), -char(0),char(0),char(-29),char(0),char(0),char(0),char(-59),char(0),char(14),char(0),char(-53),char(0),char(14),char(0),char(-52),char(0),char(14),char(0),char(-28),char(0), -char(14),char(0),char(-27),char(0),char(14),char(0),char(-26),char(0),char(14),char(0),char(-25),char(0),char(14),char(0),char(-24),char(0),char(14),char(0),char(-23),char(0), -char(14),char(0),char(-22),char(0),char(14),char(0),char(-21),char(0),char(14),char(0),char(-20),char(0),char(14),char(0),char(-19),char(0),char(14),char(0),char(-18),char(0), +char(0),char(0),char(37),char(0),char(51),char(0),char(22),char(0),char(8),char(0),char(126),char(0),char(8),char(0),char(127),char(0),char(8),char(0),char(111),char(0), +char(8),char(0),char(-128),char(0),char(8),char(0),char(115),char(0),char(8),char(0),char(-127),char(0),char(8),char(0),char(-126),char(0),char(8),char(0),char(-125),char(0), +char(8),char(0),char(-124),char(0),char(8),char(0),char(-123),char(0),char(8),char(0),char(-122),char(0),char(8),char(0),char(-121),char(0),char(8),char(0),char(-120),char(0), +char(8),char(0),char(-119),char(0),char(8),char(0),char(-118),char(0),char(8),char(0),char(-117),char(0),char(4),char(0),char(-116),char(0),char(4),char(0),char(-115),char(0), +char(4),char(0),char(-114),char(0),char(4),char(0),char(-113),char(0),char(4),char(0),char(-112),char(0),char(0),char(0),char(37),char(0),char(52),char(0),char(22),char(0), +char(7),char(0),char(126),char(0),char(7),char(0),char(127),char(0),char(7),char(0),char(111),char(0),char(7),char(0),char(-128),char(0),char(7),char(0),char(115),char(0), +char(7),char(0),char(-127),char(0),char(7),char(0),char(-126),char(0),char(7),char(0),char(-125),char(0),char(7),char(0),char(-124),char(0),char(7),char(0),char(-123),char(0), +char(7),char(0),char(-122),char(0),char(7),char(0),char(-121),char(0),char(7),char(0),char(-120),char(0),char(7),char(0),char(-119),char(0),char(7),char(0),char(-118),char(0), +char(7),char(0),char(-117),char(0),char(4),char(0),char(-116),char(0),char(4),char(0),char(-115),char(0),char(4),char(0),char(-114),char(0),char(4),char(0),char(-113),char(0), +char(4),char(0),char(-112),char(0),char(0),char(0),char(37),char(0),char(53),char(0),char(2),char(0),char(51),char(0),char(-111),char(0),char(14),char(0),char(-110),char(0), +char(54),char(0),char(2),char(0),char(52),char(0),char(-111),char(0),char(13),char(0),char(-110),char(0),char(55),char(0),char(21),char(0),char(50),char(0),char(-109),char(0), +char(17),char(0),char(-108),char(0),char(13),char(0),char(-107),char(0),char(13),char(0),char(-106),char(0),char(13),char(0),char(-105),char(0),char(13),char(0),char(-104),char(0), +char(13),char(0),char(-110),char(0),char(13),char(0),char(-103),char(0),char(13),char(0),char(-102),char(0),char(13),char(0),char(-101),char(0),char(13),char(0),char(-100),char(0), +char(7),char(0),char(-99),char(0),char(7),char(0),char(-98),char(0),char(7),char(0),char(-97),char(0),char(7),char(0),char(-96),char(0),char(7),char(0),char(-95),char(0), +char(7),char(0),char(-94),char(0),char(7),char(0),char(-93),char(0),char(7),char(0),char(-92),char(0),char(7),char(0),char(-91),char(0),char(4),char(0),char(-90),char(0), +char(56),char(0),char(22),char(0),char(49),char(0),char(-109),char(0),char(18),char(0),char(-108),char(0),char(14),char(0),char(-107),char(0),char(14),char(0),char(-106),char(0), +char(14),char(0),char(-105),char(0),char(14),char(0),char(-104),char(0),char(14),char(0),char(-110),char(0),char(14),char(0),char(-103),char(0),char(14),char(0),char(-102),char(0), +char(14),char(0),char(-101),char(0),char(14),char(0),char(-100),char(0),char(8),char(0),char(-99),char(0),char(8),char(0),char(-98),char(0),char(8),char(0),char(-97),char(0), +char(8),char(0),char(-96),char(0),char(8),char(0),char(-95),char(0),char(8),char(0),char(-94),char(0),char(8),char(0),char(-93),char(0),char(8),char(0),char(-92),char(0), +char(8),char(0),char(-91),char(0),char(4),char(0),char(-90),char(0),char(0),char(0),char(37),char(0),char(57),char(0),char(2),char(0),char(4),char(0),char(-89),char(0), +char(4),char(0),char(-88),char(0),char(58),char(0),char(13),char(0),char(55),char(0),char(-87),char(0),char(55),char(0),char(-86),char(0),char(0),char(0),char(35),char(0), +char(4),char(0),char(-85),char(0),char(4),char(0),char(-84),char(0),char(4),char(0),char(-83),char(0),char(4),char(0),char(-82),char(0),char(7),char(0),char(-81),char(0), +char(7),char(0),char(-80),char(0),char(4),char(0),char(-79),char(0),char(4),char(0),char(-78),char(0),char(7),char(0),char(-77),char(0),char(4),char(0),char(-76),char(0), +char(59),char(0),char(13),char(0),char(60),char(0),char(-87),char(0),char(60),char(0),char(-86),char(0),char(0),char(0),char(35),char(0),char(4),char(0),char(-85),char(0), +char(4),char(0),char(-84),char(0),char(4),char(0),char(-83),char(0),char(4),char(0),char(-82),char(0),char(7),char(0),char(-81),char(0),char(7),char(0),char(-80),char(0), +char(4),char(0),char(-79),char(0),char(4),char(0),char(-78),char(0),char(7),char(0),char(-77),char(0),char(4),char(0),char(-76),char(0),char(61),char(0),char(14),char(0), +char(56),char(0),char(-87),char(0),char(56),char(0),char(-86),char(0),char(0),char(0),char(35),char(0),char(4),char(0),char(-85),char(0),char(4),char(0),char(-84),char(0), +char(4),char(0),char(-83),char(0),char(4),char(0),char(-82),char(0),char(8),char(0),char(-81),char(0),char(8),char(0),char(-80),char(0),char(4),char(0),char(-79),char(0), +char(4),char(0),char(-78),char(0),char(8),char(0),char(-77),char(0),char(4),char(0),char(-76),char(0),char(0),char(0),char(-75),char(0),char(62),char(0),char(3),char(0), +char(59),char(0),char(-74),char(0),char(13),char(0),char(-73),char(0),char(13),char(0),char(-72),char(0),char(63),char(0),char(3),char(0),char(61),char(0),char(-74),char(0), +char(14),char(0),char(-73),char(0),char(14),char(0),char(-72),char(0),char(64),char(0),char(3),char(0),char(59),char(0),char(-74),char(0),char(14),char(0),char(-73),char(0), +char(14),char(0),char(-72),char(0),char(65),char(0),char(13),char(0),char(59),char(0),char(-74),char(0),char(20),char(0),char(-71),char(0),char(20),char(0),char(-70),char(0), +char(4),char(0),char(-69),char(0),char(4),char(0),char(-68),char(0),char(4),char(0),char(-67),char(0),char(7),char(0),char(-66),char(0),char(7),char(0),char(-65),char(0), +char(7),char(0),char(-64),char(0),char(7),char(0),char(-63),char(0),char(7),char(0),char(-62),char(0),char(7),char(0),char(-61),char(0),char(7),char(0),char(-60),char(0), +char(66),char(0),char(13),char(0),char(59),char(0),char(-74),char(0),char(19),char(0),char(-71),char(0),char(19),char(0),char(-70),char(0),char(4),char(0),char(-69),char(0), +char(4),char(0),char(-68),char(0),char(4),char(0),char(-67),char(0),char(7),char(0),char(-66),char(0),char(7),char(0),char(-65),char(0),char(7),char(0),char(-64),char(0), +char(7),char(0),char(-63),char(0),char(7),char(0),char(-62),char(0),char(7),char(0),char(-61),char(0),char(7),char(0),char(-60),char(0),char(67),char(0),char(14),char(0), +char(61),char(0),char(-74),char(0),char(20),char(0),char(-71),char(0),char(20),char(0),char(-70),char(0),char(4),char(0),char(-69),char(0),char(4),char(0),char(-68),char(0), +char(4),char(0),char(-67),char(0),char(8),char(0),char(-66),char(0),char(8),char(0),char(-65),char(0),char(8),char(0),char(-64),char(0),char(8),char(0),char(-63),char(0), +char(8),char(0),char(-62),char(0),char(8),char(0),char(-61),char(0),char(8),char(0),char(-60),char(0),char(0),char(0),char(-59),char(0),char(68),char(0),char(10),char(0), +char(61),char(0),char(-74),char(0),char(20),char(0),char(-71),char(0),char(20),char(0),char(-70),char(0),char(8),char(0),char(-58),char(0),char(8),char(0),char(-57),char(0), +char(8),char(0),char(-56),char(0),char(8),char(0),char(-62),char(0),char(8),char(0),char(-61),char(0),char(8),char(0),char(-60),char(0),char(8),char(0),char(127),char(0), +char(69),char(0),char(11),char(0),char(59),char(0),char(-74),char(0),char(19),char(0),char(-71),char(0),char(19),char(0),char(-70),char(0),char(7),char(0),char(-58),char(0), +char(7),char(0),char(-57),char(0),char(7),char(0),char(-56),char(0),char(7),char(0),char(-62),char(0),char(7),char(0),char(-61),char(0),char(7),char(0),char(-60),char(0), +char(7),char(0),char(127),char(0),char(0),char(0),char(21),char(0),char(70),char(0),char(9),char(0),char(59),char(0),char(-74),char(0),char(19),char(0),char(-71),char(0), +char(19),char(0),char(-70),char(0),char(13),char(0),char(-55),char(0),char(13),char(0),char(-54),char(0),char(13),char(0),char(-53),char(0),char(13),char(0),char(-52),char(0), +char(4),char(0),char(-51),char(0),char(4),char(0),char(-50),char(0),char(71),char(0),char(9),char(0),char(61),char(0),char(-74),char(0),char(20),char(0),char(-71),char(0), +char(20),char(0),char(-70),char(0),char(14),char(0),char(-55),char(0),char(14),char(0),char(-54),char(0),char(14),char(0),char(-53),char(0),char(14),char(0),char(-52),char(0), +char(4),char(0),char(-51),char(0),char(4),char(0),char(-50),char(0),char(72),char(0),char(5),char(0),char(70),char(0),char(-49),char(0),char(4),char(0),char(-48),char(0), +char(7),char(0),char(-47),char(0),char(7),char(0),char(-46),char(0),char(7),char(0),char(-45),char(0),char(73),char(0),char(5),char(0),char(71),char(0),char(-49),char(0), +char(4),char(0),char(-48),char(0),char(8),char(0),char(-47),char(0),char(8),char(0),char(-46),char(0),char(8),char(0),char(-45),char(0),char(74),char(0),char(41),char(0), +char(59),char(0),char(-74),char(0),char(19),char(0),char(-71),char(0),char(19),char(0),char(-70),char(0),char(13),char(0),char(-55),char(0),char(13),char(0),char(-54),char(0), +char(13),char(0),char(-44),char(0),char(13),char(0),char(-43),char(0),char(13),char(0),char(-42),char(0),char(13),char(0),char(-41),char(0),char(13),char(0),char(-40),char(0), +char(13),char(0),char(-39),char(0),char(13),char(0),char(-38),char(0),char(13),char(0),char(-37),char(0),char(13),char(0),char(-36),char(0),char(13),char(0),char(-35),char(0), +char(13),char(0),char(-34),char(0),char(0),char(0),char(-33),char(0),char(0),char(0),char(-32),char(0),char(0),char(0),char(-31),char(0),char(0),char(0),char(-30),char(0), +char(0),char(0),char(-29),char(0),char(0),char(0),char(-59),char(0),char(13),char(0),char(-53),char(0),char(13),char(0),char(-52),char(0),char(13),char(0),char(-28),char(0), +char(13),char(0),char(-27),char(0),char(13),char(0),char(-26),char(0),char(13),char(0),char(-25),char(0),char(13),char(0),char(-24),char(0),char(13),char(0),char(-23),char(0), +char(13),char(0),char(-22),char(0),char(13),char(0),char(-21),char(0),char(13),char(0),char(-20),char(0),char(13),char(0),char(-19),char(0),char(13),char(0),char(-18),char(0), char(0),char(0),char(-17),char(0),char(0),char(0),char(-16),char(0),char(0),char(0),char(-15),char(0),char(0),char(0),char(-14),char(0),char(0),char(0),char(-13),char(0), -char(4),char(0),char(-12),char(0),char(76),char(0),char(9),char(0),char(59),char(0),char(-74),char(0),char(19),char(0),char(-71),char(0),char(19),char(0),char(-70),char(0), -char(7),char(0),char(-55),char(0),char(7),char(0),char(-54),char(0),char(7),char(0),char(-53),char(0),char(7),char(0),char(-52),char(0),char(4),char(0),char(-51),char(0), -char(4),char(0),char(-50),char(0),char(77),char(0),char(9),char(0),char(61),char(0),char(-74),char(0),char(20),char(0),char(-71),char(0),char(20),char(0),char(-70),char(0), -char(8),char(0),char(-55),char(0),char(8),char(0),char(-54),char(0),char(8),char(0),char(-53),char(0),char(8),char(0),char(-52),char(0),char(4),char(0),char(-51),char(0), -char(4),char(0),char(-50),char(0),char(78),char(0),char(5),char(0),char(58),char(0),char(-74),char(0),char(13),char(0),char(-11),char(0),char(13),char(0),char(-10),char(0), -char(7),char(0),char(-9),char(0),char(0),char(0),char(37),char(0),char(79),char(0),char(4),char(0),char(61),char(0),char(-74),char(0),char(14),char(0),char(-11),char(0), -char(14),char(0),char(-10),char(0),char(8),char(0),char(-9),char(0),char(80),char(0),char(4),char(0),char(7),char(0),char(-8),char(0),char(7),char(0),char(-7),char(0), -char(7),char(0),char(-6),char(0),char(4),char(0),char(79),char(0),char(81),char(0),char(10),char(0),char(80),char(0),char(-5),char(0),char(13),char(0),char(-4),char(0), -char(13),char(0),char(-3),char(0),char(13),char(0),char(-2),char(0),char(13),char(0),char(-1),char(0),char(13),char(0),char(0),char(1),char(7),char(0),char(-99),char(0), -char(7),char(0),char(1),char(1),char(4),char(0),char(2),char(1),char(4),char(0),char(53),char(0),char(82),char(0),char(4),char(0),char(80),char(0),char(-5),char(0), -char(4),char(0),char(3),char(1),char(7),char(0),char(4),char(1),char(4),char(0),char(5),char(1),char(83),char(0),char(4),char(0),char(13),char(0),char(0),char(1), -char(80),char(0),char(-5),char(0),char(4),char(0),char(6),char(1),char(7),char(0),char(7),char(1),char(84),char(0),char(7),char(0),char(13),char(0),char(8),char(1), -char(80),char(0),char(-5),char(0),char(4),char(0),char(9),char(1),char(7),char(0),char(10),char(1),char(7),char(0),char(11),char(1),char(7),char(0),char(12),char(1), -char(4),char(0),char(53),char(0),char(85),char(0),char(6),char(0),char(17),char(0),char(13),char(1),char(13),char(0),char(11),char(1),char(13),char(0),char(14),char(1), -char(60),char(0),char(15),char(1),char(4),char(0),char(16),char(1),char(7),char(0),char(12),char(1),char(86),char(0),char(26),char(0),char(4),char(0),char(17),char(1), -char(7),char(0),char(18),char(1),char(7),char(0),char(127),char(0),char(7),char(0),char(19),char(1),char(7),char(0),char(20),char(1),char(7),char(0),char(21),char(1), -char(7),char(0),char(22),char(1),char(7),char(0),char(23),char(1),char(7),char(0),char(24),char(1),char(7),char(0),char(25),char(1),char(7),char(0),char(26),char(1), -char(7),char(0),char(27),char(1),char(7),char(0),char(28),char(1),char(7),char(0),char(29),char(1),char(7),char(0),char(30),char(1),char(7),char(0),char(31),char(1), -char(7),char(0),char(32),char(1),char(7),char(0),char(33),char(1),char(7),char(0),char(34),char(1),char(7),char(0),char(35),char(1),char(7),char(0),char(36),char(1), -char(4),char(0),char(37),char(1),char(4),char(0),char(38),char(1),char(4),char(0),char(39),char(1),char(4),char(0),char(40),char(1),char(4),char(0),char(120),char(0), -char(87),char(0),char(12),char(0),char(17),char(0),char(41),char(1),char(17),char(0),char(42),char(1),char(17),char(0),char(43),char(1),char(13),char(0),char(44),char(1), -char(13),char(0),char(45),char(1),char(7),char(0),char(46),char(1),char(4),char(0),char(47),char(1),char(4),char(0),char(48),char(1),char(4),char(0),char(49),char(1), -char(4),char(0),char(50),char(1),char(7),char(0),char(10),char(1),char(4),char(0),char(53),char(0),char(88),char(0),char(27),char(0),char(19),char(0),char(51),char(1), -char(17),char(0),char(52),char(1),char(17),char(0),char(53),char(1),char(13),char(0),char(44),char(1),char(13),char(0),char(54),char(1),char(13),char(0),char(55),char(1), -char(13),char(0),char(56),char(1),char(13),char(0),char(57),char(1),char(13),char(0),char(58),char(1),char(4),char(0),char(59),char(1),char(7),char(0),char(60),char(1), -char(4),char(0),char(61),char(1),char(4),char(0),char(62),char(1),char(4),char(0),char(63),char(1),char(7),char(0),char(64),char(1),char(7),char(0),char(65),char(1), -char(4),char(0),char(66),char(1),char(4),char(0),char(67),char(1),char(7),char(0),char(68),char(1),char(7),char(0),char(69),char(1),char(7),char(0),char(70),char(1), -char(7),char(0),char(71),char(1),char(7),char(0),char(72),char(1),char(7),char(0),char(73),char(1),char(4),char(0),char(74),char(1),char(4),char(0),char(75),char(1), -char(4),char(0),char(76),char(1),char(89),char(0),char(12),char(0),char(9),char(0),char(77),char(1),char(9),char(0),char(78),char(1),char(13),char(0),char(79),char(1), -char(7),char(0),char(80),char(1),char(7),char(0),char(-125),char(0),char(7),char(0),char(81),char(1),char(4),char(0),char(82),char(1),char(13),char(0),char(83),char(1), -char(4),char(0),char(84),char(1),char(4),char(0),char(85),char(1),char(4),char(0),char(86),char(1),char(4),char(0),char(53),char(0),char(90),char(0),char(19),char(0), -char(50),char(0),char(-109),char(0),char(87),char(0),char(87),char(1),char(80),char(0),char(88),char(1),char(81),char(0),char(89),char(1),char(82),char(0),char(90),char(1), -char(83),char(0),char(91),char(1),char(84),char(0),char(92),char(1),char(85),char(0),char(93),char(1),char(88),char(0),char(94),char(1),char(89),char(0),char(95),char(1), -char(4),char(0),char(96),char(1),char(4),char(0),char(62),char(1),char(4),char(0),char(97),char(1),char(4),char(0),char(98),char(1),char(4),char(0),char(99),char(1), -char(4),char(0),char(100),char(1),char(4),char(0),char(101),char(1),char(4),char(0),char(102),char(1),char(86),char(0),char(103),char(1),char(91),char(0),char(20),char(0), -char(16),char(0),char(104),char(1),char(14),char(0),char(105),char(1),char(14),char(0),char(106),char(1),char(14),char(0),char(107),char(1),char(14),char(0),char(108),char(1), -char(14),char(0),char(109),char(1),char(8),char(0),char(110),char(1),char(4),char(0),char(111),char(1),char(4),char(0),char(86),char(1),char(4),char(0),char(112),char(1), -char(4),char(0),char(113),char(1),char(8),char(0),char(114),char(1),char(8),char(0),char(115),char(1),char(8),char(0),char(116),char(1),char(8),char(0),char(117),char(1), -char(8),char(0),char(118),char(1),char(0),char(0),char(119),char(1),char(0),char(0),char(120),char(1),char(49),char(0),char(121),char(1),char(0),char(0),char(122),char(1), -char(92),char(0),char(20),char(0),char(15),char(0),char(104),char(1),char(13),char(0),char(105),char(1),char(13),char(0),char(106),char(1),char(13),char(0),char(107),char(1), -char(13),char(0),char(108),char(1),char(13),char(0),char(109),char(1),char(4),char(0),char(112),char(1),char(7),char(0),char(110),char(1),char(4),char(0),char(111),char(1), -char(4),char(0),char(86),char(1),char(7),char(0),char(114),char(1),char(7),char(0),char(115),char(1),char(7),char(0),char(116),char(1),char(4),char(0),char(113),char(1), -char(7),char(0),char(117),char(1),char(7),char(0),char(118),char(1),char(0),char(0),char(119),char(1),char(0),char(0),char(120),char(1),char(50),char(0),char(121),char(1), -char(0),char(0),char(122),char(1),char(93),char(0),char(9),char(0),char(20),char(0),char(123),char(1),char(14),char(0),char(124),char(1),char(8),char(0),char(125),char(1), -char(0),char(0),char(126),char(1),char(91),char(0),char(90),char(1),char(49),char(0),char(127),char(1),char(0),char(0),char(122),char(1),char(4),char(0),char(97),char(1), -char(0),char(0),char(37),char(0),char(94),char(0),char(7),char(0),char(0),char(0),char(126),char(1),char(92),char(0),char(90),char(1),char(50),char(0),char(127),char(1), -char(19),char(0),char(123),char(1),char(13),char(0),char(124),char(1),char(7),char(0),char(125),char(1),char(4),char(0),char(97),char(1),}; +char(4),char(0),char(-12),char(0),char(75),char(0),char(41),char(0),char(61),char(0),char(-74),char(0),char(20),char(0),char(-71),char(0),char(20),char(0),char(-70),char(0), +char(14),char(0),char(-55),char(0),char(14),char(0),char(-54),char(0),char(14),char(0),char(-44),char(0),char(14),char(0),char(-43),char(0),char(14),char(0),char(-42),char(0), +char(14),char(0),char(-41),char(0),char(14),char(0),char(-40),char(0),char(14),char(0),char(-39),char(0),char(14),char(0),char(-38),char(0),char(14),char(0),char(-37),char(0), +char(14),char(0),char(-36),char(0),char(14),char(0),char(-35),char(0),char(14),char(0),char(-34),char(0),char(0),char(0),char(-33),char(0),char(0),char(0),char(-32),char(0), +char(0),char(0),char(-31),char(0),char(0),char(0),char(-30),char(0),char(0),char(0),char(-29),char(0),char(0),char(0),char(-59),char(0),char(14),char(0),char(-53),char(0), +char(14),char(0),char(-52),char(0),char(14),char(0),char(-28),char(0),char(14),char(0),char(-27),char(0),char(14),char(0),char(-26),char(0),char(14),char(0),char(-25),char(0), +char(14),char(0),char(-24),char(0),char(14),char(0),char(-23),char(0),char(14),char(0),char(-22),char(0),char(14),char(0),char(-21),char(0),char(14),char(0),char(-20),char(0), +char(14),char(0),char(-19),char(0),char(14),char(0),char(-18),char(0),char(0),char(0),char(-17),char(0),char(0),char(0),char(-16),char(0),char(0),char(0),char(-15),char(0), +char(0),char(0),char(-14),char(0),char(0),char(0),char(-13),char(0),char(4),char(0),char(-12),char(0),char(76),char(0),char(9),char(0),char(59),char(0),char(-74),char(0), +char(19),char(0),char(-71),char(0),char(19),char(0),char(-70),char(0),char(7),char(0),char(-55),char(0),char(7),char(0),char(-54),char(0),char(7),char(0),char(-53),char(0), +char(7),char(0),char(-52),char(0),char(4),char(0),char(-51),char(0),char(4),char(0),char(-50),char(0),char(77),char(0),char(9),char(0),char(61),char(0),char(-74),char(0), +char(20),char(0),char(-71),char(0),char(20),char(0),char(-70),char(0),char(8),char(0),char(-55),char(0),char(8),char(0),char(-54),char(0),char(8),char(0),char(-53),char(0), +char(8),char(0),char(-52),char(0),char(4),char(0),char(-51),char(0),char(4),char(0),char(-50),char(0),char(78),char(0),char(5),char(0),char(58),char(0),char(-74),char(0), +char(13),char(0),char(-11),char(0),char(13),char(0),char(-10),char(0),char(7),char(0),char(-9),char(0),char(0),char(0),char(37),char(0),char(79),char(0),char(4),char(0), +char(61),char(0),char(-74),char(0),char(14),char(0),char(-11),char(0),char(14),char(0),char(-10),char(0),char(8),char(0),char(-9),char(0),char(80),char(0),char(4),char(0), +char(7),char(0),char(-8),char(0),char(7),char(0),char(-7),char(0),char(7),char(0),char(-6),char(0),char(4),char(0),char(79),char(0),char(81),char(0),char(10),char(0), +char(80),char(0),char(-5),char(0),char(13),char(0),char(-4),char(0),char(13),char(0),char(-3),char(0),char(13),char(0),char(-2),char(0),char(13),char(0),char(-1),char(0), +char(13),char(0),char(0),char(1),char(7),char(0),char(-99),char(0),char(7),char(0),char(1),char(1),char(4),char(0),char(2),char(1),char(4),char(0),char(53),char(0), +char(82),char(0),char(4),char(0),char(80),char(0),char(-5),char(0),char(4),char(0),char(3),char(1),char(7),char(0),char(4),char(1),char(4),char(0),char(5),char(1), +char(83),char(0),char(4),char(0),char(13),char(0),char(0),char(1),char(80),char(0),char(-5),char(0),char(4),char(0),char(6),char(1),char(7),char(0),char(7),char(1), +char(84),char(0),char(7),char(0),char(13),char(0),char(8),char(1),char(80),char(0),char(-5),char(0),char(4),char(0),char(9),char(1),char(7),char(0),char(10),char(1), +char(7),char(0),char(11),char(1),char(7),char(0),char(12),char(1),char(4),char(0),char(53),char(0),char(85),char(0),char(6),char(0),char(17),char(0),char(13),char(1), +char(13),char(0),char(11),char(1),char(13),char(0),char(14),char(1),char(60),char(0),char(15),char(1),char(4),char(0),char(16),char(1),char(7),char(0),char(12),char(1), +char(86),char(0),char(26),char(0),char(4),char(0),char(17),char(1),char(7),char(0),char(18),char(1),char(7),char(0),char(127),char(0),char(7),char(0),char(19),char(1), +char(7),char(0),char(20),char(1),char(7),char(0),char(21),char(1),char(7),char(0),char(22),char(1),char(7),char(0),char(23),char(1),char(7),char(0),char(24),char(1), +char(7),char(0),char(25),char(1),char(7),char(0),char(26),char(1),char(7),char(0),char(27),char(1),char(7),char(0),char(28),char(1),char(7),char(0),char(29),char(1), +char(7),char(0),char(30),char(1),char(7),char(0),char(31),char(1),char(7),char(0),char(32),char(1),char(7),char(0),char(33),char(1),char(7),char(0),char(34),char(1), +char(7),char(0),char(35),char(1),char(7),char(0),char(36),char(1),char(4),char(0),char(37),char(1),char(4),char(0),char(38),char(1),char(4),char(0),char(39),char(1), +char(4),char(0),char(40),char(1),char(4),char(0),char(120),char(0),char(87),char(0),char(12),char(0),char(17),char(0),char(41),char(1),char(17),char(0),char(42),char(1), +char(17),char(0),char(43),char(1),char(13),char(0),char(44),char(1),char(13),char(0),char(45),char(1),char(7),char(0),char(46),char(1),char(4),char(0),char(47),char(1), +char(4),char(0),char(48),char(1),char(4),char(0),char(49),char(1),char(4),char(0),char(50),char(1),char(7),char(0),char(10),char(1),char(4),char(0),char(53),char(0), +char(88),char(0),char(27),char(0),char(19),char(0),char(51),char(1),char(17),char(0),char(52),char(1),char(17),char(0),char(53),char(1),char(13),char(0),char(44),char(1), +char(13),char(0),char(54),char(1),char(13),char(0),char(55),char(1),char(13),char(0),char(56),char(1),char(13),char(0),char(57),char(1),char(13),char(0),char(58),char(1), +char(4),char(0),char(59),char(1),char(7),char(0),char(60),char(1),char(4),char(0),char(61),char(1),char(4),char(0),char(62),char(1),char(4),char(0),char(63),char(1), +char(7),char(0),char(64),char(1),char(7),char(0),char(65),char(1),char(4),char(0),char(66),char(1),char(4),char(0),char(67),char(1),char(7),char(0),char(68),char(1), +char(7),char(0),char(69),char(1),char(7),char(0),char(70),char(1),char(7),char(0),char(71),char(1),char(7),char(0),char(72),char(1),char(7),char(0),char(73),char(1), +char(4),char(0),char(74),char(1),char(4),char(0),char(75),char(1),char(4),char(0),char(76),char(1),char(89),char(0),char(12),char(0),char(9),char(0),char(77),char(1), +char(9),char(0),char(78),char(1),char(13),char(0),char(79),char(1),char(7),char(0),char(80),char(1),char(7),char(0),char(-125),char(0),char(7),char(0),char(81),char(1), +char(4),char(0),char(82),char(1),char(13),char(0),char(83),char(1),char(4),char(0),char(84),char(1),char(4),char(0),char(85),char(1),char(4),char(0),char(86),char(1), +char(4),char(0),char(53),char(0),char(90),char(0),char(19),char(0),char(50),char(0),char(-109),char(0),char(87),char(0),char(87),char(1),char(80),char(0),char(88),char(1), +char(81),char(0),char(89),char(1),char(82),char(0),char(90),char(1),char(83),char(0),char(91),char(1),char(84),char(0),char(92),char(1),char(85),char(0),char(93),char(1), +char(88),char(0),char(94),char(1),char(89),char(0),char(95),char(1),char(4),char(0),char(96),char(1),char(4),char(0),char(62),char(1),char(4),char(0),char(97),char(1), +char(4),char(0),char(98),char(1),char(4),char(0),char(99),char(1),char(4),char(0),char(100),char(1),char(4),char(0),char(101),char(1),char(4),char(0),char(102),char(1), +char(86),char(0),char(103),char(1),char(91),char(0),char(24),char(0),char(16),char(0),char(104),char(1),char(14),char(0),char(105),char(1),char(14),char(0),char(106),char(1), +char(14),char(0),char(107),char(1),char(14),char(0),char(108),char(1),char(14),char(0),char(109),char(1),char(8),char(0),char(110),char(1),char(4),char(0),char(111),char(1), +char(4),char(0),char(86),char(1),char(4),char(0),char(112),char(1),char(4),char(0),char(113),char(1),char(8),char(0),char(114),char(1),char(8),char(0),char(115),char(1), +char(8),char(0),char(116),char(1),char(8),char(0),char(117),char(1),char(8),char(0),char(118),char(1),char(8),char(0),char(119),char(1),char(8),char(0),char(120),char(1), +char(8),char(0),char(121),char(1),char(8),char(0),char(122),char(1),char(0),char(0),char(123),char(1),char(0),char(0),char(124),char(1),char(49),char(0),char(125),char(1), +char(0),char(0),char(126),char(1),char(92),char(0),char(24),char(0),char(15),char(0),char(104),char(1),char(13),char(0),char(105),char(1),char(13),char(0),char(106),char(1), +char(13),char(0),char(107),char(1),char(13),char(0),char(108),char(1),char(13),char(0),char(109),char(1),char(4),char(0),char(112),char(1),char(7),char(0),char(110),char(1), +char(4),char(0),char(111),char(1),char(4),char(0),char(86),char(1),char(7),char(0),char(114),char(1),char(7),char(0),char(115),char(1),char(7),char(0),char(116),char(1), +char(4),char(0),char(113),char(1),char(7),char(0),char(117),char(1),char(7),char(0),char(118),char(1),char(7),char(0),char(119),char(1),char(7),char(0),char(120),char(1), +char(7),char(0),char(121),char(1),char(7),char(0),char(122),char(1),char(0),char(0),char(123),char(1),char(0),char(0),char(124),char(1),char(50),char(0),char(125),char(1), +char(0),char(0),char(126),char(1),char(93),char(0),char(9),char(0),char(20),char(0),char(127),char(1),char(14),char(0),char(-128),char(1),char(8),char(0),char(-127),char(1), +char(0),char(0),char(-126),char(1),char(91),char(0),char(90),char(1),char(49),char(0),char(-125),char(1),char(0),char(0),char(126),char(1),char(4),char(0),char(97),char(1), +char(0),char(0),char(37),char(0),char(94),char(0),char(7),char(0),char(0),char(0),char(-126),char(1),char(92),char(0),char(90),char(1),char(50),char(0),char(-125),char(1), +char(19),char(0),char(127),char(1),char(13),char(0),char(-128),char(1),char(7),char(0),char(-127),char(1),char(4),char(0),char(97),char(1),}; int sBulletDNAlen= sizeof(sBulletDNAstr); - -char sBulletDNAstr64[]= { -char(83),char(68),char(78),char(65),char(78),char(65),char(77),char(69),char(-128),char(1),char(0),char(0),char(109),char(95),char(115),char(105),char(122),char(101),char(0),char(109), -char(95),char(99),char(97),char(112),char(97),char(99),char(105),char(116),char(121),char(0),char(42),char(109),char(95),char(100),char(97),char(116),char(97),char(0),char(109),char(95), -char(99),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(83),char(104),char(97),char(112),char(101),char(115),char(0),char(109),char(95),char(99),char(111), -char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(79),char(98),char(106),char(101),char(99),char(116),char(115),char(0),char(109),char(95),char(99),char(111),char(110), -char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(115),char(0),char(42),char(102),char(105),char(114),char(115),char(116),char(0),char(42),char(108),char(97),char(115), -char(116),char(0),char(109),char(95),char(102),char(108),char(111),char(97),char(116),char(115),char(91),char(52),char(93),char(0),char(109),char(95),char(101),char(108),char(91),char(51), -char(93),char(0),char(109),char(95),char(98),char(97),char(115),char(105),char(115),char(0),char(109),char(95),char(111),char(114),char(105),char(103),char(105),char(110),char(0),char(109), -char(95),char(114),char(111),char(111),char(116),char(78),char(111),char(100),char(101),char(73),char(110),char(100),char(101),char(120),char(0),char(109),char(95),char(115),char(117),char(98), -char(116),char(114),char(101),char(101),char(83),char(105),char(122),char(101),char(0),char(109),char(95),char(113),char(117),char(97),char(110),char(116),char(105),char(122),char(101),char(100), -char(65),char(97),char(98),char(98),char(77),char(105),char(110),char(91),char(51),char(93),char(0),char(109),char(95),char(113),char(117),char(97),char(110),char(116),char(105),char(122), -char(101),char(100),char(65),char(97),char(98),char(98),char(77),char(97),char(120),char(91),char(51),char(93),char(0),char(109),char(95),char(97),char(97),char(98),char(98),char(77), -char(105),char(110),char(79),char(114),char(103),char(0),char(109),char(95),char(97),char(97),char(98),char(98),char(77),char(97),char(120),char(79),char(114),char(103),char(0),char(109), -char(95),char(101),char(115),char(99),char(97),char(112),char(101),char(73),char(110),char(100),char(101),char(120),char(0),char(109),char(95),char(115),char(117),char(98),char(80),char(97), -char(114),char(116),char(0),char(109),char(95),char(116),char(114),char(105),char(97),char(110),char(103),char(108),char(101),char(73),char(110),char(100),char(101),char(120),char(0),char(109), -char(95),char(112),char(97),char(100),char(91),char(52),char(93),char(0),char(109),char(95),char(101),char(115),char(99),char(97),char(112),char(101),char(73),char(110),char(100),char(101), -char(120),char(79),char(114),char(84),char(114),char(105),char(97),char(110),char(103),char(108),char(101),char(73),char(110),char(100),char(101),char(120),char(0),char(109),char(95),char(98), -char(118),char(104),char(65),char(97),char(98),char(98),char(77),char(105),char(110),char(0),char(109),char(95),char(98),char(118),char(104),char(65),char(97),char(98),char(98),char(77), -char(97),char(120),char(0),char(109),char(95),char(98),char(118),char(104),char(81),char(117),char(97),char(110),char(116),char(105),char(122),char(97),char(116),char(105),char(111),char(110), -char(0),char(109),char(95),char(99),char(117),char(114),char(78),char(111),char(100),char(101),char(73),char(110),char(100),char(101),char(120),char(0),char(109),char(95),char(117),char(115), -char(101),char(81),char(117),char(97),char(110),char(116),char(105),char(122),char(97),char(116),char(105),char(111),char(110),char(0),char(109),char(95),char(110),char(117),char(109),char(67), -char(111),char(110),char(116),char(105),char(103),char(117),char(111),char(117),char(115),char(76),char(101),char(97),char(102),char(78),char(111),char(100),char(101),char(115),char(0),char(109), -char(95),char(110),char(117),char(109),char(81),char(117),char(97),char(110),char(116),char(105),char(122),char(101),char(100),char(67),char(111),char(110),char(116),char(105),char(103),char(117), -char(111),char(117),char(115),char(78),char(111),char(100),char(101),char(115),char(0),char(42),char(109),char(95),char(99),char(111),char(110),char(116),char(105),char(103),char(117),char(111), -char(117),char(115),char(78),char(111),char(100),char(101),char(115),char(80),char(116),char(114),char(0),char(42),char(109),char(95),char(113),char(117),char(97),char(110),char(116),char(105), -char(122),char(101),char(100),char(67),char(111),char(110),char(116),char(105),char(103),char(117),char(111),char(117),char(115),char(78),char(111),char(100),char(101),char(115),char(80),char(116), -char(114),char(0),char(42),char(109),char(95),char(115),char(117),char(98),char(84),char(114),char(101),char(101),char(73),char(110),char(102),char(111),char(80),char(116),char(114),char(0), -char(109),char(95),char(116),char(114),char(97),char(118),char(101),char(114),char(115),char(97),char(108),char(77),char(111),char(100),char(101),char(0),char(109),char(95),char(110),char(117), -char(109),char(83),char(117),char(98),char(116),char(114),char(101),char(101),char(72),char(101),char(97),char(100),char(101),char(114),char(115),char(0),char(42),char(109),char(95),char(110), -char(97),char(109),char(101),char(0),char(109),char(95),char(115),char(104),char(97),char(112),char(101),char(84),char(121),char(112),char(101),char(0),char(109),char(95),char(112),char(97), -char(100),char(100),char(105),char(110),char(103),char(91),char(52),char(93),char(0),char(109),char(95),char(99),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110), -char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(109),char(95),char(108),char(111),char(99),char(97),char(108),char(83),char(99),char(97), -char(108),char(105),char(110),char(103),char(0),char(109),char(95),char(112),char(108),char(97),char(110),char(101),char(78),char(111),char(114),char(109),char(97),char(108),char(0),char(109), -char(95),char(112),char(108),char(97),char(110),char(101),char(67),char(111),char(110),char(115),char(116),char(97),char(110),char(116),char(0),char(109),char(95),char(105),char(109),char(112), -char(108),char(105),char(99),char(105),char(116),char(83),char(104),char(97),char(112),char(101),char(68),char(105),char(109),char(101),char(110),char(115),char(105),char(111),char(110),char(115), -char(0),char(109),char(95),char(99),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(77),char(97),char(114),char(103),char(105),char(110),char(0),char(109), -char(95),char(112),char(97),char(100),char(100),char(105),char(110),char(103),char(0),char(109),char(95),char(112),char(111),char(115),char(0),char(109),char(95),char(114),char(97),char(100), -char(105),char(117),char(115),char(0),char(109),char(95),char(99),char(111),char(110),char(118),char(101),char(120),char(73),char(110),char(116),char(101),char(114),char(110),char(97),char(108), -char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(42),char(109),char(95),char(108),char(111),char(99),char(97),char(108),char(80),char(111), -char(115),char(105),char(116),char(105),char(111),char(110),char(65),char(114),char(114),char(97),char(121),char(80),char(116),char(114),char(0),char(109),char(95),char(108),char(111),char(99), -char(97),char(108),char(80),char(111),char(115),char(105),char(116),char(105),char(111),char(110),char(65),char(114),char(114),char(97),char(121),char(83),char(105),char(122),char(101),char(0), -char(109),char(95),char(118),char(97),char(108),char(117),char(101),char(0),char(109),char(95),char(112),char(97),char(100),char(91),char(50),char(93),char(0),char(109),char(95),char(118), -char(97),char(108),char(117),char(101),char(115),char(91),char(51),char(93),char(0),char(109),char(95),char(112),char(97),char(100),char(0),char(42),char(109),char(95),char(118),char(101), -char(114),char(116),char(105),char(99),char(101),char(115),char(51),char(102),char(0),char(42),char(109),char(95),char(118),char(101),char(114),char(116),char(105),char(99),char(101),char(115), -char(51),char(100),char(0),char(42),char(109),char(95),char(105),char(110),char(100),char(105),char(99),char(101),char(115),char(51),char(50),char(0),char(42),char(109),char(95),char(51), -char(105),char(110),char(100),char(105),char(99),char(101),char(115),char(49),char(54),char(0),char(42),char(109),char(95),char(51),char(105),char(110),char(100),char(105),char(99),char(101), -char(115),char(56),char(0),char(42),char(109),char(95),char(105),char(110),char(100),char(105),char(99),char(101),char(115),char(49),char(54),char(0),char(109),char(95),char(110),char(117), -char(109),char(84),char(114),char(105),char(97),char(110),char(103),char(108),char(101),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(86),char(101),char(114),char(116), -char(105),char(99),char(101),char(115),char(0),char(42),char(109),char(95),char(109),char(101),char(115),char(104),char(80),char(97),char(114),char(116),char(115),char(80),char(116),char(114), -char(0),char(109),char(95),char(115),char(99),char(97),char(108),char(105),char(110),char(103),char(0),char(109),char(95),char(110),char(117),char(109),char(77),char(101),char(115),char(104), -char(80),char(97),char(114),char(116),char(115),char(0),char(109),char(95),char(109),char(101),char(115),char(104),char(73),char(110),char(116),char(101),char(114),char(102),char(97),char(99), -char(101),char(0),char(42),char(109),char(95),char(113),char(117),char(97),char(110),char(116),char(105),char(122),char(101),char(100),char(70),char(108),char(111),char(97),char(116),char(66), -char(118),char(104),char(0),char(42),char(109),char(95),char(113),char(117),char(97),char(110),char(116),char(105),char(122),char(101),char(100),char(68),char(111),char(117),char(98),char(108), -char(101),char(66),char(118),char(104),char(0),char(42),char(109),char(95),char(116),char(114),char(105),char(97),char(110),char(103),char(108),char(101),char(73),char(110),char(102),char(111), -char(77),char(97),char(112),char(0),char(109),char(95),char(112),char(97),char(100),char(51),char(91),char(52),char(93),char(0),char(109),char(95),char(116),char(114),char(105),char(109), -char(101),char(115),char(104),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(109),char(95),char(116),char(114),char(97),char(110),char(115), -char(102),char(111),char(114),char(109),char(0),char(42),char(109),char(95),char(99),char(104),char(105),char(108),char(100),char(83),char(104),char(97),char(112),char(101),char(0),char(109), -char(95),char(99),char(104),char(105),char(108),char(100),char(83),char(104),char(97),char(112),char(101),char(84),char(121),char(112),char(101),char(0),char(109),char(95),char(99),char(104), -char(105),char(108),char(100),char(77),char(97),char(114),char(103),char(105),char(110),char(0),char(42),char(109),char(95),char(99),char(104),char(105),char(108),char(100),char(83),char(104), -char(97),char(112),char(101),char(80),char(116),char(114),char(0),char(109),char(95),char(110),char(117),char(109),char(67),char(104),char(105),char(108),char(100),char(83),char(104),char(97), -char(112),char(101),char(115),char(0),char(109),char(95),char(117),char(112),char(65),char(120),char(105),char(115),char(0),char(109),char(95),char(117),char(112),char(73),char(110),char(100), -char(101),char(120),char(0),char(109),char(95),char(102),char(108),char(97),char(103),char(115),char(0),char(109),char(95),char(101),char(100),char(103),char(101),char(86),char(48),char(86), -char(49),char(65),char(110),char(103),char(108),char(101),char(0),char(109),char(95),char(101),char(100),char(103),char(101),char(86),char(49),char(86),char(50),char(65),char(110),char(103), -char(108),char(101),char(0),char(109),char(95),char(101),char(100),char(103),char(101),char(86),char(50),char(86),char(48),char(65),char(110),char(103),char(108),char(101),char(0),char(42), -char(109),char(95),char(104),char(97),char(115),char(104),char(84),char(97),char(98),char(108),char(101),char(80),char(116),char(114),char(0),char(42),char(109),char(95),char(110),char(101), -char(120),char(116),char(80),char(116),char(114),char(0),char(42),char(109),char(95),char(118),char(97),char(108),char(117),char(101),char(65),char(114),char(114),char(97),char(121),char(80), -char(116),char(114),char(0),char(42),char(109),char(95),char(107),char(101),char(121),char(65),char(114),char(114),char(97),char(121),char(80),char(116),char(114),char(0),char(109),char(95), -char(99),char(111),char(110),char(118),char(101),char(120),char(69),char(112),char(115),char(105),char(108),char(111),char(110),char(0),char(109),char(95),char(112),char(108),char(97),char(110), -char(97),char(114),char(69),char(112),char(115),char(105),char(108),char(111),char(110),char(0),char(109),char(95),char(101),char(113),char(117),char(97),char(108),char(86),char(101),char(114), -char(116),char(101),char(120),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),char(95),char(101),char(100),char(103),char(101),char(68), -char(105),char(115),char(116),char(97),char(110),char(99),char(101),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),char(95),char(122), -char(101),char(114),char(111),char(65),char(114),char(101),char(97),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),char(95),char(110), -char(101),char(120),char(116),char(83),char(105),char(122),char(101),char(0),char(109),char(95),char(104),char(97),char(115),char(104),char(84),char(97),char(98),char(108),char(101),char(83), -char(105),char(122),char(101),char(0),char(109),char(95),char(110),char(117),char(109),char(86),char(97),char(108),char(117),char(101),char(115),char(0),char(109),char(95),char(110),char(117), -char(109),char(75),char(101),char(121),char(115),char(0),char(109),char(95),char(103),char(105),char(109),char(112),char(97),char(99),char(116),char(83),char(117),char(98),char(84),char(121), -char(112),char(101),char(0),char(42),char(109),char(95),char(117),char(110),char(115),char(99),char(97),char(108),char(101),char(100),char(80),char(111),char(105),char(110),char(116),char(115), -char(70),char(108),char(111),char(97),char(116),char(80),char(116),char(114),char(0),char(42),char(109),char(95),char(117),char(110),char(115),char(99),char(97),char(108),char(101),char(100), -char(80),char(111),char(105),char(110),char(116),char(115),char(68),char(111),char(117),char(98),char(108),char(101),char(80),char(116),char(114),char(0),char(109),char(95),char(110),char(117), -char(109),char(85),char(110),char(115),char(99),char(97),char(108),char(101),char(100),char(80),char(111),char(105),char(110),char(116),char(115),char(0),char(109),char(95),char(112),char(97), -char(100),char(100),char(105),char(110),char(103),char(51),char(91),char(52),char(93),char(0),char(42),char(109),char(95),char(98),char(114),char(111),char(97),char(100),char(112),char(104), -char(97),char(115),char(101),char(72),char(97),char(110),char(100),char(108),char(101),char(0),char(42),char(109),char(95),char(99),char(111),char(108),char(108),char(105),char(115),char(105), -char(111),char(110),char(83),char(104),char(97),char(112),char(101),char(0),char(42),char(109),char(95),char(114),char(111),char(111),char(116),char(67),char(111),char(108),char(108),char(105), -char(115),char(105),char(111),char(110),char(83),char(104),char(97),char(112),char(101),char(0),char(109),char(95),char(119),char(111),char(114),char(108),char(100),char(84),char(114),char(97), -char(110),char(115),char(102),char(111),char(114),char(109),char(0),char(109),char(95),char(105),char(110),char(116),char(101),char(114),char(112),char(111),char(108),char(97),char(116),char(105), -char(111),char(110),char(87),char(111),char(114),char(108),char(100),char(84),char(114),char(97),char(110),char(115),char(102),char(111),char(114),char(109),char(0),char(109),char(95),char(105), -char(110),char(116),char(101),char(114),char(112),char(111),char(108),char(97),char(116),char(105),char(111),char(110),char(76),char(105),char(110),char(101),char(97),char(114),char(86),char(101), -char(108),char(111),char(99),char(105),char(116),char(121),char(0),char(109),char(95),char(105),char(110),char(116),char(101),char(114),char(112),char(111),char(108),char(97),char(116),char(105), -char(111),char(110),char(65),char(110),char(103),char(117),char(108),char(97),char(114),char(86),char(101),char(108),char(111),char(99),char(105),char(116),char(121),char(0),char(109),char(95), -char(97),char(110),char(105),char(115),char(111),char(116),char(114),char(111),char(112),char(105),char(99),char(70),char(114),char(105),char(99),char(116),char(105),char(111),char(110),char(0), -char(109),char(95),char(99),char(111),char(110),char(116),char(97),char(99),char(116),char(80),char(114),char(111),char(99),char(101),char(115),char(115),char(105),char(110),char(103),char(84), -char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),char(95),char(100),char(101),char(97),char(99),char(116),char(105),char(118),char(97),char(116), -char(105),char(111),char(110),char(84),char(105),char(109),char(101),char(0),char(109),char(95),char(102),char(114),char(105),char(99),char(116),char(105),char(111),char(110),char(0),char(109), -char(95),char(114),char(111),char(108),char(108),char(105),char(110),char(103),char(70),char(114),char(105),char(99),char(116),char(105),char(111),char(110),char(0),char(109),char(95),char(99), -char(111),char(110),char(116),char(97),char(99),char(116),char(68),char(97),char(109),char(112),char(105),char(110),char(103),char(0),char(109),char(95),char(99),char(111),char(110),char(116), -char(97),char(99),char(116),char(83),char(116),char(105),char(102),char(102),char(110),char(101),char(115),char(115),char(0),char(109),char(95),char(114),char(101),char(115),char(116),char(105), -char(116),char(117),char(116),char(105),char(111),char(110),char(0),char(109),char(95),char(104),char(105),char(116),char(70),char(114),char(97),char(99),char(116),char(105),char(111),char(110), -char(0),char(109),char(95),char(99),char(99),char(100),char(83),char(119),char(101),char(112),char(116),char(83),char(112),char(104),char(101),char(114),char(101),char(82),char(97),char(100), -char(105),char(117),char(115),char(0),char(109),char(95),char(99),char(99),char(100),char(77),char(111),char(116),char(105),char(111),char(110),char(84),char(104),char(114),char(101),char(115), -char(104),char(111),char(108),char(100),char(0),char(109),char(95),char(104),char(97),char(115),char(65),char(110),char(105),char(115),char(111),char(116),char(114),char(111),char(112),char(105), -char(99),char(70),char(114),char(105),char(99),char(116),char(105),char(111),char(110),char(0),char(109),char(95),char(99),char(111),char(108),char(108),char(105),char(115),char(105),char(111), -char(110),char(70),char(108),char(97),char(103),char(115),char(0),char(109),char(95),char(105),char(115),char(108),char(97),char(110),char(100),char(84),char(97),char(103),char(49),char(0), -char(109),char(95),char(99),char(111),char(109),char(112),char(97),char(110),char(105),char(111),char(110),char(73),char(100),char(0),char(109),char(95),char(97),char(99),char(116),char(105), -char(118),char(97),char(116),char(105),char(111),char(110),char(83),char(116),char(97),char(116),char(101),char(49),char(0),char(109),char(95),char(105),char(110),char(116),char(101),char(114), -char(110),char(97),char(108),char(84),char(121),char(112),char(101),char(0),char(109),char(95),char(99),char(104),char(101),char(99),char(107),char(67),char(111),char(108),char(108),char(105), -char(100),char(101),char(87),char(105),char(116),char(104),char(0),char(109),char(95),char(116),char(97),char(117),char(0),char(109),char(95),char(100),char(97),char(109),char(112),char(105), -char(110),char(103),char(0),char(109),char(95),char(116),char(105),char(109),char(101),char(83),char(116),char(101),char(112),char(0),char(109),char(95),char(109),char(97),char(120),char(69), -char(114),char(114),char(111),char(114),char(82),char(101),char(100),char(117),char(99),char(116),char(105),char(111),char(110),char(0),char(109),char(95),char(115),char(111),char(114),char(0), -char(109),char(95),char(101),char(114),char(112),char(0),char(109),char(95),char(101),char(114),char(112),char(50),char(0),char(109),char(95),char(103),char(108),char(111),char(98),char(97), -char(108),char(67),char(102),char(109),char(0),char(109),char(95),char(115),char(112),char(108),char(105),char(116),char(73),char(109),char(112),char(117),char(108),char(115),char(101),char(80), -char(101),char(110),char(101),char(116),char(114),char(97),char(116),char(105),char(111),char(110),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0), -char(109),char(95),char(115),char(112),char(108),char(105),char(116),char(73),char(109),char(112),char(117),char(108),char(115),char(101),char(84),char(117),char(114),char(110),char(69),char(114), -char(112),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(83),char(108),char(111),char(112),char(0),char(109),char(95),char(119),char(97),char(114), -char(109),char(115),char(116),char(97),char(114),char(116),char(105),char(110),char(103),char(70),char(97),char(99),char(116),char(111),char(114),char(0),char(109),char(95),char(109),char(97), -char(120),char(71),char(121),char(114),char(111),char(115),char(99),char(111),char(112),char(105),char(99),char(70),char(111),char(114),char(99),char(101),char(0),char(109),char(95),char(115), -char(105),char(110),char(103),char(108),char(101),char(65),char(120),char(105),char(115),char(82),char(111),char(108),char(108),char(105),char(110),char(103),char(70),char(114),char(105),char(99), -char(116),char(105),char(111),char(110),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),char(95),char(110),char(117),char(109),char(73), -char(116),char(101),char(114),char(97),char(116),char(105),char(111),char(110),char(115),char(0),char(109),char(95),char(115),char(111),char(108),char(118),char(101),char(114),char(77),char(111), -char(100),char(101),char(0),char(109),char(95),char(114),char(101),char(115),char(116),char(105),char(110),char(103),char(67),char(111),char(110),char(116),char(97),char(99),char(116),char(82), -char(101),char(115),char(116),char(105),char(116),char(117),char(116),char(105),char(111),char(110),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0), -char(109),char(95),char(109),char(105),char(110),char(105),char(109),char(117),char(109),char(83),char(111),char(108),char(118),char(101),char(114),char(66),char(97),char(116),char(99),char(104), -char(83),char(105),char(122),char(101),char(0),char(109),char(95),char(115),char(112),char(108),char(105),char(116),char(73),char(109),char(112),char(117),char(108),char(115),char(101),char(0), -char(109),char(95),char(115),char(111),char(108),char(118),char(101),char(114),char(73),char(110),char(102),char(111),char(0),char(109),char(95),char(103),char(114),char(97),char(118),char(105), -char(116),char(121),char(0),char(109),char(95),char(99),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(79),char(98),char(106),char(101),char(99),char(116), -char(68),char(97),char(116),char(97),char(0),char(109),char(95),char(105),char(110),char(118),char(73),char(110),char(101),char(114),char(116),char(105),char(97),char(84),char(101),char(110), -char(115),char(111),char(114),char(87),char(111),char(114),char(108),char(100),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(86),char(101),char(108), -char(111),char(99),char(105),char(116),char(121),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(86),char(101),char(108),char(111),char(99), -char(105),char(116),char(121),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(70),char(97),char(99),char(116),char(111),char(114),char(0), -char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(70),char(97),char(99),char(116),char(111),char(114),char(0),char(109),char(95),char(103),char(114),char(97), -char(118),char(105),char(116),char(121),char(95),char(97),char(99),char(99),char(101),char(108),char(101),char(114),char(97),char(116),char(105),char(111),char(110),char(0),char(109),char(95), -char(105),char(110),char(118),char(73),char(110),char(101),char(114),char(116),char(105),char(97),char(76),char(111),char(99),char(97),char(108),char(0),char(109),char(95),char(116),char(111), -char(116),char(97),char(108),char(70),char(111),char(114),char(99),char(101),char(0),char(109),char(95),char(116),char(111),char(116),char(97),char(108),char(84),char(111),char(114),char(113), -char(117),char(101),char(0),char(109),char(95),char(105),char(110),char(118),char(101),char(114),char(115),char(101),char(77),char(97),char(115),char(115),char(0),char(109),char(95),char(108), -char(105),char(110),char(101),char(97),char(114),char(68),char(97),char(109),char(112),char(105),char(110),char(103),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108), -char(97),char(114),char(68),char(97),char(109),char(112),char(105),char(110),char(103),char(0),char(109),char(95),char(97),char(100),char(100),char(105),char(116),char(105),char(111),char(110), -char(97),char(108),char(68),char(97),char(109),char(112),char(105),char(110),char(103),char(70),char(97),char(99),char(116),char(111),char(114),char(0),char(109),char(95),char(97),char(100), -char(100),char(105),char(116),char(105),char(111),char(110),char(97),char(108),char(76),char(105),char(110),char(101),char(97),char(114),char(68),char(97),char(109),char(112),char(105),char(110), -char(103),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(83),char(113),char(114),char(0),char(109),char(95),char(97),char(100),char(100),char(105), -char(116),char(105),char(111),char(110),char(97),char(108),char(65),char(110),char(103),char(117),char(108),char(97),char(114),char(68),char(97),char(109),char(112),char(105),char(110),char(103), -char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(83),char(113),char(114),char(0),char(109),char(95),char(97),char(100),char(100),char(105),char(116), -char(105),char(111),char(110),char(97),char(108),char(65),char(110),char(103),char(117),char(108),char(97),char(114),char(68),char(97),char(109),char(112),char(105),char(110),char(103),char(70), -char(97),char(99),char(116),char(111),char(114),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(83),char(108),char(101),char(101),char(112),char(105), -char(110),char(103),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97), -char(114),char(83),char(108),char(101),char(101),char(112),char(105),char(110),char(103),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109), -char(95),char(97),char(100),char(100),char(105),char(116),char(105),char(111),char(110),char(97),char(108),char(68),char(97),char(109),char(112),char(105),char(110),char(103),char(0),char(109), -char(95),char(110),char(117),char(109),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(82),char(111),char(119),char(115),char(0),char(110), -char(117),char(98),char(0),char(42),char(109),char(95),char(114),char(98),char(65),char(0),char(42),char(109),char(95),char(114),char(98),char(66),char(0),char(109),char(95),char(111), -char(98),char(106),char(101),char(99),char(116),char(84),char(121),char(112),char(101),char(0),char(109),char(95),char(117),char(115),char(101),char(114),char(67),char(111),char(110),char(115), -char(116),char(114),char(97),char(105),char(110),char(116),char(84),char(121),char(112),char(101),char(0),char(109),char(95),char(117),char(115),char(101),char(114),char(67),char(111),char(110), -char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(73),char(100),char(0),char(109),char(95),char(110),char(101),char(101),char(100),char(115),char(70),char(101),char(101), -char(100),char(98),char(97),char(99),char(107),char(0),char(109),char(95),char(97),char(112),char(112),char(108),char(105),char(101),char(100),char(73),char(109),char(112),char(117),char(108), -char(115),char(101),char(0),char(109),char(95),char(100),char(98),char(103),char(68),char(114),char(97),char(119),char(83),char(105),char(122),char(101),char(0),char(109),char(95),char(100), -char(105),char(115),char(97),char(98),char(108),char(101),char(67),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(115),char(66),char(101),char(116),char(119), -char(101),char(101),char(110),char(76),char(105),char(110),char(107),char(101),char(100),char(66),char(111),char(100),char(105),char(101),char(115),char(0),char(109),char(95),char(111),char(118), -char(101),char(114),char(114),char(105),char(100),char(101),char(78),char(117),char(109),char(83),char(111),char(108),char(118),char(101),char(114),char(73),char(116),char(101),char(114),char(97), -char(116),char(105),char(111),char(110),char(115),char(0),char(109),char(95),char(98),char(114),char(101),char(97),char(107),char(105),char(110),char(103),char(73),char(109),char(112),char(117), -char(108),char(115),char(101),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),char(95),char(105),char(115),char(69),char(110),char(97), -char(98),char(108),char(101),char(100),char(0),char(112),char(97),char(100),char(100),char(105),char(110),char(103),char(91),char(52),char(93),char(0),char(109),char(95),char(116),char(121), -char(112),char(101),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(97),char(116),char(97),char(0),char(109),char(95),char(112), -char(105),char(118),char(111),char(116),char(73),char(110),char(65),char(0),char(109),char(95),char(112),char(105),char(118),char(111),char(116),char(73),char(110),char(66),char(0),char(109), -char(95),char(114),char(98),char(65),char(70),char(114),char(97),char(109),char(101),char(0),char(109),char(95),char(114),char(98),char(66),char(70),char(114),char(97),char(109),char(101), -char(0),char(109),char(95),char(117),char(115),char(101),char(82),char(101),char(102),char(101),char(114),char(101),char(110),char(99),char(101),char(70),char(114),char(97),char(109),char(101), -char(65),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(79),char(110),char(108),char(121),char(0),char(109),char(95),char(101),char(110), -char(97),char(98),char(108),char(101),char(65),char(110),char(103),char(117),char(108),char(97),char(114),char(77),char(111),char(116),char(111),char(114),char(0),char(109),char(95),char(109), -char(111),char(116),char(111),char(114),char(84),char(97),char(114),char(103),char(101),char(116),char(86),char(101),char(108),char(111),char(99),char(105),char(116),char(121),char(0),char(109), -char(95),char(109),char(97),char(120),char(77),char(111),char(116),char(111),char(114),char(73),char(109),char(112),char(117),char(108),char(115),char(101),char(0),char(109),char(95),char(108), -char(111),char(119),char(101),char(114),char(76),char(105),char(109),char(105),char(116),char(0),char(109),char(95),char(117),char(112),char(112),char(101),char(114),char(76),char(105),char(109), -char(105),char(116),char(0),char(109),char(95),char(108),char(105),char(109),char(105),char(116),char(83),char(111),char(102),char(116),char(110),char(101),char(115),char(115),char(0),char(109), -char(95),char(98),char(105),char(97),char(115),char(70),char(97),char(99),char(116),char(111),char(114),char(0),char(109),char(95),char(114),char(101),char(108),char(97),char(120),char(97), -char(116),char(105),char(111),char(110),char(70),char(97),char(99),char(116),char(111),char(114),char(0),char(109),char(95),char(112),char(97),char(100),char(100),char(105),char(110),char(103), -char(49),char(91),char(52),char(93),char(0),char(109),char(95),char(115),char(119),char(105),char(110),char(103),char(83),char(112),char(97),char(110),char(49),char(0),char(109),char(95), -char(115),char(119),char(105),char(110),char(103),char(83),char(112),char(97),char(110),char(50),char(0),char(109),char(95),char(116),char(119),char(105),char(115),char(116),char(83),char(112), -char(97),char(110),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(85),char(112),char(112),char(101),char(114),char(76),char(105),char(109),char(105), -char(116),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(76),char(111),char(119),char(101),char(114),char(76),char(105),char(109),char(105),char(116), -char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(85),char(112),char(112),char(101),char(114),char(76),char(105),char(109),char(105),char(116), -char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(76),char(111),char(119),char(101),char(114),char(76),char(105),char(109),char(105),char(116), -char(0),char(109),char(95),char(117),char(115),char(101),char(76),char(105),char(110),char(101),char(97),char(114),char(82),char(101),char(102),char(101),char(114),char(101),char(110),char(99), -char(101),char(70),char(114),char(97),char(109),char(101),char(65),char(0),char(109),char(95),char(117),char(115),char(101),char(79),char(102),char(102),char(115),char(101),char(116),char(70), -char(111),char(114),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(70),char(114),char(97),char(109),char(101),char(0),char(109),char(95), -char(54),char(100),char(111),char(102),char(68),char(97),char(116),char(97),char(0),char(109),char(95),char(115),char(112),char(114),char(105),char(110),char(103),char(69),char(110),char(97), -char(98),char(108),char(101),char(100),char(91),char(54),char(93),char(0),char(109),char(95),char(101),char(113),char(117),char(105),char(108),char(105),char(98),char(114),char(105),char(117), -char(109),char(80),char(111),char(105),char(110),char(116),char(91),char(54),char(93),char(0),char(109),char(95),char(115),char(112),char(114),char(105),char(110),char(103),char(83),char(116), -char(105),char(102),char(102),char(110),char(101),char(115),char(115),char(91),char(54),char(93),char(0),char(109),char(95),char(115),char(112),char(114),char(105),char(110),char(103),char(68), -char(97),char(109),char(112),char(105),char(110),char(103),char(91),char(54),char(93),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(66),char(111), -char(117),char(110),char(99),char(101),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(83),char(116),char(111),char(112),char(69),char(82),char(80), -char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(83),char(116),char(111),char(112),char(67),char(70),char(77),char(0),char(109),char(95),char(108), -char(105),char(110),char(101),char(97),char(114),char(77),char(111),char(116),char(111),char(114),char(69),char(82),char(80),char(0),char(109),char(95),char(108),char(105),char(110),char(101), -char(97),char(114),char(77),char(111),char(116),char(111),char(114),char(67),char(70),char(77),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(84), -char(97),char(114),char(103),char(101),char(116),char(86),char(101),char(108),char(111),char(99),char(105),char(116),char(121),char(0),char(109),char(95),char(108),char(105),char(110),char(101), -char(97),char(114),char(77),char(97),char(120),char(77),char(111),char(116),char(111),char(114),char(70),char(111),char(114),char(99),char(101),char(0),char(109),char(95),char(108),char(105), -char(110),char(101),char(97),char(114),char(83),char(101),char(114),char(118),char(111),char(84),char(97),char(114),char(103),char(101),char(116),char(0),char(109),char(95),char(108),char(105), -char(110),char(101),char(97),char(114),char(83),char(112),char(114),char(105),char(110),char(103),char(83),char(116),char(105),char(102),char(102),char(110),char(101),char(115),char(115),char(0), -char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(83),char(112),char(114),char(105),char(110),char(103),char(68),char(97),char(109),char(112),char(105),char(110), -char(103),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(69),char(113),char(117),char(105),char(108),char(105),char(98),char(114),char(105),char(117), -char(109),char(80),char(111),char(105),char(110),char(116),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(69),char(110),char(97),char(98),char(108), -char(101),char(77),char(111),char(116),char(111),char(114),char(91),char(52),char(93),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(83),char(101), -char(114),char(118),char(111),char(77),char(111),char(116),char(111),char(114),char(91),char(52),char(93),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114), -char(69),char(110),char(97),char(98),char(108),char(101),char(83),char(112),char(114),char(105),char(110),char(103),char(91),char(52),char(93),char(0),char(109),char(95),char(108),char(105), -char(110),char(101),char(97),char(114),char(83),char(112),char(114),char(105),char(110),char(103),char(83),char(116),char(105),char(102),char(102),char(110),char(101),char(115),char(115),char(76), -char(105),char(109),char(105),char(116),char(101),char(100),char(91),char(52),char(93),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(83),char(112), -char(114),char(105),char(110),char(103),char(68),char(97),char(109),char(112),char(105),char(110),char(103),char(76),char(105),char(109),char(105),char(116),char(101),char(100),char(91),char(52), -char(93),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(66),char(111),char(117),char(110),char(99),char(101),char(0),char(109),char(95), -char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(83),char(116),char(111),char(112),char(69),char(82),char(80),char(0),char(109),char(95),char(97),char(110),char(103), -char(117),char(108),char(97),char(114),char(83),char(116),char(111),char(112),char(67),char(70),char(77),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97), -char(114),char(77),char(111),char(116),char(111),char(114),char(69),char(82),char(80),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(77), -char(111),char(116),char(111),char(114),char(67),char(70),char(77),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(84),char(97),char(114), -char(103),char(101),char(116),char(86),char(101),char(108),char(111),char(99),char(105),char(116),char(121),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97), -char(114),char(77),char(97),char(120),char(77),char(111),char(116),char(111),char(114),char(70),char(111),char(114),char(99),char(101),char(0),char(109),char(95),char(97),char(110),char(103), -char(117),char(108),char(97),char(114),char(83),char(101),char(114),char(118),char(111),char(84),char(97),char(114),char(103),char(101),char(116),char(0),char(109),char(95),char(97),char(110), -char(103),char(117),char(108),char(97),char(114),char(83),char(112),char(114),char(105),char(110),char(103),char(83),char(116),char(105),char(102),char(102),char(110),char(101),char(115),char(115), -char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(83),char(112),char(114),char(105),char(110),char(103),char(68),char(97),char(109),char(112), -char(105),char(110),char(103),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(69),char(113),char(117),char(105),char(108),char(105),char(98), -char(114),char(105),char(117),char(109),char(80),char(111),char(105),char(110),char(116),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(69), -char(110),char(97),char(98),char(108),char(101),char(77),char(111),char(116),char(111),char(114),char(91),char(52),char(93),char(0),char(109),char(95),char(97),char(110),char(103),char(117), -char(108),char(97),char(114),char(83),char(101),char(114),char(118),char(111),char(77),char(111),char(116),char(111),char(114),char(91),char(52),char(93),char(0),char(109),char(95),char(97), -char(110),char(103),char(117),char(108),char(97),char(114),char(69),char(110),char(97),char(98),char(108),char(101),char(83),char(112),char(114),char(105),char(110),char(103),char(91),char(52), -char(93),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(83),char(112),char(114),char(105),char(110),char(103),char(83),char(116),char(105), -char(102),char(102),char(110),char(101),char(115),char(115),char(76),char(105),char(109),char(105),char(116),char(101),char(100),char(91),char(52),char(93),char(0),char(109),char(95),char(97), -char(110),char(103),char(117),char(108),char(97),char(114),char(83),char(112),char(114),char(105),char(110),char(103),char(68),char(97),char(109),char(112),char(105),char(110),char(103),char(76), -char(105),char(109),char(105),char(116),char(101),char(100),char(91),char(52),char(93),char(0),char(109),char(95),char(114),char(111),char(116),char(97),char(116),char(101),char(79),char(114), -char(100),char(101),char(114),char(0),char(109),char(95),char(97),char(120),char(105),char(115),char(73),char(110),char(65),char(0),char(109),char(95),char(97),char(120),char(105),char(115), -char(73),char(110),char(66),char(0),char(109),char(95),char(114),char(97),char(116),char(105),char(111),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114), -char(83),char(116),char(105),char(102),char(102),char(110),char(101),char(115),char(115),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(83), -char(116),char(105),char(102),char(102),char(110),char(101),char(115),char(115),char(0),char(109),char(95),char(118),char(111),char(108),char(117),char(109),char(101),char(83),char(116),char(105), -char(102),char(102),char(110),char(101),char(115),char(115),char(0),char(42),char(109),char(95),char(109),char(97),char(116),char(101),char(114),char(105),char(97),char(108),char(0),char(109), -char(95),char(112),char(111),char(115),char(105),char(116),char(105),char(111),char(110),char(0),char(109),char(95),char(112),char(114),char(101),char(118),char(105),char(111),char(117),char(115), -char(80),char(111),char(115),char(105),char(116),char(105),char(111),char(110),char(0),char(109),char(95),char(118),char(101),char(108),char(111),char(99),char(105),char(116),char(121),char(0), -char(109),char(95),char(97),char(99),char(99),char(117),char(109),char(117),char(108),char(97),char(116),char(101),char(100),char(70),char(111),char(114),char(99),char(101),char(0),char(109), -char(95),char(110),char(111),char(114),char(109),char(97),char(108),char(0),char(109),char(95),char(97),char(114),char(101),char(97),char(0),char(109),char(95),char(97),char(116),char(116), -char(97),char(99),char(104),char(0),char(109),char(95),char(110),char(111),char(100),char(101),char(73),char(110),char(100),char(105),char(99),char(101),char(115),char(91),char(50),char(93), -char(0),char(109),char(95),char(114),char(101),char(115),char(116),char(76),char(101),char(110),char(103),char(116),char(104),char(0),char(109),char(95),char(98),char(98),char(101),char(110), -char(100),char(105),char(110),char(103),char(0),char(109),char(95),char(110),char(111),char(100),char(101),char(73),char(110),char(100),char(105),char(99),char(101),char(115),char(91),char(51), -char(93),char(0),char(109),char(95),char(114),char(101),char(115),char(116),char(65),char(114),char(101),char(97),char(0),char(109),char(95),char(99),char(48),char(91),char(52),char(93), -char(0),char(109),char(95),char(110),char(111),char(100),char(101),char(73),char(110),char(100),char(105),char(99),char(101),char(115),char(91),char(52),char(93),char(0),char(109),char(95), -char(114),char(101),char(115),char(116),char(86),char(111),char(108),char(117),char(109),char(101),char(0),char(109),char(95),char(99),char(49),char(0),char(109),char(95),char(99),char(50), -char(0),char(109),char(95),char(99),char(48),char(0),char(109),char(95),char(108),char(111),char(99),char(97),char(108),char(70),char(114),char(97),char(109),char(101),char(0),char(42), -char(109),char(95),char(114),char(105),char(103),char(105),char(100),char(66),char(111),char(100),char(121),char(0),char(109),char(95),char(110),char(111),char(100),char(101),char(73),char(110), -char(100),char(101),char(120),char(0),char(109),char(95),char(97),char(101),char(114),char(111),char(77),char(111),char(100),char(101),char(108),char(0),char(109),char(95),char(98),char(97), -char(117),char(109),char(103),char(97),char(114),char(116),char(101),char(0),char(109),char(95),char(100),char(114),char(97),char(103),char(0),char(109),char(95),char(108),char(105),char(102), -char(116),char(0),char(109),char(95),char(112),char(114),char(101),char(115),char(115),char(117),char(114),char(101),char(0),char(109),char(95),char(118),char(111),char(108),char(117),char(109), -char(101),char(0),char(109),char(95),char(100),char(121),char(110),char(97),char(109),char(105),char(99),char(70),char(114),char(105),char(99),char(116),char(105),char(111),char(110),char(0), -char(109),char(95),char(112),char(111),char(115),char(101),char(77),char(97),char(116),char(99),char(104),char(0),char(109),char(95),char(114),char(105),char(103),char(105),char(100),char(67), -char(111),char(110),char(116),char(97),char(99),char(116),char(72),char(97),char(114),char(100),char(110),char(101),char(115),char(115),char(0),char(109),char(95),char(107),char(105),char(110), -char(101),char(116),char(105),char(99),char(67),char(111),char(110),char(116),char(97),char(99),char(116),char(72),char(97),char(114),char(100),char(110),char(101),char(115),char(115),char(0), -char(109),char(95),char(115),char(111),char(102),char(116),char(67),char(111),char(110),char(116),char(97),char(99),char(116),char(72),char(97),char(114),char(100),char(110),char(101),char(115), -char(115),char(0),char(109),char(95),char(97),char(110),char(99),char(104),char(111),char(114),char(72),char(97),char(114),char(100),char(110),char(101),char(115),char(115),char(0),char(109), -char(95),char(115),char(111),char(102),char(116),char(82),char(105),char(103),char(105),char(100),char(67),char(108),char(117),char(115),char(116),char(101),char(114),char(72),char(97),char(114), -char(100),char(110),char(101),char(115),char(115),char(0),char(109),char(95),char(115),char(111),char(102),char(116),char(75),char(105),char(110),char(101),char(116),char(105),char(99),char(67), -char(108),char(117),char(115),char(116),char(101),char(114),char(72),char(97),char(114),char(100),char(110),char(101),char(115),char(115),char(0),char(109),char(95),char(115),char(111),char(102), -char(116),char(83),char(111),char(102),char(116),char(67),char(108),char(117),char(115),char(116),char(101),char(114),char(72),char(97),char(114),char(100),char(110),char(101),char(115),char(115), -char(0),char(109),char(95),char(115),char(111),char(102),char(116),char(82),char(105),char(103),char(105),char(100),char(67),char(108),char(117),char(115),char(116),char(101),char(114),char(73), -char(109),char(112),char(117),char(108),char(115),char(101),char(83),char(112),char(108),char(105),char(116),char(0),char(109),char(95),char(115),char(111),char(102),char(116),char(75),char(105), -char(110),char(101),char(116),char(105),char(99),char(67),char(108),char(117),char(115),char(116),char(101),char(114),char(73),char(109),char(112),char(117),char(108),char(115),char(101),char(83), -char(112),char(108),char(105),char(116),char(0),char(109),char(95),char(115),char(111),char(102),char(116),char(83),char(111),char(102),char(116),char(67),char(108),char(117),char(115),char(116), -char(101),char(114),char(73),char(109),char(112),char(117),char(108),char(115),char(101),char(83),char(112),char(108),char(105),char(116),char(0),char(109),char(95),char(109),char(97),char(120), -char(86),char(111),char(108),char(117),char(109),char(101),char(0),char(109),char(95),char(116),char(105),char(109),char(101),char(83),char(99),char(97),char(108),char(101),char(0),char(109), -char(95),char(118),char(101),char(108),char(111),char(99),char(105),char(116),char(121),char(73),char(116),char(101),char(114),char(97),char(116),char(105),char(111),char(110),char(115),char(0), -char(109),char(95),char(112),char(111),char(115),char(105),char(116),char(105),char(111),char(110),char(73),char(116),char(101),char(114),char(97),char(116),char(105),char(111),char(110),char(115), -char(0),char(109),char(95),char(100),char(114),char(105),char(102),char(116),char(73),char(116),char(101),char(114),char(97),char(116),char(105),char(111),char(110),char(115),char(0),char(109), -char(95),char(99),char(108),char(117),char(115),char(116),char(101),char(114),char(73),char(116),char(101),char(114),char(97),char(116),char(105),char(111),char(110),char(115),char(0),char(109), -char(95),char(114),char(111),char(116),char(0),char(109),char(95),char(115),char(99),char(97),char(108),char(101),char(0),char(109),char(95),char(97),char(113),char(113),char(0),char(109), -char(95),char(99),char(111),char(109),char(0),char(42),char(109),char(95),char(112),char(111),char(115),char(105),char(116),char(105),char(111),char(110),char(115),char(0),char(42),char(109), -char(95),char(119),char(101),char(105),char(103),char(104),char(116),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(80),char(111),char(115),char(105),char(116),char(105), -char(111),char(110),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(87),char(101),char(105),char(103),char(116),char(115),char(0),char(109),char(95),char(98),char(118), -char(111),char(108),char(117),char(109),char(101),char(0),char(109),char(95),char(98),char(102),char(114),char(97),char(109),char(101),char(0),char(109),char(95),char(102),char(114),char(97), -char(109),char(101),char(120),char(102),char(111),char(114),char(109),char(0),char(109),char(95),char(108),char(111),char(99),char(105),char(105),char(0),char(109),char(95),char(105),char(110), -char(118),char(119),char(105),char(0),char(109),char(95),char(118),char(105),char(109),char(112),char(117),char(108),char(115),char(101),char(115),char(91),char(50),char(93),char(0),char(109), -char(95),char(100),char(105),char(109),char(112),char(117),char(108),char(115),char(101),char(115),char(91),char(50),char(93),char(0),char(109),char(95),char(108),char(118),char(0),char(109), -char(95),char(97),char(118),char(0),char(42),char(109),char(95),char(102),char(114),char(97),char(109),char(101),char(114),char(101),char(102),char(115),char(0),char(42),char(109),char(95), -char(110),char(111),char(100),char(101),char(73),char(110),char(100),char(105),char(99),char(101),char(115),char(0),char(42),char(109),char(95),char(109),char(97),char(115),char(115),char(101), -char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(70),char(114),char(97),char(109),char(101),char(82),char(101),char(102),char(115),char(0),char(109),char(95),char(110), -char(117),char(109),char(78),char(111),char(100),char(101),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(77),char(97),char(115),char(115),char(101),char(115),char(0), -char(109),char(95),char(105),char(100),char(109),char(97),char(115),char(115),char(0),char(109),char(95),char(105),char(109),char(97),char(115),char(115),char(0),char(109),char(95),char(110), -char(118),char(105),char(109),char(112),char(117),char(108),char(115),char(101),char(115),char(0),char(109),char(95),char(110),char(100),char(105),char(109),char(112),char(117),char(108),char(115), -char(101),char(115),char(0),char(109),char(95),char(110),char(100),char(97),char(109),char(112),char(105),char(110),char(103),char(0),char(109),char(95),char(108),char(100),char(97),char(109), -char(112),char(105),char(110),char(103),char(0),char(109),char(95),char(97),char(100),char(97),char(109),char(112),char(105),char(110),char(103),char(0),char(109),char(95),char(109),char(97), -char(116),char(99),char(104),char(105),char(110),char(103),char(0),char(109),char(95),char(109),char(97),char(120),char(83),char(101),char(108),char(102),char(67),char(111),char(108),char(108), -char(105),char(115),char(105),char(111),char(110),char(73),char(109),char(112),char(117),char(108),char(115),char(101),char(0),char(109),char(95),char(115),char(101),char(108),char(102),char(67), -char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(73),char(109),char(112),char(117),char(108),char(115),char(101),char(70),char(97),char(99),char(116),char(111), -char(114),char(0),char(109),char(95),char(99),char(111),char(110),char(116),char(97),char(105),char(110),char(115),char(65),char(110),char(99),char(104),char(111),char(114),char(0),char(109), -char(95),char(99),char(111),char(108),char(108),char(105),char(100),char(101),char(0),char(109),char(95),char(99),char(108),char(117),char(115),char(116),char(101),char(114),char(73),char(110), -char(100),char(101),char(120),char(0),char(42),char(109),char(95),char(98),char(111),char(100),char(121),char(65),char(0),char(42),char(109),char(95),char(98),char(111),char(100),char(121), -char(66),char(0),char(109),char(95),char(114),char(101),char(102),char(115),char(91),char(50),char(93),char(0),char(109),char(95),char(99),char(102),char(109),char(0),char(109),char(95), -char(115),char(112),char(108),char(105),char(116),char(0),char(109),char(95),char(100),char(101),char(108),char(101),char(116),char(101),char(0),char(109),char(95),char(114),char(101),char(108), -char(80),char(111),char(115),char(105),char(116),char(105),char(111),char(110),char(91),char(50),char(93),char(0),char(109),char(95),char(98),char(111),char(100),char(121),char(65),char(116), -char(121),char(112),char(101),char(0),char(109),char(95),char(98),char(111),char(100),char(121),char(66),char(116),char(121),char(112),char(101),char(0),char(109),char(95),char(106),char(111), -char(105),char(110),char(116),char(84),char(121),char(112),char(101),char(0),char(42),char(109),char(95),char(112),char(111),char(115),char(101),char(0),char(42),char(42),char(109),char(95), -char(109),char(97),char(116),char(101),char(114),char(105),char(97),char(108),char(115),char(0),char(42),char(109),char(95),char(110),char(111),char(100),char(101),char(115),char(0),char(42), -char(109),char(95),char(108),char(105),char(110),char(107),char(115),char(0),char(42),char(109),char(95),char(102),char(97),char(99),char(101),char(115),char(0),char(42),char(109),char(95), -char(116),char(101),char(116),char(114),char(97),char(104),char(101),char(100),char(114),char(97),char(0),char(42),char(109),char(95),char(97),char(110),char(99),char(104),char(111),char(114), -char(115),char(0),char(42),char(109),char(95),char(99),char(108),char(117),char(115),char(116),char(101),char(114),char(115),char(0),char(42),char(109),char(95),char(106),char(111),char(105), -char(110),char(116),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(77),char(97),char(116),char(101),char(114),char(105),char(97),char(108),char(115),char(0),char(109), -char(95),char(110),char(117),char(109),char(76),char(105),char(110),char(107),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(70),char(97),char(99),char(101),char(115), -char(0),char(109),char(95),char(110),char(117),char(109),char(84),char(101),char(116),char(114),char(97),char(104),char(101),char(100),char(114),char(97),char(0),char(109),char(95),char(110), -char(117),char(109),char(65),char(110),char(99),char(104),char(111),char(114),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(67),char(108),char(117),char(115),char(116), -char(101),char(114),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(74),char(111),char(105),char(110),char(116),char(115),char(0),char(109),char(95),char(99),char(111), -char(110),char(102),char(105),char(103),char(0),char(109),char(95),char(122),char(101),char(114),char(111),char(82),char(111),char(116),char(80),char(97),char(114),char(101),char(110),char(116), -char(84),char(111),char(84),char(104),char(105),char(115),char(0),char(109),char(95),char(112),char(97),char(114),char(101),char(110),char(116),char(67),char(111),char(109),char(84),char(111), -char(84),char(104),char(105),char(115),char(67),char(111),char(109),char(79),char(102),char(102),char(115),char(101),char(116),char(0),char(109),char(95),char(116),char(104),char(105),char(115), -char(80),char(105),char(118),char(111),char(116),char(84),char(111),char(84),char(104),char(105),char(115),char(67),char(111),char(109),char(79),char(102),char(102),char(115),char(101),char(116), -char(0),char(109),char(95),char(106),char(111),char(105),char(110),char(116),char(65),char(120),char(105),char(115),char(84),char(111),char(112),char(91),char(54),char(93),char(0),char(109), -char(95),char(106),char(111),char(105),char(110),char(116),char(65),char(120),char(105),char(115),char(66),char(111),char(116),char(116),char(111),char(109),char(91),char(54),char(93),char(0), -char(109),char(95),char(108),char(105),char(110),char(107),char(73),char(110),char(101),char(114),char(116),char(105),char(97),char(0),char(109),char(95),char(108),char(105),char(110),char(107), -char(77),char(97),char(115),char(115),char(0),char(109),char(95),char(112),char(97),char(114),char(101),char(110),char(116),char(73),char(110),char(100),char(101),char(120),char(0),char(109), -char(95),char(100),char(111),char(102),char(67),char(111),char(117),char(110),char(116),char(0),char(109),char(95),char(112),char(111),char(115),char(86),char(97),char(114),char(67),char(111), -char(117),char(110),char(116),char(0),char(109),char(95),char(106),char(111),char(105),char(110),char(116),char(80),char(111),char(115),char(91),char(55),char(93),char(0),char(109),char(95), -char(106),char(111),char(105),char(110),char(116),char(86),char(101),char(108),char(91),char(54),char(93),char(0),char(109),char(95),char(106),char(111),char(105),char(110),char(116),char(84), -char(111),char(114),char(113),char(117),char(101),char(91),char(54),char(93),char(0),char(109),char(95),char(106),char(111),char(105),char(110),char(116),char(68),char(97),char(109),char(112), -char(105),char(110),char(103),char(0),char(109),char(95),char(106),char(111),char(105),char(110),char(116),char(70),char(114),char(105),char(99),char(116),char(105),char(111),char(110),char(0), -char(42),char(109),char(95),char(108),char(105),char(110),char(107),char(78),char(97),char(109),char(101),char(0),char(42),char(109),char(95),char(106),char(111),char(105),char(110),char(116), -char(78),char(97),char(109),char(101),char(0),char(42),char(109),char(95),char(108),char(105),char(110),char(107),char(67),char(111),char(108),char(108),char(105),char(100),char(101),char(114), -char(0),char(42),char(109),char(95),char(112),char(97),char(100),char(100),char(105),char(110),char(103),char(80),char(116),char(114),char(0),char(109),char(95),char(98),char(97),char(115), -char(101),char(87),char(111),char(114),char(108),char(100),char(84),char(114),char(97),char(110),char(115),char(102),char(111),char(114),char(109),char(0),char(109),char(95),char(98),char(97), -char(115),char(101),char(73),char(110),char(101),char(114),char(116),char(105),char(97),char(0),char(109),char(95),char(98),char(97),char(115),char(101),char(77),char(97),char(115),char(115), -char(0),char(42),char(109),char(95),char(98),char(97),char(115),char(101),char(78),char(97),char(109),char(101),char(0),char(42),char(109),char(95),char(98),char(97),char(115),char(101), -char(67),char(111),char(108),char(108),char(105),char(100),char(101),char(114),char(0),char(0),char(0),char(0),char(84),char(89),char(80),char(69),char(95),char(0),char(0),char(0), -char(99),char(104),char(97),char(114),char(0),char(117),char(99),char(104),char(97),char(114),char(0),char(115),char(104),char(111),char(114),char(116),char(0),char(117),char(115),char(104), -char(111),char(114),char(116),char(0),char(105),char(110),char(116),char(0),char(108),char(111),char(110),char(103),char(0),char(117),char(108),char(111),char(110),char(103),char(0),char(102), -char(108),char(111),char(97),char(116),char(0),char(100),char(111),char(117),char(98),char(108),char(101),char(0),char(118),char(111),char(105),char(100),char(0),char(80),char(111),char(105), -char(110),char(116),char(101),char(114),char(65),char(114),char(114),char(97),char(121),char(0),char(98),char(116),char(80),char(104),char(121),char(115),char(105),char(99),char(115),char(83), -char(121),char(115),char(116),char(101),char(109),char(0),char(76),char(105),char(115),char(116),char(66),char(97),char(115),char(101),char(0),char(98),char(116),char(86),char(101),char(99), -char(116),char(111),char(114),char(51),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(86),char(101),char(99),char(116), -char(111),char(114),char(51),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(81),char(117),char(97),char(116), -char(101),char(114),char(110),char(105),char(111),char(110),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(81),char(117), -char(97),char(116),char(101),char(114),char(110),char(105),char(111),char(110),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98), -char(116),char(77),char(97),char(116),char(114),char(105),char(120),char(51),char(120),char(51),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0), -char(98),char(116),char(77),char(97),char(116),char(114),char(105),char(120),char(51),char(120),char(51),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116), -char(97),char(0),char(98),char(116),char(84),char(114),char(97),char(110),char(115),char(102),char(111),char(114),char(109),char(70),char(108),char(111),char(97),char(116),char(68),char(97), -char(116),char(97),char(0),char(98),char(116),char(84),char(114),char(97),char(110),char(115),char(102),char(111),char(114),char(109),char(68),char(111),char(117),char(98),char(108),char(101), -char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(66),char(118),char(104),char(83),char(117),char(98),char(116),char(114),char(101),char(101),char(73),char(110),char(102), -char(111),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(79),char(112),char(116),char(105),char(109),char(105),char(122),char(101),char(100),char(66),char(118),char(104), -char(78),char(111),char(100),char(101),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(79),char(112),char(116),char(105), -char(109),char(105),char(122),char(101),char(100),char(66),char(118),char(104),char(78),char(111),char(100),char(101),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97), -char(116),char(97),char(0),char(98),char(116),char(81),char(117),char(97),char(110),char(116),char(105),char(122),char(101),char(100),char(66),char(118),char(104),char(78),char(111),char(100), -char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(81),char(117),char(97),char(110),char(116),char(105),char(122),char(101),char(100),char(66),char(118),char(104), -char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(81),char(117),char(97),char(110),char(116),char(105),char(122),char(101), -char(100),char(66),char(118),char(104),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(108), -char(108),char(105),char(115),char(105),char(111),char(110),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(83),char(116), -char(97),char(116),char(105),char(99),char(80),char(108),char(97),char(110),char(101),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98), -char(116),char(67),char(111),char(110),char(118),char(101),char(120),char(73),char(110),char(116),char(101),char(114),char(110),char(97),char(108),char(83),char(104),char(97),char(112),char(101), -char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(80),char(111),char(115),char(105),char(116),char(105),char(111),char(110),char(65),char(110),char(100),char(82),char(97), -char(100),char(105),char(117),char(115),char(0),char(98),char(116),char(77),char(117),char(108),char(116),char(105),char(83),char(112),char(104),char(101),char(114),char(101),char(83),char(104), -char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(73),char(110),char(116),char(73),char(110),char(100),char(101),char(120),char(68),char(97), -char(116),char(97),char(0),char(98),char(116),char(83),char(104),char(111),char(114),char(116),char(73),char(110),char(116),char(73),char(110),char(100),char(101),char(120),char(68),char(97), -char(116),char(97),char(0),char(98),char(116),char(83),char(104),char(111),char(114),char(116),char(73),char(110),char(116),char(73),char(110),char(100),char(101),char(120),char(84),char(114), -char(105),char(112),char(108),char(101),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(104),char(97),char(114),char(73),char(110),char(100),char(101), -char(120),char(84),char(114),char(105),char(112),char(108),char(101),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(77),char(101),char(115),char(104),char(80), -char(97),char(114),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(83),char(116),char(114),char(105),char(100),char(105),char(110),char(103),char(77),char(101), -char(115),char(104),char(73),char(110),char(116),char(101),char(114),char(102),char(97),char(99),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(84),char(114), -char(105),char(97),char(110),char(103),char(108),char(101),char(77),char(101),char(115),char(104),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0), -char(98),char(116),char(84),char(114),char(105),char(97),char(110),char(103),char(108),char(101),char(73),char(110),char(102),char(111),char(77),char(97),char(112),char(68),char(97),char(116), -char(97),char(0),char(98),char(116),char(83),char(99),char(97),char(108),char(101),char(100),char(84),char(114),char(105),char(97),char(110),char(103),char(108),char(101),char(77),char(101), -char(115),char(104),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(109),char(112),char(111),char(117), -char(110),char(100),char(83),char(104),char(97),char(112),char(101),char(67),char(104),char(105),char(108),char(100),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67), -char(111),char(109),char(112),char(111),char(117),char(110),char(100),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67), -char(121),char(108),char(105),char(110),char(100),char(101),char(114),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67), -char(111),char(110),char(101),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(97),char(112),char(115),char(117), -char(108),char(101),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(84),char(114),char(105),char(97),char(110),char(103), -char(108),char(101),char(73),char(110),char(102),char(111),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(71),char(73),char(109),char(112),char(97),char(99),char(116), -char(77),char(101),char(115),char(104),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(110),char(118), -char(101),char(120),char(72),char(117),char(108),char(108),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111), -char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(79),char(98),char(106),char(101),char(99),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68), -char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(79),char(98),char(106),char(101),char(99), -char(116),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(110),char(116),char(97),char(99),char(116), -char(83),char(111),char(108),char(118),char(101),char(114),char(73),char(110),char(102),char(111),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97), -char(0),char(98),char(116),char(67),char(111),char(110),char(116),char(97),char(99),char(116),char(83),char(111),char(108),char(118),char(101),char(114),char(73),char(110),char(102),char(111), -char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(68),char(121),char(110),char(97),char(109),char(105),char(99),char(115), -char(87),char(111),char(114),char(108),char(100),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(68),char(121), -char(110),char(97),char(109),char(105),char(99),char(115),char(87),char(111),char(114),char(108),char(100),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97), -char(0),char(98),char(116),char(82),char(105),char(103),char(105),char(100),char(66),char(111),char(100),char(121),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116), -char(97),char(0),char(98),char(116),char(82),char(105),char(103),char(105),char(100),char(66),char(111),char(100),char(121),char(68),char(111),char(117),char(98),char(108),char(101),char(68), -char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(73),char(110),char(102),char(111), -char(49),char(0),char(98),char(116),char(84),char(121),char(112),char(101),char(100),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(70), -char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(84),char(121),char(112),char(101),char(100),char(67),char(111),char(110),char(115), -char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(82),char(105),char(103),char(105),char(100),char(66),char(111), -char(100),char(121),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(84),char(121),char(112),char(101),char(100),char(67),char(111),char(110),char(115),char(116),char(114), -char(97),char(105),char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(80),char(111),char(105), -char(110),char(116),char(50),char(80),char(111),char(105),char(110),char(116),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(70),char(108), -char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(80),char(111),char(105),char(110),char(116),char(50),char(80),char(111),char(105),char(110), -char(116),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116), -char(97),char(50),char(0),char(98),char(116),char(80),char(111),char(105),char(110),char(116),char(50),char(80),char(111),char(105),char(110),char(116),char(67),char(111),char(110),char(115), -char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(72), -char(105),char(110),char(103),char(101),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101), -char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(72),char(105),char(110),char(103),char(101),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105), -char(110),char(116),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(72),char(105),char(110),char(103),char(101),char(67), -char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(50), -char(0),char(98),char(116),char(67),char(111),char(110),char(101),char(84),char(119),char(105),char(115),char(116),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105), -char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(110),char(101),char(84), -char(119),char(105),char(115),char(116),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(97),char(116),char(97),char(0),char(98), -char(116),char(71),char(101),char(110),char(101),char(114),char(105),char(99),char(54),char(68),char(111),char(102),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105), -char(110),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(71),char(101),char(110),char(101),char(114),char(105),char(99),char(54),char(68),char(111),char(102), -char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97), -char(50),char(0),char(98),char(116),char(71),char(101),char(110),char(101),char(114),char(105),char(99),char(54),char(68),char(111),char(102),char(83),char(112),char(114),char(105),char(110), -char(103),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(71),char(101), -char(110),char(101),char(114),char(105),char(99),char(54),char(68),char(111),char(102),char(83),char(112),char(114),char(105),char(110),char(103),char(67),char(111),char(110),char(115),char(116), -char(114),char(97),char(105),char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(50),char(0),char(98),char(116),char(71), -char(101),char(110),char(101),char(114),char(105),char(99),char(54),char(68),char(111),char(102),char(83),char(112),char(114),char(105),char(110),char(103),char(50),char(67),char(111),char(110), -char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(71),char(101),char(110),char(101),char(114),char(105), -char(99),char(54),char(68),char(111),char(102),char(83),char(112),char(114),char(105),char(110),char(103),char(50),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105), -char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(50),char(0),char(98),char(116),char(83),char(108),char(105),char(100), -char(101),char(114),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(83), -char(108),char(105),char(100),char(101),char(114),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(111),char(117),char(98),char(108), -char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(71),char(101),char(97),char(114),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105), -char(110),char(116),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(71),char(101),char(97),char(114),char(67),char(111), -char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(83), -char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(77),char(97),char(116),char(101),char(114),char(105),char(97),char(108),char(68),char(97),char(116),char(97),char(0), -char(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(78),char(111),char(100),char(101),char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102), -char(116),char(66),char(111),char(100),char(121),char(76),char(105),char(110),char(107),char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102),char(116),char(66),char(111), -char(100),char(121),char(70),char(97),char(99),char(101),char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(84), -char(101),char(116),char(114),char(97),char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102),char(116),char(82),char(105),char(103),char(105),char(100),char(65),char(110), -char(99),char(104),char(111),char(114),char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(67),char(111),char(110), -char(102),char(105),char(103),char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(80),char(111),char(115),char(101), -char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(67),char(108),char(117),char(115),char(116),char(101),char(114), -char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(74),char(111),char(105),char(110),char(116), -char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(70),char(108),char(111),char(97),char(116), -char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(77),char(117),char(108),char(116),char(105),char(66),char(111),char(100),char(121),char(76),char(105),char(110),char(107), -char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(77),char(117),char(108),char(116),char(105),char(66),char(111), -char(100),char(121),char(76),char(105),char(110),char(107),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(77),char(117), -char(108),char(116),char(105),char(66),char(111),char(100),char(121),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116), -char(77),char(117),char(108),char(116),char(105),char(66),char(111),char(100),char(121),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(0), -char(84),char(76),char(69),char(78),char(1),char(0),char(1),char(0),char(2),char(0),char(2),char(0),char(4),char(0),char(4),char(0),char(4),char(0),char(4),char(0), -char(8),char(0),char(0),char(0),char(16),char(0),char(48),char(0),char(16),char(0),char(16),char(0),char(32),char(0),char(16),char(0),char(32),char(0),char(48),char(0), -char(96),char(0),char(64),char(0),char(-128),char(0),char(20),char(0),char(48),char(0),char(80),char(0),char(16),char(0),char(96),char(0),char(-112),char(0),char(16),char(0), -char(56),char(0),char(56),char(0),char(20),char(0),char(72),char(0),char(4),char(0),char(4),char(0),char(8),char(0),char(4),char(0),char(56),char(0),char(32),char(0), -char(80),char(0),char(72),char(0),char(96),char(0),char(80),char(0),char(32),char(0),char(64),char(0),char(64),char(0),char(64),char(0),char(16),char(0),char(72),char(0), -char(80),char(0),char(-16),char(1),char(24),char(1),char(-104),char(0),char(88),char(0),char(-72),char(0),char(104),char(0),char(0),char(2),char(-64),char(3),char(8),char(0), -char(64),char(0),char(64),char(0),char(0),char(0),char(80),char(0),char(96),char(0),char(-112),char(0),char(-128),char(0),char(104),char(1),char(-24),char(0),char(-104),char(1), -char(-120),char(1),char(-32),char(0),char(8),char(1),char(-40),char(1),char(104),char(1),char(-128),char(2),char(-112),char(2),char(-64),char(4),char(-40),char(0),char(120),char(1), -char(104),char(0),char(-104),char(0),char(16),char(0),char(104),char(0),char(24),char(0),char(40),char(0),char(104),char(0),char(96),char(0),char(104),char(0),char(-56),char(0), -char(104),char(1),char(112),char(0),char(-24),char(1),char(-32),char(2),char(-120),char(1),char(-48),char(0),char(112),char(0),char(0),char(0),char(83),char(84),char(82),char(67), -char(84),char(0),char(0),char(0),char(10),char(0),char(3),char(0),char(4),char(0),char(0),char(0),char(4),char(0),char(1),char(0),char(9),char(0),char(2),char(0), -char(11),char(0),char(3),char(0),char(10),char(0),char(3),char(0),char(10),char(0),char(4),char(0),char(10),char(0),char(5),char(0),char(12),char(0),char(2),char(0), -char(9),char(0),char(6),char(0),char(9),char(0),char(7),char(0),char(13),char(0),char(1),char(0),char(7),char(0),char(8),char(0),char(14),char(0),char(1),char(0), -char(8),char(0),char(8),char(0),char(15),char(0),char(1),char(0),char(7),char(0),char(8),char(0),char(16),char(0),char(1),char(0),char(8),char(0),char(8),char(0), -char(17),char(0),char(1),char(0),char(13),char(0),char(9),char(0),char(18),char(0),char(1),char(0),char(14),char(0),char(9),char(0),char(19),char(0),char(2),char(0), -char(17),char(0),char(10),char(0),char(13),char(0),char(11),char(0),char(20),char(0),char(2),char(0),char(18),char(0),char(10),char(0),char(14),char(0),char(11),char(0), -char(21),char(0),char(4),char(0),char(4),char(0),char(12),char(0),char(4),char(0),char(13),char(0),char(2),char(0),char(14),char(0),char(2),char(0),char(15),char(0), -char(22),char(0),char(6),char(0),char(13),char(0),char(16),char(0),char(13),char(0),char(17),char(0),char(4),char(0),char(18),char(0),char(4),char(0),char(19),char(0), -char(4),char(0),char(20),char(0),char(0),char(0),char(21),char(0),char(23),char(0),char(6),char(0),char(14),char(0),char(16),char(0),char(14),char(0),char(17),char(0), -char(4),char(0),char(18),char(0),char(4),char(0),char(19),char(0),char(4),char(0),char(20),char(0),char(0),char(0),char(21),char(0),char(24),char(0),char(3),char(0), -char(2),char(0),char(14),char(0),char(2),char(0),char(15),char(0),char(4),char(0),char(22),char(0),char(25),char(0),char(12),char(0),char(13),char(0),char(23),char(0), -char(13),char(0),char(24),char(0),char(13),char(0),char(25),char(0),char(4),char(0),char(26),char(0),char(4),char(0),char(27),char(0),char(4),char(0),char(28),char(0), -char(4),char(0),char(29),char(0),char(22),char(0),char(30),char(0),char(24),char(0),char(31),char(0),char(21),char(0),char(32),char(0),char(4),char(0),char(33),char(0), -char(4),char(0),char(34),char(0),char(26),char(0),char(12),char(0),char(14),char(0),char(23),char(0),char(14),char(0),char(24),char(0),char(14),char(0),char(25),char(0), -char(4),char(0),char(26),char(0),char(4),char(0),char(27),char(0),char(4),char(0),char(28),char(0),char(4),char(0),char(29),char(0),char(23),char(0),char(30),char(0), -char(24),char(0),char(31),char(0),char(4),char(0),char(33),char(0),char(4),char(0),char(34),char(0),char(21),char(0),char(32),char(0),char(27),char(0),char(3),char(0), -char(0),char(0),char(35),char(0),char(4),char(0),char(36),char(0),char(0),char(0),char(37),char(0),char(28),char(0),char(5),char(0),char(27),char(0),char(38),char(0), -char(13),char(0),char(39),char(0),char(13),char(0),char(40),char(0),char(7),char(0),char(41),char(0),char(0),char(0),char(21),char(0),char(29),char(0),char(5),char(0), -char(27),char(0),char(38),char(0),char(13),char(0),char(39),char(0),char(13),char(0),char(42),char(0),char(7),char(0),char(43),char(0),char(4),char(0),char(44),char(0), -char(30),char(0),char(2),char(0),char(13),char(0),char(45),char(0),char(7),char(0),char(46),char(0),char(31),char(0),char(4),char(0),char(29),char(0),char(47),char(0), -char(30),char(0),char(48),char(0),char(4),char(0),char(49),char(0),char(0),char(0),char(37),char(0),char(32),char(0),char(1),char(0),char(4),char(0),char(50),char(0), -char(33),char(0),char(2),char(0),char(2),char(0),char(50),char(0),char(0),char(0),char(51),char(0),char(34),char(0),char(2),char(0),char(2),char(0),char(52),char(0), -char(0),char(0),char(51),char(0),char(35),char(0),char(2),char(0),char(0),char(0),char(52),char(0),char(0),char(0),char(53),char(0),char(36),char(0),char(8),char(0), -char(13),char(0),char(54),char(0),char(14),char(0),char(55),char(0),char(32),char(0),char(56),char(0),char(34),char(0),char(57),char(0),char(35),char(0),char(58),char(0), -char(33),char(0),char(59),char(0),char(4),char(0),char(60),char(0),char(4),char(0),char(61),char(0),char(37),char(0),char(4),char(0),char(36),char(0),char(62),char(0), -char(13),char(0),char(63),char(0),char(4),char(0),char(64),char(0),char(0),char(0),char(37),char(0),char(38),char(0),char(7),char(0),char(27),char(0),char(38),char(0), -char(37),char(0),char(65),char(0),char(25),char(0),char(66),char(0),char(26),char(0),char(67),char(0),char(39),char(0),char(68),char(0),char(7),char(0),char(43),char(0), -char(0),char(0),char(69),char(0),char(40),char(0),char(2),char(0),char(38),char(0),char(70),char(0),char(13),char(0),char(39),char(0),char(41),char(0),char(4),char(0), -char(19),char(0),char(71),char(0),char(27),char(0),char(72),char(0),char(4),char(0),char(73),char(0),char(7),char(0),char(74),char(0),char(42),char(0),char(4),char(0), -char(27),char(0),char(38),char(0),char(41),char(0),char(75),char(0),char(4),char(0),char(76),char(0),char(7),char(0),char(43),char(0),char(43),char(0),char(3),char(0), -char(29),char(0),char(47),char(0),char(4),char(0),char(77),char(0),char(0),char(0),char(37),char(0),char(44),char(0),char(3),char(0),char(29),char(0),char(47),char(0), -char(4),char(0),char(78),char(0),char(0),char(0),char(37),char(0),char(45),char(0),char(3),char(0),char(29),char(0),char(47),char(0),char(4),char(0),char(77),char(0), -char(0),char(0),char(37),char(0),char(46),char(0),char(4),char(0),char(4),char(0),char(79),char(0),char(7),char(0),char(80),char(0),char(7),char(0),char(81),char(0), -char(7),char(0),char(82),char(0),char(39),char(0),char(14),char(0),char(4),char(0),char(83),char(0),char(4),char(0),char(84),char(0),char(46),char(0),char(85),char(0), -char(4),char(0),char(86),char(0),char(7),char(0),char(87),char(0),char(7),char(0),char(88),char(0),char(7),char(0),char(89),char(0),char(7),char(0),char(90),char(0), -char(7),char(0),char(91),char(0),char(4),char(0),char(92),char(0),char(4),char(0),char(93),char(0),char(4),char(0),char(94),char(0),char(4),char(0),char(95),char(0), -char(0),char(0),char(37),char(0),char(47),char(0),char(5),char(0),char(27),char(0),char(38),char(0),char(37),char(0),char(65),char(0),char(13),char(0),char(39),char(0), -char(7),char(0),char(43),char(0),char(4),char(0),char(96),char(0),char(48),char(0),char(5),char(0),char(29),char(0),char(47),char(0),char(13),char(0),char(97),char(0), -char(14),char(0),char(98),char(0),char(4),char(0),char(99),char(0),char(0),char(0),char(100),char(0),char(49),char(0),char(27),char(0),char(9),char(0),char(101),char(0), -char(9),char(0),char(102),char(0),char(27),char(0),char(103),char(0),char(0),char(0),char(35),char(0),char(20),char(0),char(104),char(0),char(20),char(0),char(105),char(0), -char(14),char(0),char(106),char(0),char(14),char(0),char(107),char(0),char(14),char(0),char(108),char(0),char(8),char(0),char(109),char(0),char(8),char(0),char(110),char(0), -char(8),char(0),char(111),char(0),char(8),char(0),char(112),char(0),char(8),char(0),char(113),char(0),char(8),char(0),char(114),char(0),char(8),char(0),char(115),char(0), -char(8),char(0),char(116),char(0),char(8),char(0),char(117),char(0),char(8),char(0),char(118),char(0),char(4),char(0),char(119),char(0),char(4),char(0),char(120),char(0), -char(4),char(0),char(121),char(0),char(4),char(0),char(122),char(0),char(4),char(0),char(123),char(0),char(4),char(0),char(124),char(0),char(4),char(0),char(125),char(0), -char(0),char(0),char(37),char(0),char(50),char(0),char(27),char(0),char(9),char(0),char(101),char(0),char(9),char(0),char(102),char(0),char(27),char(0),char(103),char(0), -char(0),char(0),char(35),char(0),char(19),char(0),char(104),char(0),char(19),char(0),char(105),char(0),char(13),char(0),char(106),char(0),char(13),char(0),char(107),char(0), -char(13),char(0),char(108),char(0),char(7),char(0),char(109),char(0),char(7),char(0),char(110),char(0),char(7),char(0),char(111),char(0),char(7),char(0),char(112),char(0), -char(7),char(0),char(113),char(0),char(7),char(0),char(114),char(0),char(7),char(0),char(115),char(0),char(7),char(0),char(116),char(0),char(7),char(0),char(117),char(0), -char(7),char(0),char(118),char(0),char(4),char(0),char(119),char(0),char(4),char(0),char(120),char(0),char(4),char(0),char(121),char(0),char(4),char(0),char(122),char(0), -char(4),char(0),char(123),char(0),char(4),char(0),char(124),char(0),char(4),char(0),char(125),char(0),char(0),char(0),char(37),char(0),char(51),char(0),char(22),char(0), -char(8),char(0),char(126),char(0),char(8),char(0),char(127),char(0),char(8),char(0),char(111),char(0),char(8),char(0),char(-128),char(0),char(8),char(0),char(115),char(0), -char(8),char(0),char(-127),char(0),char(8),char(0),char(-126),char(0),char(8),char(0),char(-125),char(0),char(8),char(0),char(-124),char(0),char(8),char(0),char(-123),char(0), -char(8),char(0),char(-122),char(0),char(8),char(0),char(-121),char(0),char(8),char(0),char(-120),char(0),char(8),char(0),char(-119),char(0),char(8),char(0),char(-118),char(0), -char(8),char(0),char(-117),char(0),char(4),char(0),char(-116),char(0),char(4),char(0),char(-115),char(0),char(4),char(0),char(-114),char(0),char(4),char(0),char(-113),char(0), -char(4),char(0),char(-112),char(0),char(0),char(0),char(37),char(0),char(52),char(0),char(22),char(0),char(7),char(0),char(126),char(0),char(7),char(0),char(127),char(0), -char(7),char(0),char(111),char(0),char(7),char(0),char(-128),char(0),char(7),char(0),char(115),char(0),char(7),char(0),char(-127),char(0),char(7),char(0),char(-126),char(0), -char(7),char(0),char(-125),char(0),char(7),char(0),char(-124),char(0),char(7),char(0),char(-123),char(0),char(7),char(0),char(-122),char(0),char(7),char(0),char(-121),char(0), -char(7),char(0),char(-120),char(0),char(7),char(0),char(-119),char(0),char(7),char(0),char(-118),char(0),char(7),char(0),char(-117),char(0),char(4),char(0),char(-116),char(0), -char(4),char(0),char(-115),char(0),char(4),char(0),char(-114),char(0),char(4),char(0),char(-113),char(0),char(4),char(0),char(-112),char(0),char(0),char(0),char(37),char(0), -char(53),char(0),char(2),char(0),char(51),char(0),char(-111),char(0),char(14),char(0),char(-110),char(0),char(54),char(0),char(2),char(0),char(52),char(0),char(-111),char(0), -char(13),char(0),char(-110),char(0),char(55),char(0),char(21),char(0),char(50),char(0),char(-109),char(0),char(17),char(0),char(-108),char(0),char(13),char(0),char(-107),char(0), -char(13),char(0),char(-106),char(0),char(13),char(0),char(-105),char(0),char(13),char(0),char(-104),char(0),char(13),char(0),char(-110),char(0),char(13),char(0),char(-103),char(0), -char(13),char(0),char(-102),char(0),char(13),char(0),char(-101),char(0),char(13),char(0),char(-100),char(0),char(7),char(0),char(-99),char(0),char(7),char(0),char(-98),char(0), -char(7),char(0),char(-97),char(0),char(7),char(0),char(-96),char(0),char(7),char(0),char(-95),char(0),char(7),char(0),char(-94),char(0),char(7),char(0),char(-93),char(0), -char(7),char(0),char(-92),char(0),char(7),char(0),char(-91),char(0),char(4),char(0),char(-90),char(0),char(56),char(0),char(22),char(0),char(49),char(0),char(-109),char(0), -char(18),char(0),char(-108),char(0),char(14),char(0),char(-107),char(0),char(14),char(0),char(-106),char(0),char(14),char(0),char(-105),char(0),char(14),char(0),char(-104),char(0), -char(14),char(0),char(-110),char(0),char(14),char(0),char(-103),char(0),char(14),char(0),char(-102),char(0),char(14),char(0),char(-101),char(0),char(14),char(0),char(-100),char(0), -char(8),char(0),char(-99),char(0),char(8),char(0),char(-98),char(0),char(8),char(0),char(-97),char(0),char(8),char(0),char(-96),char(0),char(8),char(0),char(-95),char(0), -char(8),char(0),char(-94),char(0),char(8),char(0),char(-93),char(0),char(8),char(0),char(-92),char(0),char(8),char(0),char(-91),char(0),char(4),char(0),char(-90),char(0), -char(0),char(0),char(37),char(0),char(57),char(0),char(2),char(0),char(4),char(0),char(-89),char(0),char(4),char(0),char(-88),char(0),char(58),char(0),char(13),char(0), -char(55),char(0),char(-87),char(0),char(55),char(0),char(-86),char(0),char(0),char(0),char(35),char(0),char(4),char(0),char(-85),char(0),char(4),char(0),char(-84),char(0), -char(4),char(0),char(-83),char(0),char(4),char(0),char(-82),char(0),char(7),char(0),char(-81),char(0),char(7),char(0),char(-80),char(0),char(4),char(0),char(-79),char(0), -char(4),char(0),char(-78),char(0),char(7),char(0),char(-77),char(0),char(4),char(0),char(-76),char(0),char(59),char(0),char(13),char(0),char(60),char(0),char(-87),char(0), -char(60),char(0),char(-86),char(0),char(0),char(0),char(35),char(0),char(4),char(0),char(-85),char(0),char(4),char(0),char(-84),char(0),char(4),char(0),char(-83),char(0), -char(4),char(0),char(-82),char(0),char(7),char(0),char(-81),char(0),char(7),char(0),char(-80),char(0),char(4),char(0),char(-79),char(0),char(4),char(0),char(-78),char(0), -char(7),char(0),char(-77),char(0),char(4),char(0),char(-76),char(0),char(61),char(0),char(14),char(0),char(56),char(0),char(-87),char(0),char(56),char(0),char(-86),char(0), -char(0),char(0),char(35),char(0),char(4),char(0),char(-85),char(0),char(4),char(0),char(-84),char(0),char(4),char(0),char(-83),char(0),char(4),char(0),char(-82),char(0), -char(8),char(0),char(-81),char(0),char(8),char(0),char(-80),char(0),char(4),char(0),char(-79),char(0),char(4),char(0),char(-78),char(0),char(8),char(0),char(-77),char(0), -char(4),char(0),char(-76),char(0),char(0),char(0),char(-75),char(0),char(62),char(0),char(3),char(0),char(59),char(0),char(-74),char(0),char(13),char(0),char(-73),char(0), -char(13),char(0),char(-72),char(0),char(63),char(0),char(3),char(0),char(61),char(0),char(-74),char(0),char(14),char(0),char(-73),char(0),char(14),char(0),char(-72),char(0), -char(64),char(0),char(3),char(0),char(59),char(0),char(-74),char(0),char(14),char(0),char(-73),char(0),char(14),char(0),char(-72),char(0),char(65),char(0),char(13),char(0), -char(59),char(0),char(-74),char(0),char(20),char(0),char(-71),char(0),char(20),char(0),char(-70),char(0),char(4),char(0),char(-69),char(0),char(4),char(0),char(-68),char(0), -char(4),char(0),char(-67),char(0),char(7),char(0),char(-66),char(0),char(7),char(0),char(-65),char(0),char(7),char(0),char(-64),char(0),char(7),char(0),char(-63),char(0), -char(7),char(0),char(-62),char(0),char(7),char(0),char(-61),char(0),char(7),char(0),char(-60),char(0),char(66),char(0),char(13),char(0),char(59),char(0),char(-74),char(0), -char(19),char(0),char(-71),char(0),char(19),char(0),char(-70),char(0),char(4),char(0),char(-69),char(0),char(4),char(0),char(-68),char(0),char(4),char(0),char(-67),char(0), -char(7),char(0),char(-66),char(0),char(7),char(0),char(-65),char(0),char(7),char(0),char(-64),char(0),char(7),char(0),char(-63),char(0),char(7),char(0),char(-62),char(0), -char(7),char(0),char(-61),char(0),char(7),char(0),char(-60),char(0),char(67),char(0),char(14),char(0),char(61),char(0),char(-74),char(0),char(20),char(0),char(-71),char(0), -char(20),char(0),char(-70),char(0),char(4),char(0),char(-69),char(0),char(4),char(0),char(-68),char(0),char(4),char(0),char(-67),char(0),char(8),char(0),char(-66),char(0), -char(8),char(0),char(-65),char(0),char(8),char(0),char(-64),char(0),char(8),char(0),char(-63),char(0),char(8),char(0),char(-62),char(0),char(8),char(0),char(-61),char(0), -char(8),char(0),char(-60),char(0),char(0),char(0),char(-59),char(0),char(68),char(0),char(10),char(0),char(61),char(0),char(-74),char(0),char(20),char(0),char(-71),char(0), -char(20),char(0),char(-70),char(0),char(8),char(0),char(-58),char(0),char(8),char(0),char(-57),char(0),char(8),char(0),char(-56),char(0),char(8),char(0),char(-62),char(0), -char(8),char(0),char(-61),char(0),char(8),char(0),char(-60),char(0),char(8),char(0),char(127),char(0),char(69),char(0),char(11),char(0),char(59),char(0),char(-74),char(0), -char(19),char(0),char(-71),char(0),char(19),char(0),char(-70),char(0),char(7),char(0),char(-58),char(0),char(7),char(0),char(-57),char(0),char(7),char(0),char(-56),char(0), -char(7),char(0),char(-62),char(0),char(7),char(0),char(-61),char(0),char(7),char(0),char(-60),char(0),char(7),char(0),char(127),char(0),char(0),char(0),char(21),char(0), -char(70),char(0),char(9),char(0),char(59),char(0),char(-74),char(0),char(19),char(0),char(-71),char(0),char(19),char(0),char(-70),char(0),char(13),char(0),char(-55),char(0), -char(13),char(0),char(-54),char(0),char(13),char(0),char(-53),char(0),char(13),char(0),char(-52),char(0),char(4),char(0),char(-51),char(0),char(4),char(0),char(-50),char(0), -char(71),char(0),char(9),char(0),char(61),char(0),char(-74),char(0),char(20),char(0),char(-71),char(0),char(20),char(0),char(-70),char(0),char(14),char(0),char(-55),char(0), -char(14),char(0),char(-54),char(0),char(14),char(0),char(-53),char(0),char(14),char(0),char(-52),char(0),char(4),char(0),char(-51),char(0),char(4),char(0),char(-50),char(0), -char(72),char(0),char(5),char(0),char(70),char(0),char(-49),char(0),char(4),char(0),char(-48),char(0),char(7),char(0),char(-47),char(0),char(7),char(0),char(-46),char(0), -char(7),char(0),char(-45),char(0),char(73),char(0),char(5),char(0),char(71),char(0),char(-49),char(0),char(4),char(0),char(-48),char(0),char(8),char(0),char(-47),char(0), -char(8),char(0),char(-46),char(0),char(8),char(0),char(-45),char(0),char(74),char(0),char(41),char(0),char(59),char(0),char(-74),char(0),char(19),char(0),char(-71),char(0), -char(19),char(0),char(-70),char(0),char(13),char(0),char(-55),char(0),char(13),char(0),char(-54),char(0),char(13),char(0),char(-44),char(0),char(13),char(0),char(-43),char(0), -char(13),char(0),char(-42),char(0),char(13),char(0),char(-41),char(0),char(13),char(0),char(-40),char(0),char(13),char(0),char(-39),char(0),char(13),char(0),char(-38),char(0), -char(13),char(0),char(-37),char(0),char(13),char(0),char(-36),char(0),char(13),char(0),char(-35),char(0),char(13),char(0),char(-34),char(0),char(0),char(0),char(-33),char(0), -char(0),char(0),char(-32),char(0),char(0),char(0),char(-31),char(0),char(0),char(0),char(-30),char(0),char(0),char(0),char(-29),char(0),char(0),char(0),char(-59),char(0), -char(13),char(0),char(-53),char(0),char(13),char(0),char(-52),char(0),char(13),char(0),char(-28),char(0),char(13),char(0),char(-27),char(0),char(13),char(0),char(-26),char(0), -char(13),char(0),char(-25),char(0),char(13),char(0),char(-24),char(0),char(13),char(0),char(-23),char(0),char(13),char(0),char(-22),char(0),char(13),char(0),char(-21),char(0), -char(13),char(0),char(-20),char(0),char(13),char(0),char(-19),char(0),char(13),char(0),char(-18),char(0),char(0),char(0),char(-17),char(0),char(0),char(0),char(-16),char(0), -char(0),char(0),char(-15),char(0),char(0),char(0),char(-14),char(0),char(0),char(0),char(-13),char(0),char(4),char(0),char(-12),char(0),char(75),char(0),char(41),char(0), -char(61),char(0),char(-74),char(0),char(20),char(0),char(-71),char(0),char(20),char(0),char(-70),char(0),char(14),char(0),char(-55),char(0),char(14),char(0),char(-54),char(0), -char(14),char(0),char(-44),char(0),char(14),char(0),char(-43),char(0),char(14),char(0),char(-42),char(0),char(14),char(0),char(-41),char(0),char(14),char(0),char(-40),char(0), -char(14),char(0),char(-39),char(0),char(14),char(0),char(-38),char(0),char(14),char(0),char(-37),char(0),char(14),char(0),char(-36),char(0),char(14),char(0),char(-35),char(0), -char(14),char(0),char(-34),char(0),char(0),char(0),char(-33),char(0),char(0),char(0),char(-32),char(0),char(0),char(0),char(-31),char(0),char(0),char(0),char(-30),char(0), -char(0),char(0),char(-29),char(0),char(0),char(0),char(-59),char(0),char(14),char(0),char(-53),char(0),char(14),char(0),char(-52),char(0),char(14),char(0),char(-28),char(0), -char(14),char(0),char(-27),char(0),char(14),char(0),char(-26),char(0),char(14),char(0),char(-25),char(0),char(14),char(0),char(-24),char(0),char(14),char(0),char(-23),char(0), -char(14),char(0),char(-22),char(0),char(14),char(0),char(-21),char(0),char(14),char(0),char(-20),char(0),char(14),char(0),char(-19),char(0),char(14),char(0),char(-18),char(0), -char(0),char(0),char(-17),char(0),char(0),char(0),char(-16),char(0),char(0),char(0),char(-15),char(0),char(0),char(0),char(-14),char(0),char(0),char(0),char(-13),char(0), -char(4),char(0),char(-12),char(0),char(76),char(0),char(9),char(0),char(59),char(0),char(-74),char(0),char(19),char(0),char(-71),char(0),char(19),char(0),char(-70),char(0), -char(7),char(0),char(-55),char(0),char(7),char(0),char(-54),char(0),char(7),char(0),char(-53),char(0),char(7),char(0),char(-52),char(0),char(4),char(0),char(-51),char(0), -char(4),char(0),char(-50),char(0),char(77),char(0),char(9),char(0),char(61),char(0),char(-74),char(0),char(20),char(0),char(-71),char(0),char(20),char(0),char(-70),char(0), -char(8),char(0),char(-55),char(0),char(8),char(0),char(-54),char(0),char(8),char(0),char(-53),char(0),char(8),char(0),char(-52),char(0),char(4),char(0),char(-51),char(0), -char(4),char(0),char(-50),char(0),char(78),char(0),char(5),char(0),char(58),char(0),char(-74),char(0),char(13),char(0),char(-11),char(0),char(13),char(0),char(-10),char(0), -char(7),char(0),char(-9),char(0),char(0),char(0),char(37),char(0),char(79),char(0),char(4),char(0),char(61),char(0),char(-74),char(0),char(14),char(0),char(-11),char(0), -char(14),char(0),char(-10),char(0),char(8),char(0),char(-9),char(0),char(80),char(0),char(4),char(0),char(7),char(0),char(-8),char(0),char(7),char(0),char(-7),char(0), -char(7),char(0),char(-6),char(0),char(4),char(0),char(79),char(0),char(81),char(0),char(10),char(0),char(80),char(0),char(-5),char(0),char(13),char(0),char(-4),char(0), -char(13),char(0),char(-3),char(0),char(13),char(0),char(-2),char(0),char(13),char(0),char(-1),char(0),char(13),char(0),char(0),char(1),char(7),char(0),char(-99),char(0), -char(7),char(0),char(1),char(1),char(4),char(0),char(2),char(1),char(4),char(0),char(53),char(0),char(82),char(0),char(4),char(0),char(80),char(0),char(-5),char(0), -char(4),char(0),char(3),char(1),char(7),char(0),char(4),char(1),char(4),char(0),char(5),char(1),char(83),char(0),char(4),char(0),char(13),char(0),char(0),char(1), -char(80),char(0),char(-5),char(0),char(4),char(0),char(6),char(1),char(7),char(0),char(7),char(1),char(84),char(0),char(7),char(0),char(13),char(0),char(8),char(1), -char(80),char(0),char(-5),char(0),char(4),char(0),char(9),char(1),char(7),char(0),char(10),char(1),char(7),char(0),char(11),char(1),char(7),char(0),char(12),char(1), -char(4),char(0),char(53),char(0),char(85),char(0),char(6),char(0),char(17),char(0),char(13),char(1),char(13),char(0),char(11),char(1),char(13),char(0),char(14),char(1), -char(60),char(0),char(15),char(1),char(4),char(0),char(16),char(1),char(7),char(0),char(12),char(1),char(86),char(0),char(26),char(0),char(4),char(0),char(17),char(1), -char(7),char(0),char(18),char(1),char(7),char(0),char(127),char(0),char(7),char(0),char(19),char(1),char(7),char(0),char(20),char(1),char(7),char(0),char(21),char(1), -char(7),char(0),char(22),char(1),char(7),char(0),char(23),char(1),char(7),char(0),char(24),char(1),char(7),char(0),char(25),char(1),char(7),char(0),char(26),char(1), -char(7),char(0),char(27),char(1),char(7),char(0),char(28),char(1),char(7),char(0),char(29),char(1),char(7),char(0),char(30),char(1),char(7),char(0),char(31),char(1), -char(7),char(0),char(32),char(1),char(7),char(0),char(33),char(1),char(7),char(0),char(34),char(1),char(7),char(0),char(35),char(1),char(7),char(0),char(36),char(1), -char(4),char(0),char(37),char(1),char(4),char(0),char(38),char(1),char(4),char(0),char(39),char(1),char(4),char(0),char(40),char(1),char(4),char(0),char(120),char(0), -char(87),char(0),char(12),char(0),char(17),char(0),char(41),char(1),char(17),char(0),char(42),char(1),char(17),char(0),char(43),char(1),char(13),char(0),char(44),char(1), -char(13),char(0),char(45),char(1),char(7),char(0),char(46),char(1),char(4),char(0),char(47),char(1),char(4),char(0),char(48),char(1),char(4),char(0),char(49),char(1), -char(4),char(0),char(50),char(1),char(7),char(0),char(10),char(1),char(4),char(0),char(53),char(0),char(88),char(0),char(27),char(0),char(19),char(0),char(51),char(1), -char(17),char(0),char(52),char(1),char(17),char(0),char(53),char(1),char(13),char(0),char(44),char(1),char(13),char(0),char(54),char(1),char(13),char(0),char(55),char(1), -char(13),char(0),char(56),char(1),char(13),char(0),char(57),char(1),char(13),char(0),char(58),char(1),char(4),char(0),char(59),char(1),char(7),char(0),char(60),char(1), -char(4),char(0),char(61),char(1),char(4),char(0),char(62),char(1),char(4),char(0),char(63),char(1),char(7),char(0),char(64),char(1),char(7),char(0),char(65),char(1), -char(4),char(0),char(66),char(1),char(4),char(0),char(67),char(1),char(7),char(0),char(68),char(1),char(7),char(0),char(69),char(1),char(7),char(0),char(70),char(1), -char(7),char(0),char(71),char(1),char(7),char(0),char(72),char(1),char(7),char(0),char(73),char(1),char(4),char(0),char(74),char(1),char(4),char(0),char(75),char(1), -char(4),char(0),char(76),char(1),char(89),char(0),char(12),char(0),char(9),char(0),char(77),char(1),char(9),char(0),char(78),char(1),char(13),char(0),char(79),char(1), -char(7),char(0),char(80),char(1),char(7),char(0),char(-125),char(0),char(7),char(0),char(81),char(1),char(4),char(0),char(82),char(1),char(13),char(0),char(83),char(1), -char(4),char(0),char(84),char(1),char(4),char(0),char(85),char(1),char(4),char(0),char(86),char(1),char(4),char(0),char(53),char(0),char(90),char(0),char(19),char(0), -char(50),char(0),char(-109),char(0),char(87),char(0),char(87),char(1),char(80),char(0),char(88),char(1),char(81),char(0),char(89),char(1),char(82),char(0),char(90),char(1), -char(83),char(0),char(91),char(1),char(84),char(0),char(92),char(1),char(85),char(0),char(93),char(1),char(88),char(0),char(94),char(1),char(89),char(0),char(95),char(1), -char(4),char(0),char(96),char(1),char(4),char(0),char(62),char(1),char(4),char(0),char(97),char(1),char(4),char(0),char(98),char(1),char(4),char(0),char(99),char(1), -char(4),char(0),char(100),char(1),char(4),char(0),char(101),char(1),char(4),char(0),char(102),char(1),char(86),char(0),char(103),char(1),char(91),char(0),char(20),char(0), -char(16),char(0),char(104),char(1),char(14),char(0),char(105),char(1),char(14),char(0),char(106),char(1),char(14),char(0),char(107),char(1),char(14),char(0),char(108),char(1), -char(14),char(0),char(109),char(1),char(8),char(0),char(110),char(1),char(4),char(0),char(111),char(1),char(4),char(0),char(86),char(1),char(4),char(0),char(112),char(1), -char(4),char(0),char(113),char(1),char(8),char(0),char(114),char(1),char(8),char(0),char(115),char(1),char(8),char(0),char(116),char(1),char(8),char(0),char(117),char(1), -char(8),char(0),char(118),char(1),char(0),char(0),char(119),char(1),char(0),char(0),char(120),char(1),char(49),char(0),char(121),char(1),char(0),char(0),char(122),char(1), -char(92),char(0),char(20),char(0),char(15),char(0),char(104),char(1),char(13),char(0),char(105),char(1),char(13),char(0),char(106),char(1),char(13),char(0),char(107),char(1), -char(13),char(0),char(108),char(1),char(13),char(0),char(109),char(1),char(4),char(0),char(112),char(1),char(7),char(0),char(110),char(1),char(4),char(0),char(111),char(1), -char(4),char(0),char(86),char(1),char(7),char(0),char(114),char(1),char(7),char(0),char(115),char(1),char(7),char(0),char(116),char(1),char(4),char(0),char(113),char(1), -char(7),char(0),char(117),char(1),char(7),char(0),char(118),char(1),char(0),char(0),char(119),char(1),char(0),char(0),char(120),char(1),char(50),char(0),char(121),char(1), -char(0),char(0),char(122),char(1),char(93),char(0),char(9),char(0),char(20),char(0),char(123),char(1),char(14),char(0),char(124),char(1),char(8),char(0),char(125),char(1), -char(0),char(0),char(126),char(1),char(91),char(0),char(90),char(1),char(49),char(0),char(127),char(1),char(0),char(0),char(122),char(1),char(4),char(0),char(97),char(1), -char(0),char(0),char(37),char(0),char(94),char(0),char(7),char(0),char(0),char(0),char(126),char(1),char(92),char(0),char(90),char(1),char(50),char(0),char(127),char(1), -char(19),char(0),char(123),char(1),char(13),char(0),char(124),char(1),char(7),char(0),char(125),char(1),char(4),char(0),char(97),char(1),}; -int sBulletDNAlen64= sizeof(sBulletDNAstr64); diff --git a/src/LinearMath/btSerializer.h b/src/LinearMath/btSerializer.h index 9d95e1c8a..89b4d7468 100644 --- a/src/LinearMath/btSerializer.h +++ b/src/LinearMath/btSerializer.h @@ -26,7 +26,7 @@ subject to the following restrictions: -///only the 32bit versions for now + extern char sBulletDNAstr[]; extern int sBulletDNAlen; extern char sBulletDNAstr64[]; @@ -505,7 +505,7 @@ public: buffer[9] = '2'; buffer[10] = '8'; - buffer[11] = '6'; + buffer[11] = '7'; } diff --git a/src/LinearMath/btSerializer64.cpp b/src/LinearMath/btSerializer64.cpp new file mode 100644 index 000000000..05f59202d --- /dev/null +++ b/src/LinearMath/btSerializer64.cpp @@ -0,0 +1,599 @@ +char sBulletDNAstr64[]= { +char(83),char(68),char(78),char(65),char(78),char(65),char(77),char(69),char(-124),char(1),char(0),char(0),char(109),char(95),char(115),char(105),char(122),char(101),char(0),char(109), +char(95),char(99),char(97),char(112),char(97),char(99),char(105),char(116),char(121),char(0),char(42),char(109),char(95),char(100),char(97),char(116),char(97),char(0),char(109),char(95), +char(99),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(83),char(104),char(97),char(112),char(101),char(115),char(0),char(109),char(95),char(99),char(111), +char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(79),char(98),char(106),char(101),char(99),char(116),char(115),char(0),char(109),char(95),char(99),char(111),char(110), +char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(115),char(0),char(42),char(102),char(105),char(114),char(115),char(116),char(0),char(42),char(108),char(97),char(115), +char(116),char(0),char(109),char(95),char(102),char(108),char(111),char(97),char(116),char(115),char(91),char(52),char(93),char(0),char(109),char(95),char(101),char(108),char(91),char(51), +char(93),char(0),char(109),char(95),char(98),char(97),char(115),char(105),char(115),char(0),char(109),char(95),char(111),char(114),char(105),char(103),char(105),char(110),char(0),char(109), +char(95),char(114),char(111),char(111),char(116),char(78),char(111),char(100),char(101),char(73),char(110),char(100),char(101),char(120),char(0),char(109),char(95),char(115),char(117),char(98), +char(116),char(114),char(101),char(101),char(83),char(105),char(122),char(101),char(0),char(109),char(95),char(113),char(117),char(97),char(110),char(116),char(105),char(122),char(101),char(100), +char(65),char(97),char(98),char(98),char(77),char(105),char(110),char(91),char(51),char(93),char(0),char(109),char(95),char(113),char(117),char(97),char(110),char(116),char(105),char(122), +char(101),char(100),char(65),char(97),char(98),char(98),char(77),char(97),char(120),char(91),char(51),char(93),char(0),char(109),char(95),char(97),char(97),char(98),char(98),char(77), +char(105),char(110),char(79),char(114),char(103),char(0),char(109),char(95),char(97),char(97),char(98),char(98),char(77),char(97),char(120),char(79),char(114),char(103),char(0),char(109), +char(95),char(101),char(115),char(99),char(97),char(112),char(101),char(73),char(110),char(100),char(101),char(120),char(0),char(109),char(95),char(115),char(117),char(98),char(80),char(97), +char(114),char(116),char(0),char(109),char(95),char(116),char(114),char(105),char(97),char(110),char(103),char(108),char(101),char(73),char(110),char(100),char(101),char(120),char(0),char(109), +char(95),char(112),char(97),char(100),char(91),char(52),char(93),char(0),char(109),char(95),char(101),char(115),char(99),char(97),char(112),char(101),char(73),char(110),char(100),char(101), +char(120),char(79),char(114),char(84),char(114),char(105),char(97),char(110),char(103),char(108),char(101),char(73),char(110),char(100),char(101),char(120),char(0),char(109),char(95),char(98), +char(118),char(104),char(65),char(97),char(98),char(98),char(77),char(105),char(110),char(0),char(109),char(95),char(98),char(118),char(104),char(65),char(97),char(98),char(98),char(77), +char(97),char(120),char(0),char(109),char(95),char(98),char(118),char(104),char(81),char(117),char(97),char(110),char(116),char(105),char(122),char(97),char(116),char(105),char(111),char(110), +char(0),char(109),char(95),char(99),char(117),char(114),char(78),char(111),char(100),char(101),char(73),char(110),char(100),char(101),char(120),char(0),char(109),char(95),char(117),char(115), +char(101),char(81),char(117),char(97),char(110),char(116),char(105),char(122),char(97),char(116),char(105),char(111),char(110),char(0),char(109),char(95),char(110),char(117),char(109),char(67), +char(111),char(110),char(116),char(105),char(103),char(117),char(111),char(117),char(115),char(76),char(101),char(97),char(102),char(78),char(111),char(100),char(101),char(115),char(0),char(109), +char(95),char(110),char(117),char(109),char(81),char(117),char(97),char(110),char(116),char(105),char(122),char(101),char(100),char(67),char(111),char(110),char(116),char(105),char(103),char(117), +char(111),char(117),char(115),char(78),char(111),char(100),char(101),char(115),char(0),char(42),char(109),char(95),char(99),char(111),char(110),char(116),char(105),char(103),char(117),char(111), +char(117),char(115),char(78),char(111),char(100),char(101),char(115),char(80),char(116),char(114),char(0),char(42),char(109),char(95),char(113),char(117),char(97),char(110),char(116),char(105), +char(122),char(101),char(100),char(67),char(111),char(110),char(116),char(105),char(103),char(117),char(111),char(117),char(115),char(78),char(111),char(100),char(101),char(115),char(80),char(116), +char(114),char(0),char(42),char(109),char(95),char(115),char(117),char(98),char(84),char(114),char(101),char(101),char(73),char(110),char(102),char(111),char(80),char(116),char(114),char(0), +char(109),char(95),char(116),char(114),char(97),char(118),char(101),char(114),char(115),char(97),char(108),char(77),char(111),char(100),char(101),char(0),char(109),char(95),char(110),char(117), +char(109),char(83),char(117),char(98),char(116),char(114),char(101),char(101),char(72),char(101),char(97),char(100),char(101),char(114),char(115),char(0),char(42),char(109),char(95),char(110), +char(97),char(109),char(101),char(0),char(109),char(95),char(115),char(104),char(97),char(112),char(101),char(84),char(121),char(112),char(101),char(0),char(109),char(95),char(112),char(97), +char(100),char(100),char(105),char(110),char(103),char(91),char(52),char(93),char(0),char(109),char(95),char(99),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110), +char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(109),char(95),char(108),char(111),char(99),char(97),char(108),char(83),char(99),char(97), +char(108),char(105),char(110),char(103),char(0),char(109),char(95),char(112),char(108),char(97),char(110),char(101),char(78),char(111),char(114),char(109),char(97),char(108),char(0),char(109), +char(95),char(112),char(108),char(97),char(110),char(101),char(67),char(111),char(110),char(115),char(116),char(97),char(110),char(116),char(0),char(109),char(95),char(105),char(109),char(112), +char(108),char(105),char(99),char(105),char(116),char(83),char(104),char(97),char(112),char(101),char(68),char(105),char(109),char(101),char(110),char(115),char(105),char(111),char(110),char(115), +char(0),char(109),char(95),char(99),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(77),char(97),char(114),char(103),char(105),char(110),char(0),char(109), +char(95),char(112),char(97),char(100),char(100),char(105),char(110),char(103),char(0),char(109),char(95),char(112),char(111),char(115),char(0),char(109),char(95),char(114),char(97),char(100), +char(105),char(117),char(115),char(0),char(109),char(95),char(99),char(111),char(110),char(118),char(101),char(120),char(73),char(110),char(116),char(101),char(114),char(110),char(97),char(108), +char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(42),char(109),char(95),char(108),char(111),char(99),char(97),char(108),char(80),char(111), +char(115),char(105),char(116),char(105),char(111),char(110),char(65),char(114),char(114),char(97),char(121),char(80),char(116),char(114),char(0),char(109),char(95),char(108),char(111),char(99), +char(97),char(108),char(80),char(111),char(115),char(105),char(116),char(105),char(111),char(110),char(65),char(114),char(114),char(97),char(121),char(83),char(105),char(122),char(101),char(0), +char(109),char(95),char(118),char(97),char(108),char(117),char(101),char(0),char(109),char(95),char(112),char(97),char(100),char(91),char(50),char(93),char(0),char(109),char(95),char(118), +char(97),char(108),char(117),char(101),char(115),char(91),char(51),char(93),char(0),char(109),char(95),char(112),char(97),char(100),char(0),char(42),char(109),char(95),char(118),char(101), +char(114),char(116),char(105),char(99),char(101),char(115),char(51),char(102),char(0),char(42),char(109),char(95),char(118),char(101),char(114),char(116),char(105),char(99),char(101),char(115), +char(51),char(100),char(0),char(42),char(109),char(95),char(105),char(110),char(100),char(105),char(99),char(101),char(115),char(51),char(50),char(0),char(42),char(109),char(95),char(51), +char(105),char(110),char(100),char(105),char(99),char(101),char(115),char(49),char(54),char(0),char(42),char(109),char(95),char(51),char(105),char(110),char(100),char(105),char(99),char(101), +char(115),char(56),char(0),char(42),char(109),char(95),char(105),char(110),char(100),char(105),char(99),char(101),char(115),char(49),char(54),char(0),char(109),char(95),char(110),char(117), +char(109),char(84),char(114),char(105),char(97),char(110),char(103),char(108),char(101),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(86),char(101),char(114),char(116), +char(105),char(99),char(101),char(115),char(0),char(42),char(109),char(95),char(109),char(101),char(115),char(104),char(80),char(97),char(114),char(116),char(115),char(80),char(116),char(114), +char(0),char(109),char(95),char(115),char(99),char(97),char(108),char(105),char(110),char(103),char(0),char(109),char(95),char(110),char(117),char(109),char(77),char(101),char(115),char(104), +char(80),char(97),char(114),char(116),char(115),char(0),char(109),char(95),char(109),char(101),char(115),char(104),char(73),char(110),char(116),char(101),char(114),char(102),char(97),char(99), +char(101),char(0),char(42),char(109),char(95),char(113),char(117),char(97),char(110),char(116),char(105),char(122),char(101),char(100),char(70),char(108),char(111),char(97),char(116),char(66), +char(118),char(104),char(0),char(42),char(109),char(95),char(113),char(117),char(97),char(110),char(116),char(105),char(122),char(101),char(100),char(68),char(111),char(117),char(98),char(108), +char(101),char(66),char(118),char(104),char(0),char(42),char(109),char(95),char(116),char(114),char(105),char(97),char(110),char(103),char(108),char(101),char(73),char(110),char(102),char(111), +char(77),char(97),char(112),char(0),char(109),char(95),char(112),char(97),char(100),char(51),char(91),char(52),char(93),char(0),char(109),char(95),char(116),char(114),char(105),char(109), +char(101),char(115),char(104),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(109),char(95),char(116),char(114),char(97),char(110),char(115), +char(102),char(111),char(114),char(109),char(0),char(42),char(109),char(95),char(99),char(104),char(105),char(108),char(100),char(83),char(104),char(97),char(112),char(101),char(0),char(109), +char(95),char(99),char(104),char(105),char(108),char(100),char(83),char(104),char(97),char(112),char(101),char(84),char(121),char(112),char(101),char(0),char(109),char(95),char(99),char(104), +char(105),char(108),char(100),char(77),char(97),char(114),char(103),char(105),char(110),char(0),char(42),char(109),char(95),char(99),char(104),char(105),char(108),char(100),char(83),char(104), +char(97),char(112),char(101),char(80),char(116),char(114),char(0),char(109),char(95),char(110),char(117),char(109),char(67),char(104),char(105),char(108),char(100),char(83),char(104),char(97), +char(112),char(101),char(115),char(0),char(109),char(95),char(117),char(112),char(65),char(120),char(105),char(115),char(0),char(109),char(95),char(117),char(112),char(73),char(110),char(100), +char(101),char(120),char(0),char(109),char(95),char(102),char(108),char(97),char(103),char(115),char(0),char(109),char(95),char(101),char(100),char(103),char(101),char(86),char(48),char(86), +char(49),char(65),char(110),char(103),char(108),char(101),char(0),char(109),char(95),char(101),char(100),char(103),char(101),char(86),char(49),char(86),char(50),char(65),char(110),char(103), +char(108),char(101),char(0),char(109),char(95),char(101),char(100),char(103),char(101),char(86),char(50),char(86),char(48),char(65),char(110),char(103),char(108),char(101),char(0),char(42), +char(109),char(95),char(104),char(97),char(115),char(104),char(84),char(97),char(98),char(108),char(101),char(80),char(116),char(114),char(0),char(42),char(109),char(95),char(110),char(101), +char(120),char(116),char(80),char(116),char(114),char(0),char(42),char(109),char(95),char(118),char(97),char(108),char(117),char(101),char(65),char(114),char(114),char(97),char(121),char(80), +char(116),char(114),char(0),char(42),char(109),char(95),char(107),char(101),char(121),char(65),char(114),char(114),char(97),char(121),char(80),char(116),char(114),char(0),char(109),char(95), +char(99),char(111),char(110),char(118),char(101),char(120),char(69),char(112),char(115),char(105),char(108),char(111),char(110),char(0),char(109),char(95),char(112),char(108),char(97),char(110), +char(97),char(114),char(69),char(112),char(115),char(105),char(108),char(111),char(110),char(0),char(109),char(95),char(101),char(113),char(117),char(97),char(108),char(86),char(101),char(114), +char(116),char(101),char(120),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),char(95),char(101),char(100),char(103),char(101),char(68), +char(105),char(115),char(116),char(97),char(110),char(99),char(101),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),char(95),char(122), +char(101),char(114),char(111),char(65),char(114),char(101),char(97),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),char(95),char(110), +char(101),char(120),char(116),char(83),char(105),char(122),char(101),char(0),char(109),char(95),char(104),char(97),char(115),char(104),char(84),char(97),char(98),char(108),char(101),char(83), +char(105),char(122),char(101),char(0),char(109),char(95),char(110),char(117),char(109),char(86),char(97),char(108),char(117),char(101),char(115),char(0),char(109),char(95),char(110),char(117), +char(109),char(75),char(101),char(121),char(115),char(0),char(109),char(95),char(103),char(105),char(109),char(112),char(97),char(99),char(116),char(83),char(117),char(98),char(84),char(121), +char(112),char(101),char(0),char(42),char(109),char(95),char(117),char(110),char(115),char(99),char(97),char(108),char(101),char(100),char(80),char(111),char(105),char(110),char(116),char(115), +char(70),char(108),char(111),char(97),char(116),char(80),char(116),char(114),char(0),char(42),char(109),char(95),char(117),char(110),char(115),char(99),char(97),char(108),char(101),char(100), +char(80),char(111),char(105),char(110),char(116),char(115),char(68),char(111),char(117),char(98),char(108),char(101),char(80),char(116),char(114),char(0),char(109),char(95),char(110),char(117), +char(109),char(85),char(110),char(115),char(99),char(97),char(108),char(101),char(100),char(80),char(111),char(105),char(110),char(116),char(115),char(0),char(109),char(95),char(112),char(97), +char(100),char(100),char(105),char(110),char(103),char(51),char(91),char(52),char(93),char(0),char(42),char(109),char(95),char(98),char(114),char(111),char(97),char(100),char(112),char(104), +char(97),char(115),char(101),char(72),char(97),char(110),char(100),char(108),char(101),char(0),char(42),char(109),char(95),char(99),char(111),char(108),char(108),char(105),char(115),char(105), +char(111),char(110),char(83),char(104),char(97),char(112),char(101),char(0),char(42),char(109),char(95),char(114),char(111),char(111),char(116),char(67),char(111),char(108),char(108),char(105), +char(115),char(105),char(111),char(110),char(83),char(104),char(97),char(112),char(101),char(0),char(109),char(95),char(119),char(111),char(114),char(108),char(100),char(84),char(114),char(97), +char(110),char(115),char(102),char(111),char(114),char(109),char(0),char(109),char(95),char(105),char(110),char(116),char(101),char(114),char(112),char(111),char(108),char(97),char(116),char(105), +char(111),char(110),char(87),char(111),char(114),char(108),char(100),char(84),char(114),char(97),char(110),char(115),char(102),char(111),char(114),char(109),char(0),char(109),char(95),char(105), +char(110),char(116),char(101),char(114),char(112),char(111),char(108),char(97),char(116),char(105),char(111),char(110),char(76),char(105),char(110),char(101),char(97),char(114),char(86),char(101), +char(108),char(111),char(99),char(105),char(116),char(121),char(0),char(109),char(95),char(105),char(110),char(116),char(101),char(114),char(112),char(111),char(108),char(97),char(116),char(105), +char(111),char(110),char(65),char(110),char(103),char(117),char(108),char(97),char(114),char(86),char(101),char(108),char(111),char(99),char(105),char(116),char(121),char(0),char(109),char(95), +char(97),char(110),char(105),char(115),char(111),char(116),char(114),char(111),char(112),char(105),char(99),char(70),char(114),char(105),char(99),char(116),char(105),char(111),char(110),char(0), +char(109),char(95),char(99),char(111),char(110),char(116),char(97),char(99),char(116),char(80),char(114),char(111),char(99),char(101),char(115),char(115),char(105),char(110),char(103),char(84), +char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),char(95),char(100),char(101),char(97),char(99),char(116),char(105),char(118),char(97),char(116), +char(105),char(111),char(110),char(84),char(105),char(109),char(101),char(0),char(109),char(95),char(102),char(114),char(105),char(99),char(116),char(105),char(111),char(110),char(0),char(109), +char(95),char(114),char(111),char(108),char(108),char(105),char(110),char(103),char(70),char(114),char(105),char(99),char(116),char(105),char(111),char(110),char(0),char(109),char(95),char(99), +char(111),char(110),char(116),char(97),char(99),char(116),char(68),char(97),char(109),char(112),char(105),char(110),char(103),char(0),char(109),char(95),char(99),char(111),char(110),char(116), +char(97),char(99),char(116),char(83),char(116),char(105),char(102),char(102),char(110),char(101),char(115),char(115),char(0),char(109),char(95),char(114),char(101),char(115),char(116),char(105), +char(116),char(117),char(116),char(105),char(111),char(110),char(0),char(109),char(95),char(104),char(105),char(116),char(70),char(114),char(97),char(99),char(116),char(105),char(111),char(110), +char(0),char(109),char(95),char(99),char(99),char(100),char(83),char(119),char(101),char(112),char(116),char(83),char(112),char(104),char(101),char(114),char(101),char(82),char(97),char(100), +char(105),char(117),char(115),char(0),char(109),char(95),char(99),char(99),char(100),char(77),char(111),char(116),char(105),char(111),char(110),char(84),char(104),char(114),char(101),char(115), +char(104),char(111),char(108),char(100),char(0),char(109),char(95),char(104),char(97),char(115),char(65),char(110),char(105),char(115),char(111),char(116),char(114),char(111),char(112),char(105), +char(99),char(70),char(114),char(105),char(99),char(116),char(105),char(111),char(110),char(0),char(109),char(95),char(99),char(111),char(108),char(108),char(105),char(115),char(105),char(111), +char(110),char(70),char(108),char(97),char(103),char(115),char(0),char(109),char(95),char(105),char(115),char(108),char(97),char(110),char(100),char(84),char(97),char(103),char(49),char(0), +char(109),char(95),char(99),char(111),char(109),char(112),char(97),char(110),char(105),char(111),char(110),char(73),char(100),char(0),char(109),char(95),char(97),char(99),char(116),char(105), +char(118),char(97),char(116),char(105),char(111),char(110),char(83),char(116),char(97),char(116),char(101),char(49),char(0),char(109),char(95),char(105),char(110),char(116),char(101),char(114), +char(110),char(97),char(108),char(84),char(121),char(112),char(101),char(0),char(109),char(95),char(99),char(104),char(101),char(99),char(107),char(67),char(111),char(108),char(108),char(105), +char(100),char(101),char(87),char(105),char(116),char(104),char(0),char(109),char(95),char(116),char(97),char(117),char(0),char(109),char(95),char(100),char(97),char(109),char(112),char(105), +char(110),char(103),char(0),char(109),char(95),char(116),char(105),char(109),char(101),char(83),char(116),char(101),char(112),char(0),char(109),char(95),char(109),char(97),char(120),char(69), +char(114),char(114),char(111),char(114),char(82),char(101),char(100),char(117),char(99),char(116),char(105),char(111),char(110),char(0),char(109),char(95),char(115),char(111),char(114),char(0), +char(109),char(95),char(101),char(114),char(112),char(0),char(109),char(95),char(101),char(114),char(112),char(50),char(0),char(109),char(95),char(103),char(108),char(111),char(98),char(97), +char(108),char(67),char(102),char(109),char(0),char(109),char(95),char(115),char(112),char(108),char(105),char(116),char(73),char(109),char(112),char(117),char(108),char(115),char(101),char(80), +char(101),char(110),char(101),char(116),char(114),char(97),char(116),char(105),char(111),char(110),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0), +char(109),char(95),char(115),char(112),char(108),char(105),char(116),char(73),char(109),char(112),char(117),char(108),char(115),char(101),char(84),char(117),char(114),char(110),char(69),char(114), +char(112),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(83),char(108),char(111),char(112),char(0),char(109),char(95),char(119),char(97),char(114), +char(109),char(115),char(116),char(97),char(114),char(116),char(105),char(110),char(103),char(70),char(97),char(99),char(116),char(111),char(114),char(0),char(109),char(95),char(109),char(97), +char(120),char(71),char(121),char(114),char(111),char(115),char(99),char(111),char(112),char(105),char(99),char(70),char(111),char(114),char(99),char(101),char(0),char(109),char(95),char(115), +char(105),char(110),char(103),char(108),char(101),char(65),char(120),char(105),char(115),char(82),char(111),char(108),char(108),char(105),char(110),char(103),char(70),char(114),char(105),char(99), +char(116),char(105),char(111),char(110),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),char(95),char(110),char(117),char(109),char(73), +char(116),char(101),char(114),char(97),char(116),char(105),char(111),char(110),char(115),char(0),char(109),char(95),char(115),char(111),char(108),char(118),char(101),char(114),char(77),char(111), +char(100),char(101),char(0),char(109),char(95),char(114),char(101),char(115),char(116),char(105),char(110),char(103),char(67),char(111),char(110),char(116),char(97),char(99),char(116),char(82), +char(101),char(115),char(116),char(105),char(116),char(117),char(116),char(105),char(111),char(110),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0), +char(109),char(95),char(109),char(105),char(110),char(105),char(109),char(117),char(109),char(83),char(111),char(108),char(118),char(101),char(114),char(66),char(97),char(116),char(99),char(104), +char(83),char(105),char(122),char(101),char(0),char(109),char(95),char(115),char(112),char(108),char(105),char(116),char(73),char(109),char(112),char(117),char(108),char(115),char(101),char(0), +char(109),char(95),char(115),char(111),char(108),char(118),char(101),char(114),char(73),char(110),char(102),char(111),char(0),char(109),char(95),char(103),char(114),char(97),char(118),char(105), +char(116),char(121),char(0),char(109),char(95),char(99),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(79),char(98),char(106),char(101),char(99),char(116), +char(68),char(97),char(116),char(97),char(0),char(109),char(95),char(105),char(110),char(118),char(73),char(110),char(101),char(114),char(116),char(105),char(97),char(84),char(101),char(110), +char(115),char(111),char(114),char(87),char(111),char(114),char(108),char(100),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(86),char(101),char(108), +char(111),char(99),char(105),char(116),char(121),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(86),char(101),char(108),char(111),char(99), +char(105),char(116),char(121),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(70),char(97),char(99),char(116),char(111),char(114),char(0), +char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(70),char(97),char(99),char(116),char(111),char(114),char(0),char(109),char(95),char(103),char(114),char(97), +char(118),char(105),char(116),char(121),char(95),char(97),char(99),char(99),char(101),char(108),char(101),char(114),char(97),char(116),char(105),char(111),char(110),char(0),char(109),char(95), +char(105),char(110),char(118),char(73),char(110),char(101),char(114),char(116),char(105),char(97),char(76),char(111),char(99),char(97),char(108),char(0),char(109),char(95),char(116),char(111), +char(116),char(97),char(108),char(70),char(111),char(114),char(99),char(101),char(0),char(109),char(95),char(116),char(111),char(116),char(97),char(108),char(84),char(111),char(114),char(113), +char(117),char(101),char(0),char(109),char(95),char(105),char(110),char(118),char(101),char(114),char(115),char(101),char(77),char(97),char(115),char(115),char(0),char(109),char(95),char(108), +char(105),char(110),char(101),char(97),char(114),char(68),char(97),char(109),char(112),char(105),char(110),char(103),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108), +char(97),char(114),char(68),char(97),char(109),char(112),char(105),char(110),char(103),char(0),char(109),char(95),char(97),char(100),char(100),char(105),char(116),char(105),char(111),char(110), +char(97),char(108),char(68),char(97),char(109),char(112),char(105),char(110),char(103),char(70),char(97),char(99),char(116),char(111),char(114),char(0),char(109),char(95),char(97),char(100), +char(100),char(105),char(116),char(105),char(111),char(110),char(97),char(108),char(76),char(105),char(110),char(101),char(97),char(114),char(68),char(97),char(109),char(112),char(105),char(110), +char(103),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(83),char(113),char(114),char(0),char(109),char(95),char(97),char(100),char(100),char(105), +char(116),char(105),char(111),char(110),char(97),char(108),char(65),char(110),char(103),char(117),char(108),char(97),char(114),char(68),char(97),char(109),char(112),char(105),char(110),char(103), +char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(83),char(113),char(114),char(0),char(109),char(95),char(97),char(100),char(100),char(105),char(116), +char(105),char(111),char(110),char(97),char(108),char(65),char(110),char(103),char(117),char(108),char(97),char(114),char(68),char(97),char(109),char(112),char(105),char(110),char(103),char(70), +char(97),char(99),char(116),char(111),char(114),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(83),char(108),char(101),char(101),char(112),char(105), +char(110),char(103),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97), +char(114),char(83),char(108),char(101),char(101),char(112),char(105),char(110),char(103),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109), +char(95),char(97),char(100),char(100),char(105),char(116),char(105),char(111),char(110),char(97),char(108),char(68),char(97),char(109),char(112),char(105),char(110),char(103),char(0),char(109), +char(95),char(110),char(117),char(109),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(82),char(111),char(119),char(115),char(0),char(110), +char(117),char(98),char(0),char(42),char(109),char(95),char(114),char(98),char(65),char(0),char(42),char(109),char(95),char(114),char(98),char(66),char(0),char(109),char(95),char(111), +char(98),char(106),char(101),char(99),char(116),char(84),char(121),char(112),char(101),char(0),char(109),char(95),char(117),char(115),char(101),char(114),char(67),char(111),char(110),char(115), +char(116),char(114),char(97),char(105),char(110),char(116),char(84),char(121),char(112),char(101),char(0),char(109),char(95),char(117),char(115),char(101),char(114),char(67),char(111),char(110), +char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(73),char(100),char(0),char(109),char(95),char(110),char(101),char(101),char(100),char(115),char(70),char(101),char(101), +char(100),char(98),char(97),char(99),char(107),char(0),char(109),char(95),char(97),char(112),char(112),char(108),char(105),char(101),char(100),char(73),char(109),char(112),char(117),char(108), +char(115),char(101),char(0),char(109),char(95),char(100),char(98),char(103),char(68),char(114),char(97),char(119),char(83),char(105),char(122),char(101),char(0),char(109),char(95),char(100), +char(105),char(115),char(97),char(98),char(108),char(101),char(67),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(115),char(66),char(101),char(116),char(119), +char(101),char(101),char(110),char(76),char(105),char(110),char(107),char(101),char(100),char(66),char(111),char(100),char(105),char(101),char(115),char(0),char(109),char(95),char(111),char(118), +char(101),char(114),char(114),char(105),char(100),char(101),char(78),char(117),char(109),char(83),char(111),char(108),char(118),char(101),char(114),char(73),char(116),char(101),char(114),char(97), +char(116),char(105),char(111),char(110),char(115),char(0),char(109),char(95),char(98),char(114),char(101),char(97),char(107),char(105),char(110),char(103),char(73),char(109),char(112),char(117), +char(108),char(115),char(101),char(84),char(104),char(114),char(101),char(115),char(104),char(111),char(108),char(100),char(0),char(109),char(95),char(105),char(115),char(69),char(110),char(97), +char(98),char(108),char(101),char(100),char(0),char(112),char(97),char(100),char(100),char(105),char(110),char(103),char(91),char(52),char(93),char(0),char(109),char(95),char(116),char(121), +char(112),char(101),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(97),char(116),char(97),char(0),char(109),char(95),char(112), +char(105),char(118),char(111),char(116),char(73),char(110),char(65),char(0),char(109),char(95),char(112),char(105),char(118),char(111),char(116),char(73),char(110),char(66),char(0),char(109), +char(95),char(114),char(98),char(65),char(70),char(114),char(97),char(109),char(101),char(0),char(109),char(95),char(114),char(98),char(66),char(70),char(114),char(97),char(109),char(101), +char(0),char(109),char(95),char(117),char(115),char(101),char(82),char(101),char(102),char(101),char(114),char(101),char(110),char(99),char(101),char(70),char(114),char(97),char(109),char(101), +char(65),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(79),char(110),char(108),char(121),char(0),char(109),char(95),char(101),char(110), +char(97),char(98),char(108),char(101),char(65),char(110),char(103),char(117),char(108),char(97),char(114),char(77),char(111),char(116),char(111),char(114),char(0),char(109),char(95),char(109), +char(111),char(116),char(111),char(114),char(84),char(97),char(114),char(103),char(101),char(116),char(86),char(101),char(108),char(111),char(99),char(105),char(116),char(121),char(0),char(109), +char(95),char(109),char(97),char(120),char(77),char(111),char(116),char(111),char(114),char(73),char(109),char(112),char(117),char(108),char(115),char(101),char(0),char(109),char(95),char(108), +char(111),char(119),char(101),char(114),char(76),char(105),char(109),char(105),char(116),char(0),char(109),char(95),char(117),char(112),char(112),char(101),char(114),char(76),char(105),char(109), +char(105),char(116),char(0),char(109),char(95),char(108),char(105),char(109),char(105),char(116),char(83),char(111),char(102),char(116),char(110),char(101),char(115),char(115),char(0),char(109), +char(95),char(98),char(105),char(97),char(115),char(70),char(97),char(99),char(116),char(111),char(114),char(0),char(109),char(95),char(114),char(101),char(108),char(97),char(120),char(97), +char(116),char(105),char(111),char(110),char(70),char(97),char(99),char(116),char(111),char(114),char(0),char(109),char(95),char(112),char(97),char(100),char(100),char(105),char(110),char(103), +char(49),char(91),char(52),char(93),char(0),char(109),char(95),char(115),char(119),char(105),char(110),char(103),char(83),char(112),char(97),char(110),char(49),char(0),char(109),char(95), +char(115),char(119),char(105),char(110),char(103),char(83),char(112),char(97),char(110),char(50),char(0),char(109),char(95),char(116),char(119),char(105),char(115),char(116),char(83),char(112), +char(97),char(110),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(85),char(112),char(112),char(101),char(114),char(76),char(105),char(109),char(105), +char(116),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(76),char(111),char(119),char(101),char(114),char(76),char(105),char(109),char(105),char(116), +char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(85),char(112),char(112),char(101),char(114),char(76),char(105),char(109),char(105),char(116), +char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(76),char(111),char(119),char(101),char(114),char(76),char(105),char(109),char(105),char(116), +char(0),char(109),char(95),char(117),char(115),char(101),char(76),char(105),char(110),char(101),char(97),char(114),char(82),char(101),char(102),char(101),char(114),char(101),char(110),char(99), +char(101),char(70),char(114),char(97),char(109),char(101),char(65),char(0),char(109),char(95),char(117),char(115),char(101),char(79),char(102),char(102),char(115),char(101),char(116),char(70), +char(111),char(114),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(70),char(114),char(97),char(109),char(101),char(0),char(109),char(95), +char(54),char(100),char(111),char(102),char(68),char(97),char(116),char(97),char(0),char(109),char(95),char(115),char(112),char(114),char(105),char(110),char(103),char(69),char(110),char(97), +char(98),char(108),char(101),char(100),char(91),char(54),char(93),char(0),char(109),char(95),char(101),char(113),char(117),char(105),char(108),char(105),char(98),char(114),char(105),char(117), +char(109),char(80),char(111),char(105),char(110),char(116),char(91),char(54),char(93),char(0),char(109),char(95),char(115),char(112),char(114),char(105),char(110),char(103),char(83),char(116), +char(105),char(102),char(102),char(110),char(101),char(115),char(115),char(91),char(54),char(93),char(0),char(109),char(95),char(115),char(112),char(114),char(105),char(110),char(103),char(68), +char(97),char(109),char(112),char(105),char(110),char(103),char(91),char(54),char(93),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(66),char(111), +char(117),char(110),char(99),char(101),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(83),char(116),char(111),char(112),char(69),char(82),char(80), +char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(83),char(116),char(111),char(112),char(67),char(70),char(77),char(0),char(109),char(95),char(108), +char(105),char(110),char(101),char(97),char(114),char(77),char(111),char(116),char(111),char(114),char(69),char(82),char(80),char(0),char(109),char(95),char(108),char(105),char(110),char(101), +char(97),char(114),char(77),char(111),char(116),char(111),char(114),char(67),char(70),char(77),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(84), +char(97),char(114),char(103),char(101),char(116),char(86),char(101),char(108),char(111),char(99),char(105),char(116),char(121),char(0),char(109),char(95),char(108),char(105),char(110),char(101), +char(97),char(114),char(77),char(97),char(120),char(77),char(111),char(116),char(111),char(114),char(70),char(111),char(114),char(99),char(101),char(0),char(109),char(95),char(108),char(105), +char(110),char(101),char(97),char(114),char(83),char(101),char(114),char(118),char(111),char(84),char(97),char(114),char(103),char(101),char(116),char(0),char(109),char(95),char(108),char(105), +char(110),char(101),char(97),char(114),char(83),char(112),char(114),char(105),char(110),char(103),char(83),char(116),char(105),char(102),char(102),char(110),char(101),char(115),char(115),char(0), +char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(83),char(112),char(114),char(105),char(110),char(103),char(68),char(97),char(109),char(112),char(105),char(110), +char(103),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(69),char(113),char(117),char(105),char(108),char(105),char(98),char(114),char(105),char(117), +char(109),char(80),char(111),char(105),char(110),char(116),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(69),char(110),char(97),char(98),char(108), +char(101),char(77),char(111),char(116),char(111),char(114),char(91),char(52),char(93),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(83),char(101), +char(114),char(118),char(111),char(77),char(111),char(116),char(111),char(114),char(91),char(52),char(93),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114), +char(69),char(110),char(97),char(98),char(108),char(101),char(83),char(112),char(114),char(105),char(110),char(103),char(91),char(52),char(93),char(0),char(109),char(95),char(108),char(105), +char(110),char(101),char(97),char(114),char(83),char(112),char(114),char(105),char(110),char(103),char(83),char(116),char(105),char(102),char(102),char(110),char(101),char(115),char(115),char(76), +char(105),char(109),char(105),char(116),char(101),char(100),char(91),char(52),char(93),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114),char(83),char(112), +char(114),char(105),char(110),char(103),char(68),char(97),char(109),char(112),char(105),char(110),char(103),char(76),char(105),char(109),char(105),char(116),char(101),char(100),char(91),char(52), +char(93),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(66),char(111),char(117),char(110),char(99),char(101),char(0),char(109),char(95), +char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(83),char(116),char(111),char(112),char(69),char(82),char(80),char(0),char(109),char(95),char(97),char(110),char(103), +char(117),char(108),char(97),char(114),char(83),char(116),char(111),char(112),char(67),char(70),char(77),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97), +char(114),char(77),char(111),char(116),char(111),char(114),char(69),char(82),char(80),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(77), +char(111),char(116),char(111),char(114),char(67),char(70),char(77),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(84),char(97),char(114), +char(103),char(101),char(116),char(86),char(101),char(108),char(111),char(99),char(105),char(116),char(121),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97), +char(114),char(77),char(97),char(120),char(77),char(111),char(116),char(111),char(114),char(70),char(111),char(114),char(99),char(101),char(0),char(109),char(95),char(97),char(110),char(103), +char(117),char(108),char(97),char(114),char(83),char(101),char(114),char(118),char(111),char(84),char(97),char(114),char(103),char(101),char(116),char(0),char(109),char(95),char(97),char(110), +char(103),char(117),char(108),char(97),char(114),char(83),char(112),char(114),char(105),char(110),char(103),char(83),char(116),char(105),char(102),char(102),char(110),char(101),char(115),char(115), +char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(83),char(112),char(114),char(105),char(110),char(103),char(68),char(97),char(109),char(112), +char(105),char(110),char(103),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(69),char(113),char(117),char(105),char(108),char(105),char(98), +char(114),char(105),char(117),char(109),char(80),char(111),char(105),char(110),char(116),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(69), +char(110),char(97),char(98),char(108),char(101),char(77),char(111),char(116),char(111),char(114),char(91),char(52),char(93),char(0),char(109),char(95),char(97),char(110),char(103),char(117), +char(108),char(97),char(114),char(83),char(101),char(114),char(118),char(111),char(77),char(111),char(116),char(111),char(114),char(91),char(52),char(93),char(0),char(109),char(95),char(97), +char(110),char(103),char(117),char(108),char(97),char(114),char(69),char(110),char(97),char(98),char(108),char(101),char(83),char(112),char(114),char(105),char(110),char(103),char(91),char(52), +char(93),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(83),char(112),char(114),char(105),char(110),char(103),char(83),char(116),char(105), +char(102),char(102),char(110),char(101),char(115),char(115),char(76),char(105),char(109),char(105),char(116),char(101),char(100),char(91),char(52),char(93),char(0),char(109),char(95),char(97), +char(110),char(103),char(117),char(108),char(97),char(114),char(83),char(112),char(114),char(105),char(110),char(103),char(68),char(97),char(109),char(112),char(105),char(110),char(103),char(76), +char(105),char(109),char(105),char(116),char(101),char(100),char(91),char(52),char(93),char(0),char(109),char(95),char(114),char(111),char(116),char(97),char(116),char(101),char(79),char(114), +char(100),char(101),char(114),char(0),char(109),char(95),char(97),char(120),char(105),char(115),char(73),char(110),char(65),char(0),char(109),char(95),char(97),char(120),char(105),char(115), +char(73),char(110),char(66),char(0),char(109),char(95),char(114),char(97),char(116),char(105),char(111),char(0),char(109),char(95),char(108),char(105),char(110),char(101),char(97),char(114), +char(83),char(116),char(105),char(102),char(102),char(110),char(101),char(115),char(115),char(0),char(109),char(95),char(97),char(110),char(103),char(117),char(108),char(97),char(114),char(83), +char(116),char(105),char(102),char(102),char(110),char(101),char(115),char(115),char(0),char(109),char(95),char(118),char(111),char(108),char(117),char(109),char(101),char(83),char(116),char(105), +char(102),char(102),char(110),char(101),char(115),char(115),char(0),char(42),char(109),char(95),char(109),char(97),char(116),char(101),char(114),char(105),char(97),char(108),char(0),char(109), +char(95),char(112),char(111),char(115),char(105),char(116),char(105),char(111),char(110),char(0),char(109),char(95),char(112),char(114),char(101),char(118),char(105),char(111),char(117),char(115), +char(80),char(111),char(115),char(105),char(116),char(105),char(111),char(110),char(0),char(109),char(95),char(118),char(101),char(108),char(111),char(99),char(105),char(116),char(121),char(0), +char(109),char(95),char(97),char(99),char(99),char(117),char(109),char(117),char(108),char(97),char(116),char(101),char(100),char(70),char(111),char(114),char(99),char(101),char(0),char(109), +char(95),char(110),char(111),char(114),char(109),char(97),char(108),char(0),char(109),char(95),char(97),char(114),char(101),char(97),char(0),char(109),char(95),char(97),char(116),char(116), +char(97),char(99),char(104),char(0),char(109),char(95),char(110),char(111),char(100),char(101),char(73),char(110),char(100),char(105),char(99),char(101),char(115),char(91),char(50),char(93), +char(0),char(109),char(95),char(114),char(101),char(115),char(116),char(76),char(101),char(110),char(103),char(116),char(104),char(0),char(109),char(95),char(98),char(98),char(101),char(110), +char(100),char(105),char(110),char(103),char(0),char(109),char(95),char(110),char(111),char(100),char(101),char(73),char(110),char(100),char(105),char(99),char(101),char(115),char(91),char(51), +char(93),char(0),char(109),char(95),char(114),char(101),char(115),char(116),char(65),char(114),char(101),char(97),char(0),char(109),char(95),char(99),char(48),char(91),char(52),char(93), +char(0),char(109),char(95),char(110),char(111),char(100),char(101),char(73),char(110),char(100),char(105),char(99),char(101),char(115),char(91),char(52),char(93),char(0),char(109),char(95), +char(114),char(101),char(115),char(116),char(86),char(111),char(108),char(117),char(109),char(101),char(0),char(109),char(95),char(99),char(49),char(0),char(109),char(95),char(99),char(50), +char(0),char(109),char(95),char(99),char(48),char(0),char(109),char(95),char(108),char(111),char(99),char(97),char(108),char(70),char(114),char(97),char(109),char(101),char(0),char(42), +char(109),char(95),char(114),char(105),char(103),char(105),char(100),char(66),char(111),char(100),char(121),char(0),char(109),char(95),char(110),char(111),char(100),char(101),char(73),char(110), +char(100),char(101),char(120),char(0),char(109),char(95),char(97),char(101),char(114),char(111),char(77),char(111),char(100),char(101),char(108),char(0),char(109),char(95),char(98),char(97), +char(117),char(109),char(103),char(97),char(114),char(116),char(101),char(0),char(109),char(95),char(100),char(114),char(97),char(103),char(0),char(109),char(95),char(108),char(105),char(102), +char(116),char(0),char(109),char(95),char(112),char(114),char(101),char(115),char(115),char(117),char(114),char(101),char(0),char(109),char(95),char(118),char(111),char(108),char(117),char(109), +char(101),char(0),char(109),char(95),char(100),char(121),char(110),char(97),char(109),char(105),char(99),char(70),char(114),char(105),char(99),char(116),char(105),char(111),char(110),char(0), +char(109),char(95),char(112),char(111),char(115),char(101),char(77),char(97),char(116),char(99),char(104),char(0),char(109),char(95),char(114),char(105),char(103),char(105),char(100),char(67), +char(111),char(110),char(116),char(97),char(99),char(116),char(72),char(97),char(114),char(100),char(110),char(101),char(115),char(115),char(0),char(109),char(95),char(107),char(105),char(110), +char(101),char(116),char(105),char(99),char(67),char(111),char(110),char(116),char(97),char(99),char(116),char(72),char(97),char(114),char(100),char(110),char(101),char(115),char(115),char(0), +char(109),char(95),char(115),char(111),char(102),char(116),char(67),char(111),char(110),char(116),char(97),char(99),char(116),char(72),char(97),char(114),char(100),char(110),char(101),char(115), +char(115),char(0),char(109),char(95),char(97),char(110),char(99),char(104),char(111),char(114),char(72),char(97),char(114),char(100),char(110),char(101),char(115),char(115),char(0),char(109), +char(95),char(115),char(111),char(102),char(116),char(82),char(105),char(103),char(105),char(100),char(67),char(108),char(117),char(115),char(116),char(101),char(114),char(72),char(97),char(114), +char(100),char(110),char(101),char(115),char(115),char(0),char(109),char(95),char(115),char(111),char(102),char(116),char(75),char(105),char(110),char(101),char(116),char(105),char(99),char(67), +char(108),char(117),char(115),char(116),char(101),char(114),char(72),char(97),char(114),char(100),char(110),char(101),char(115),char(115),char(0),char(109),char(95),char(115),char(111),char(102), +char(116),char(83),char(111),char(102),char(116),char(67),char(108),char(117),char(115),char(116),char(101),char(114),char(72),char(97),char(114),char(100),char(110),char(101),char(115),char(115), +char(0),char(109),char(95),char(115),char(111),char(102),char(116),char(82),char(105),char(103),char(105),char(100),char(67),char(108),char(117),char(115),char(116),char(101),char(114),char(73), +char(109),char(112),char(117),char(108),char(115),char(101),char(83),char(112),char(108),char(105),char(116),char(0),char(109),char(95),char(115),char(111),char(102),char(116),char(75),char(105), +char(110),char(101),char(116),char(105),char(99),char(67),char(108),char(117),char(115),char(116),char(101),char(114),char(73),char(109),char(112),char(117),char(108),char(115),char(101),char(83), +char(112),char(108),char(105),char(116),char(0),char(109),char(95),char(115),char(111),char(102),char(116),char(83),char(111),char(102),char(116),char(67),char(108),char(117),char(115),char(116), +char(101),char(114),char(73),char(109),char(112),char(117),char(108),char(115),char(101),char(83),char(112),char(108),char(105),char(116),char(0),char(109),char(95),char(109),char(97),char(120), +char(86),char(111),char(108),char(117),char(109),char(101),char(0),char(109),char(95),char(116),char(105),char(109),char(101),char(83),char(99),char(97),char(108),char(101),char(0),char(109), +char(95),char(118),char(101),char(108),char(111),char(99),char(105),char(116),char(121),char(73),char(116),char(101),char(114),char(97),char(116),char(105),char(111),char(110),char(115),char(0), +char(109),char(95),char(112),char(111),char(115),char(105),char(116),char(105),char(111),char(110),char(73),char(116),char(101),char(114),char(97),char(116),char(105),char(111),char(110),char(115), +char(0),char(109),char(95),char(100),char(114),char(105),char(102),char(116),char(73),char(116),char(101),char(114),char(97),char(116),char(105),char(111),char(110),char(115),char(0),char(109), +char(95),char(99),char(108),char(117),char(115),char(116),char(101),char(114),char(73),char(116),char(101),char(114),char(97),char(116),char(105),char(111),char(110),char(115),char(0),char(109), +char(95),char(114),char(111),char(116),char(0),char(109),char(95),char(115),char(99),char(97),char(108),char(101),char(0),char(109),char(95),char(97),char(113),char(113),char(0),char(109), +char(95),char(99),char(111),char(109),char(0),char(42),char(109),char(95),char(112),char(111),char(115),char(105),char(116),char(105),char(111),char(110),char(115),char(0),char(42),char(109), +char(95),char(119),char(101),char(105),char(103),char(104),char(116),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(80),char(111),char(115),char(105),char(116),char(105), +char(111),char(110),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(87),char(101),char(105),char(103),char(116),char(115),char(0),char(109),char(95),char(98),char(118), +char(111),char(108),char(117),char(109),char(101),char(0),char(109),char(95),char(98),char(102),char(114),char(97),char(109),char(101),char(0),char(109),char(95),char(102),char(114),char(97), +char(109),char(101),char(120),char(102),char(111),char(114),char(109),char(0),char(109),char(95),char(108),char(111),char(99),char(105),char(105),char(0),char(109),char(95),char(105),char(110), +char(118),char(119),char(105),char(0),char(109),char(95),char(118),char(105),char(109),char(112),char(117),char(108),char(115),char(101),char(115),char(91),char(50),char(93),char(0),char(109), +char(95),char(100),char(105),char(109),char(112),char(117),char(108),char(115),char(101),char(115),char(91),char(50),char(93),char(0),char(109),char(95),char(108),char(118),char(0),char(109), +char(95),char(97),char(118),char(0),char(42),char(109),char(95),char(102),char(114),char(97),char(109),char(101),char(114),char(101),char(102),char(115),char(0),char(42),char(109),char(95), +char(110),char(111),char(100),char(101),char(73),char(110),char(100),char(105),char(99),char(101),char(115),char(0),char(42),char(109),char(95),char(109),char(97),char(115),char(115),char(101), +char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(70),char(114),char(97),char(109),char(101),char(82),char(101),char(102),char(115),char(0),char(109),char(95),char(110), +char(117),char(109),char(78),char(111),char(100),char(101),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(77),char(97),char(115),char(115),char(101),char(115),char(0), +char(109),char(95),char(105),char(100),char(109),char(97),char(115),char(115),char(0),char(109),char(95),char(105),char(109),char(97),char(115),char(115),char(0),char(109),char(95),char(110), +char(118),char(105),char(109),char(112),char(117),char(108),char(115),char(101),char(115),char(0),char(109),char(95),char(110),char(100),char(105),char(109),char(112),char(117),char(108),char(115), +char(101),char(115),char(0),char(109),char(95),char(110),char(100),char(97),char(109),char(112),char(105),char(110),char(103),char(0),char(109),char(95),char(108),char(100),char(97),char(109), +char(112),char(105),char(110),char(103),char(0),char(109),char(95),char(97),char(100),char(97),char(109),char(112),char(105),char(110),char(103),char(0),char(109),char(95),char(109),char(97), +char(116),char(99),char(104),char(105),char(110),char(103),char(0),char(109),char(95),char(109),char(97),char(120),char(83),char(101),char(108),char(102),char(67),char(111),char(108),char(108), +char(105),char(115),char(105),char(111),char(110),char(73),char(109),char(112),char(117),char(108),char(115),char(101),char(0),char(109),char(95),char(115),char(101),char(108),char(102),char(67), +char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(73),char(109),char(112),char(117),char(108),char(115),char(101),char(70),char(97),char(99),char(116),char(111), +char(114),char(0),char(109),char(95),char(99),char(111),char(110),char(116),char(97),char(105),char(110),char(115),char(65),char(110),char(99),char(104),char(111),char(114),char(0),char(109), +char(95),char(99),char(111),char(108),char(108),char(105),char(100),char(101),char(0),char(109),char(95),char(99),char(108),char(117),char(115),char(116),char(101),char(114),char(73),char(110), +char(100),char(101),char(120),char(0),char(42),char(109),char(95),char(98),char(111),char(100),char(121),char(65),char(0),char(42),char(109),char(95),char(98),char(111),char(100),char(121), +char(66),char(0),char(109),char(95),char(114),char(101),char(102),char(115),char(91),char(50),char(93),char(0),char(109),char(95),char(99),char(102),char(109),char(0),char(109),char(95), +char(115),char(112),char(108),char(105),char(116),char(0),char(109),char(95),char(100),char(101),char(108),char(101),char(116),char(101),char(0),char(109),char(95),char(114),char(101),char(108), +char(80),char(111),char(115),char(105),char(116),char(105),char(111),char(110),char(91),char(50),char(93),char(0),char(109),char(95),char(98),char(111),char(100),char(121),char(65),char(116), +char(121),char(112),char(101),char(0),char(109),char(95),char(98),char(111),char(100),char(121),char(66),char(116),char(121),char(112),char(101),char(0),char(109),char(95),char(106),char(111), +char(105),char(110),char(116),char(84),char(121),char(112),char(101),char(0),char(42),char(109),char(95),char(112),char(111),char(115),char(101),char(0),char(42),char(42),char(109),char(95), +char(109),char(97),char(116),char(101),char(114),char(105),char(97),char(108),char(115),char(0),char(42),char(109),char(95),char(110),char(111),char(100),char(101),char(115),char(0),char(42), +char(109),char(95),char(108),char(105),char(110),char(107),char(115),char(0),char(42),char(109),char(95),char(102),char(97),char(99),char(101),char(115),char(0),char(42),char(109),char(95), +char(116),char(101),char(116),char(114),char(97),char(104),char(101),char(100),char(114),char(97),char(0),char(42),char(109),char(95),char(97),char(110),char(99),char(104),char(111),char(114), +char(115),char(0),char(42),char(109),char(95),char(99),char(108),char(117),char(115),char(116),char(101),char(114),char(115),char(0),char(42),char(109),char(95),char(106),char(111),char(105), +char(110),char(116),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(77),char(97),char(116),char(101),char(114),char(105),char(97),char(108),char(115),char(0),char(109), +char(95),char(110),char(117),char(109),char(76),char(105),char(110),char(107),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(70),char(97),char(99),char(101),char(115), +char(0),char(109),char(95),char(110),char(117),char(109),char(84),char(101),char(116),char(114),char(97),char(104),char(101),char(100),char(114),char(97),char(0),char(109),char(95),char(110), +char(117),char(109),char(65),char(110),char(99),char(104),char(111),char(114),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(67),char(108),char(117),char(115),char(116), +char(101),char(114),char(115),char(0),char(109),char(95),char(110),char(117),char(109),char(74),char(111),char(105),char(110),char(116),char(115),char(0),char(109),char(95),char(99),char(111), +char(110),char(102),char(105),char(103),char(0),char(109),char(95),char(122),char(101),char(114),char(111),char(82),char(111),char(116),char(80),char(97),char(114),char(101),char(110),char(116), +char(84),char(111),char(84),char(104),char(105),char(115),char(0),char(109),char(95),char(112),char(97),char(114),char(101),char(110),char(116),char(67),char(111),char(109),char(84),char(111), +char(84),char(104),char(105),char(115),char(67),char(111),char(109),char(79),char(102),char(102),char(115),char(101),char(116),char(0),char(109),char(95),char(116),char(104),char(105),char(115), +char(80),char(105),char(118),char(111),char(116),char(84),char(111),char(84),char(104),char(105),char(115),char(67),char(111),char(109),char(79),char(102),char(102),char(115),char(101),char(116), +char(0),char(109),char(95),char(106),char(111),char(105),char(110),char(116),char(65),char(120),char(105),char(115),char(84),char(111),char(112),char(91),char(54),char(93),char(0),char(109), +char(95),char(106),char(111),char(105),char(110),char(116),char(65),char(120),char(105),char(115),char(66),char(111),char(116),char(116),char(111),char(109),char(91),char(54),char(93),char(0), +char(109),char(95),char(108),char(105),char(110),char(107),char(73),char(110),char(101),char(114),char(116),char(105),char(97),char(0),char(109),char(95),char(108),char(105),char(110),char(107), +char(77),char(97),char(115),char(115),char(0),char(109),char(95),char(112),char(97),char(114),char(101),char(110),char(116),char(73),char(110),char(100),char(101),char(120),char(0),char(109), +char(95),char(100),char(111),char(102),char(67),char(111),char(117),char(110),char(116),char(0),char(109),char(95),char(112),char(111),char(115),char(86),char(97),char(114),char(67),char(111), +char(117),char(110),char(116),char(0),char(109),char(95),char(106),char(111),char(105),char(110),char(116),char(80),char(111),char(115),char(91),char(55),char(93),char(0),char(109),char(95), +char(106),char(111),char(105),char(110),char(116),char(86),char(101),char(108),char(91),char(54),char(93),char(0),char(109),char(95),char(106),char(111),char(105),char(110),char(116),char(84), +char(111),char(114),char(113),char(117),char(101),char(91),char(54),char(93),char(0),char(109),char(95),char(106),char(111),char(105),char(110),char(116),char(68),char(97),char(109),char(112), +char(105),char(110),char(103),char(0),char(109),char(95),char(106),char(111),char(105),char(110),char(116),char(70),char(114),char(105),char(99),char(116),char(105),char(111),char(110),char(0), +char(109),char(95),char(106),char(111),char(105),char(110),char(116),char(76),char(111),char(119),char(101),char(114),char(76),char(105),char(109),char(105),char(116),char(0),char(109),char(95), +char(106),char(111),char(105),char(110),char(116),char(85),char(112),char(112),char(101),char(114),char(76),char(105),char(109),char(105),char(116),char(0),char(109),char(95),char(106),char(111), +char(105),char(110),char(116),char(77),char(97),char(120),char(70),char(111),char(114),char(99),char(101),char(0),char(109),char(95),char(106),char(111),char(105),char(110),char(116),char(77), +char(97),char(120),char(86),char(101),char(108),char(111),char(99),char(105),char(116),char(121),char(0),char(42),char(109),char(95),char(108),char(105),char(110),char(107),char(78),char(97), +char(109),char(101),char(0),char(42),char(109),char(95),char(106),char(111),char(105),char(110),char(116),char(78),char(97),char(109),char(101),char(0),char(42),char(109),char(95),char(108), +char(105),char(110),char(107),char(67),char(111),char(108),char(108),char(105),char(100),char(101),char(114),char(0),char(42),char(109),char(95),char(112),char(97),char(100),char(100),char(105), +char(110),char(103),char(80),char(116),char(114),char(0),char(109),char(95),char(98),char(97),char(115),char(101),char(87),char(111),char(114),char(108),char(100),char(84),char(114),char(97), +char(110),char(115),char(102),char(111),char(114),char(109),char(0),char(109),char(95),char(98),char(97),char(115),char(101),char(73),char(110),char(101),char(114),char(116),char(105),char(97), +char(0),char(109),char(95),char(98),char(97),char(115),char(101),char(77),char(97),char(115),char(115),char(0),char(42),char(109),char(95),char(98),char(97),char(115),char(101),char(78), +char(97),char(109),char(101),char(0),char(42),char(109),char(95),char(98),char(97),char(115),char(101),char(67),char(111),char(108),char(108),char(105),char(100),char(101),char(114),char(0), +char(84),char(89),char(80),char(69),char(95),char(0),char(0),char(0),char(99),char(104),char(97),char(114),char(0),char(117),char(99),char(104),char(97),char(114),char(0),char(115), +char(104),char(111),char(114),char(116),char(0),char(117),char(115),char(104),char(111),char(114),char(116),char(0),char(105),char(110),char(116),char(0),char(108),char(111),char(110),char(103), +char(0),char(117),char(108),char(111),char(110),char(103),char(0),char(102),char(108),char(111),char(97),char(116),char(0),char(100),char(111),char(117),char(98),char(108),char(101),char(0), +char(118),char(111),char(105),char(100),char(0),char(80),char(111),char(105),char(110),char(116),char(101),char(114),char(65),char(114),char(114),char(97),char(121),char(0),char(98),char(116), +char(80),char(104),char(121),char(115),char(105),char(99),char(115),char(83),char(121),char(115),char(116),char(101),char(109),char(0),char(76),char(105),char(115),char(116),char(66),char(97), +char(115),char(101),char(0),char(98),char(116),char(86),char(101),char(99),char(116),char(111),char(114),char(51),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116), +char(97),char(0),char(98),char(116),char(86),char(101),char(99),char(116),char(111),char(114),char(51),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116), +char(97),char(0),char(98),char(116),char(81),char(117),char(97),char(116),char(101),char(114),char(110),char(105),char(111),char(110),char(70),char(108),char(111),char(97),char(116),char(68), +char(97),char(116),char(97),char(0),char(98),char(116),char(81),char(117),char(97),char(116),char(101),char(114),char(110),char(105),char(111),char(110),char(68),char(111),char(117),char(98), +char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(77),char(97),char(116),char(114),char(105),char(120),char(51),char(120),char(51),char(70),char(108), +char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(77),char(97),char(116),char(114),char(105),char(120),char(51),char(120),char(51),char(68), +char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(84),char(114),char(97),char(110),char(115),char(102),char(111),char(114), +char(109),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(84),char(114),char(97),char(110),char(115),char(102),char(111), +char(114),char(109),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(66),char(118),char(104),char(83),char(117), +char(98),char(116),char(114),char(101),char(101),char(73),char(110),char(102),char(111),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(79),char(112),char(116),char(105), +char(109),char(105),char(122),char(101),char(100),char(66),char(118),char(104),char(78),char(111),char(100),char(101),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116), +char(97),char(0),char(98),char(116),char(79),char(112),char(116),char(105),char(109),char(105),char(122),char(101),char(100),char(66),char(118),char(104),char(78),char(111),char(100),char(101), +char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(81),char(117),char(97),char(110),char(116),char(105),char(122), +char(101),char(100),char(66),char(118),char(104),char(78),char(111),char(100),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(81),char(117),char(97),char(110), +char(116),char(105),char(122),char(101),char(100),char(66),char(118),char(104),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116), +char(81),char(117),char(97),char(110),char(116),char(105),char(122),char(101),char(100),char(66),char(118),char(104),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97), +char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(83),char(104),char(97),char(112),char(101),char(68), +char(97),char(116),char(97),char(0),char(98),char(116),char(83),char(116),char(97),char(116),char(105),char(99),char(80),char(108),char(97),char(110),char(101),char(83),char(104),char(97), +char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(110),char(118),char(101),char(120),char(73),char(110),char(116),char(101),char(114), +char(110),char(97),char(108),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(80),char(111),char(115),char(105),char(116), +char(105),char(111),char(110),char(65),char(110),char(100),char(82),char(97),char(100),char(105),char(117),char(115),char(0),char(98),char(116),char(77),char(117),char(108),char(116),char(105), +char(83),char(112),char(104),char(101),char(114),char(101),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(73),char(110), +char(116),char(73),char(110),char(100),char(101),char(120),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(83),char(104),char(111),char(114),char(116),char(73),char(110), +char(116),char(73),char(110),char(100),char(101),char(120),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(83),char(104),char(111),char(114),char(116),char(73),char(110), +char(116),char(73),char(110),char(100),char(101),char(120),char(84),char(114),char(105),char(112),char(108),char(101),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116), +char(67),char(104),char(97),char(114),char(73),char(110),char(100),char(101),char(120),char(84),char(114),char(105),char(112),char(108),char(101),char(116),char(68),char(97),char(116),char(97), +char(0),char(98),char(116),char(77),char(101),char(115),char(104),char(80),char(97),char(114),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(83),char(116), +char(114),char(105),char(100),char(105),char(110),char(103),char(77),char(101),char(115),char(104),char(73),char(110),char(116),char(101),char(114),char(102),char(97),char(99),char(101),char(68), +char(97),char(116),char(97),char(0),char(98),char(116),char(84),char(114),char(105),char(97),char(110),char(103),char(108),char(101),char(77),char(101),char(115),char(104),char(83),char(104), +char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(84),char(114),char(105),char(97),char(110),char(103),char(108),char(101),char(73),char(110), +char(102),char(111),char(77),char(97),char(112),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(83),char(99),char(97),char(108),char(101),char(100),char(84),char(114), +char(105),char(97),char(110),char(103),char(108),char(101),char(77),char(101),char(115),char(104),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0), +char(98),char(116),char(67),char(111),char(109),char(112),char(111),char(117),char(110),char(100),char(83),char(104),char(97),char(112),char(101),char(67),char(104),char(105),char(108),char(100), +char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(109),char(112),char(111),char(117),char(110),char(100),char(83),char(104),char(97),char(112),char(101), +char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(121),char(108),char(105),char(110),char(100),char(101),char(114),char(83),char(104),char(97),char(112),char(101), +char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(110),char(101),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97), +char(0),char(98),char(116),char(67),char(97),char(112),char(115),char(117),char(108),char(101),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116),char(97),char(0), +char(98),char(116),char(84),char(114),char(105),char(97),char(110),char(103),char(108),char(101),char(73),char(110),char(102),char(111),char(68),char(97),char(116),char(97),char(0),char(98), +char(116),char(71),char(73),char(109),char(112),char(97),char(99),char(116),char(77),char(101),char(115),char(104),char(83),char(104),char(97),char(112),char(101),char(68),char(97),char(116), +char(97),char(0),char(98),char(116),char(67),char(111),char(110),char(118),char(101),char(120),char(72),char(117),char(108),char(108),char(83),char(104),char(97),char(112),char(101),char(68), +char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(108),char(108),char(105),char(115),char(105),char(111),char(110),char(79),char(98),char(106),char(101),char(99), +char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(108),char(108),char(105),char(115), +char(105),char(111),char(110),char(79),char(98),char(106),char(101),char(99),char(116),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98), +char(116),char(67),char(111),char(110),char(116),char(97),char(99),char(116),char(83),char(111),char(108),char(118),char(101),char(114),char(73),char(110),char(102),char(111),char(68),char(111), +char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(110),char(116),char(97),char(99),char(116),char(83),char(111), +char(108),char(118),char(101),char(114),char(73),char(110),char(102),char(111),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116), +char(68),char(121),char(110),char(97),char(109),char(105),char(99),char(115),char(87),char(111),char(114),char(108),char(100),char(68),char(111),char(117),char(98),char(108),char(101),char(68), +char(97),char(116),char(97),char(0),char(98),char(116),char(68),char(121),char(110),char(97),char(109),char(105),char(99),char(115),char(87),char(111),char(114),char(108),char(100),char(70), +char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(82),char(105),char(103),char(105),char(100),char(66),char(111),char(100),char(121), +char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(82),char(105),char(103),char(105),char(100),char(66),char(111),char(100), +char(121),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(67),char(111),char(110),char(115),char(116),char(114), +char(97),char(105),char(110),char(116),char(73),char(110),char(102),char(111),char(49),char(0),char(98),char(116),char(84),char(121),char(112),char(101),char(100),char(67),char(111),char(110), +char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(84), +char(121),char(112),char(101),char(100),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(97),char(116),char(97),char(0),char(98), +char(116),char(82),char(105),char(103),char(105),char(100),char(66),char(111),char(100),char(121),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(84),char(121),char(112), +char(101),char(100),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97), +char(116),char(97),char(0),char(98),char(116),char(80),char(111),char(105),char(110),char(116),char(50),char(80),char(111),char(105),char(110),char(116),char(67),char(111),char(110),char(115), +char(116),char(114),char(97),char(105),char(110),char(116),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(80),char(111), +char(105),char(110),char(116),char(50),char(80),char(111),char(105),char(110),char(116),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68), +char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(50),char(0),char(98),char(116),char(80),char(111),char(105),char(110),char(116),char(50),char(80), +char(111),char(105),char(110),char(116),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101), +char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(72),char(105),char(110),char(103),char(101),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105), +char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(72),char(105),char(110),char(103),char(101), +char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0), +char(98),char(116),char(72),char(105),char(110),char(103),char(101),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(111),char(117), +char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(50),char(0),char(98),char(116),char(67),char(111),char(110),char(101),char(84),char(119),char(105),char(115),char(116), +char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97), +char(0),char(98),char(116),char(67),char(111),char(110),char(101),char(84),char(119),char(105),char(115),char(116),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105), +char(110),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(71),char(101),char(110),char(101),char(114),char(105),char(99),char(54),char(68),char(111),char(102), +char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(71),char(101),char(110), +char(101),char(114),char(105),char(99),char(54),char(68),char(111),char(102),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(111), +char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(50),char(0),char(98),char(116),char(71),char(101),char(110),char(101),char(114),char(105),char(99),char(54), +char(68),char(111),char(102),char(83),char(112),char(114),char(105),char(110),char(103),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68), +char(97),char(116),char(97),char(0),char(98),char(116),char(71),char(101),char(110),char(101),char(114),char(105),char(99),char(54),char(68),char(111),char(102),char(83),char(112),char(114), +char(105),char(110),char(103),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68), +char(97),char(116),char(97),char(50),char(0),char(98),char(116),char(71),char(101),char(110),char(101),char(114),char(105),char(99),char(54),char(68),char(111),char(102),char(83),char(112), +char(114),char(105),char(110),char(103),char(50),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(97),char(116),char(97),char(0), +char(98),char(116),char(71),char(101),char(110),char(101),char(114),char(105),char(99),char(54),char(68),char(111),char(102),char(83),char(112),char(114),char(105),char(110),char(103),char(50), +char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97), +char(50),char(0),char(98),char(116),char(83),char(108),char(105),char(100),char(101),char(114),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116), +char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(83),char(108),char(105),char(100),char(101),char(114),char(67),char(111),char(110),char(115),char(116),char(114),char(97), +char(105),char(110),char(116),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(71),char(101),char(97),char(114), +char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0), +char(98),char(116),char(71),char(101),char(97),char(114),char(67),char(111),char(110),char(115),char(116),char(114),char(97),char(105),char(110),char(116),char(68),char(111),char(117),char(98), +char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(77),char(97),char(116),char(101),char(114), +char(105),char(97),char(108),char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(78),char(111),char(100),char(101), +char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(76),char(105),char(110),char(107),char(68),char(97),char(116), +char(97),char(0),char(83),char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(70),char(97),char(99),char(101),char(68),char(97),char(116),char(97),char(0),char(83), +char(111),char(102),char(116),char(66),char(111),char(100),char(121),char(84),char(101),char(116),char(114),char(97),char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102), +char(116),char(82),char(105),char(103),char(105),char(100),char(65),char(110),char(99),char(104),char(111),char(114),char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102), +char(116),char(66),char(111),char(100),char(121),char(67),char(111),char(110),char(102),char(105),char(103),char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102),char(116), +char(66),char(111),char(100),char(121),char(80),char(111),char(115),char(101),char(68),char(97),char(116),char(97),char(0),char(83),char(111),char(102),char(116),char(66),char(111),char(100), +char(121),char(67),char(108),char(117),char(115),char(116),char(101),char(114),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(83),char(111),char(102),char(116),char(66), +char(111),char(100),char(121),char(74),char(111),char(105),char(110),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(83),char(111),char(102),char(116),char(66), +char(111),char(100),char(121),char(70),char(108),char(111),char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(77),char(117),char(108),char(116),char(105), +char(66),char(111),char(100),char(121),char(76),char(105),char(110),char(107),char(68),char(111),char(117),char(98),char(108),char(101),char(68),char(97),char(116),char(97),char(0),char(98), +char(116),char(77),char(117),char(108),char(116),char(105),char(66),char(111),char(100),char(121),char(76),char(105),char(110),char(107),char(70),char(108),char(111),char(97),char(116),char(68), +char(97),char(116),char(97),char(0),char(98),char(116),char(77),char(117),char(108),char(116),char(105),char(66),char(111),char(100),char(121),char(68),char(111),char(117),char(98),char(108), +char(101),char(68),char(97),char(116),char(97),char(0),char(98),char(116),char(77),char(117),char(108),char(116),char(105),char(66),char(111),char(100),char(121),char(70),char(108),char(111), +char(97),char(116),char(68),char(97),char(116),char(97),char(0),char(0),char(84),char(76),char(69),char(78),char(1),char(0),char(1),char(0),char(2),char(0),char(2),char(0), +char(4),char(0),char(4),char(0),char(4),char(0),char(4),char(0),char(8),char(0),char(0),char(0),char(16),char(0),char(48),char(0),char(16),char(0),char(16),char(0), +char(32),char(0),char(16),char(0),char(32),char(0),char(48),char(0),char(96),char(0),char(64),char(0),char(-128),char(0),char(20),char(0),char(48),char(0),char(80),char(0), +char(16),char(0),char(96),char(0),char(-112),char(0),char(16),char(0),char(56),char(0),char(56),char(0),char(20),char(0),char(72),char(0),char(4),char(0),char(4),char(0), +char(8),char(0),char(4),char(0),char(56),char(0),char(32),char(0),char(80),char(0),char(72),char(0),char(96),char(0),char(80),char(0),char(32),char(0),char(64),char(0), +char(64),char(0),char(64),char(0),char(16),char(0),char(72),char(0),char(80),char(0),char(-16),char(1),char(24),char(1),char(-104),char(0),char(88),char(0),char(-72),char(0), +char(104),char(0),char(0),char(2),char(-64),char(3),char(8),char(0),char(64),char(0),char(64),char(0),char(0),char(0),char(80),char(0),char(96),char(0),char(-112),char(0), +char(-128),char(0),char(104),char(1),char(-24),char(0),char(-104),char(1),char(-120),char(1),char(-32),char(0),char(8),char(1),char(-40),char(1),char(104),char(1),char(-128),char(2), +char(-112),char(2),char(-64),char(4),char(-40),char(0),char(120),char(1),char(104),char(0),char(-104),char(0),char(16),char(0),char(104),char(0),char(24),char(0),char(40),char(0), +char(104),char(0),char(96),char(0),char(104),char(0),char(-56),char(0),char(104),char(1),char(112),char(0),char(-24),char(1),char(0),char(3),char(-104),char(1),char(-48),char(0), +char(112),char(0),char(0),char(0),char(83),char(84),char(82),char(67),char(84),char(0),char(0),char(0),char(10),char(0),char(3),char(0),char(4),char(0),char(0),char(0), +char(4),char(0),char(1),char(0),char(9),char(0),char(2),char(0),char(11),char(0),char(3),char(0),char(10),char(0),char(3),char(0),char(10),char(0),char(4),char(0), +char(10),char(0),char(5),char(0),char(12),char(0),char(2),char(0),char(9),char(0),char(6),char(0),char(9),char(0),char(7),char(0),char(13),char(0),char(1),char(0), +char(7),char(0),char(8),char(0),char(14),char(0),char(1),char(0),char(8),char(0),char(8),char(0),char(15),char(0),char(1),char(0),char(7),char(0),char(8),char(0), +char(16),char(0),char(1),char(0),char(8),char(0),char(8),char(0),char(17),char(0),char(1),char(0),char(13),char(0),char(9),char(0),char(18),char(0),char(1),char(0), +char(14),char(0),char(9),char(0),char(19),char(0),char(2),char(0),char(17),char(0),char(10),char(0),char(13),char(0),char(11),char(0),char(20),char(0),char(2),char(0), +char(18),char(0),char(10),char(0),char(14),char(0),char(11),char(0),char(21),char(0),char(4),char(0),char(4),char(0),char(12),char(0),char(4),char(0),char(13),char(0), +char(2),char(0),char(14),char(0),char(2),char(0),char(15),char(0),char(22),char(0),char(6),char(0),char(13),char(0),char(16),char(0),char(13),char(0),char(17),char(0), +char(4),char(0),char(18),char(0),char(4),char(0),char(19),char(0),char(4),char(0),char(20),char(0),char(0),char(0),char(21),char(0),char(23),char(0),char(6),char(0), +char(14),char(0),char(16),char(0),char(14),char(0),char(17),char(0),char(4),char(0),char(18),char(0),char(4),char(0),char(19),char(0),char(4),char(0),char(20),char(0), +char(0),char(0),char(21),char(0),char(24),char(0),char(3),char(0),char(2),char(0),char(14),char(0),char(2),char(0),char(15),char(0),char(4),char(0),char(22),char(0), +char(25),char(0),char(12),char(0),char(13),char(0),char(23),char(0),char(13),char(0),char(24),char(0),char(13),char(0),char(25),char(0),char(4),char(0),char(26),char(0), +char(4),char(0),char(27),char(0),char(4),char(0),char(28),char(0),char(4),char(0),char(29),char(0),char(22),char(0),char(30),char(0),char(24),char(0),char(31),char(0), +char(21),char(0),char(32),char(0),char(4),char(0),char(33),char(0),char(4),char(0),char(34),char(0),char(26),char(0),char(12),char(0),char(14),char(0),char(23),char(0), +char(14),char(0),char(24),char(0),char(14),char(0),char(25),char(0),char(4),char(0),char(26),char(0),char(4),char(0),char(27),char(0),char(4),char(0),char(28),char(0), +char(4),char(0),char(29),char(0),char(23),char(0),char(30),char(0),char(24),char(0),char(31),char(0),char(4),char(0),char(33),char(0),char(4),char(0),char(34),char(0), +char(21),char(0),char(32),char(0),char(27),char(0),char(3),char(0),char(0),char(0),char(35),char(0),char(4),char(0),char(36),char(0),char(0),char(0),char(37),char(0), +char(28),char(0),char(5),char(0),char(27),char(0),char(38),char(0),char(13),char(0),char(39),char(0),char(13),char(0),char(40),char(0),char(7),char(0),char(41),char(0), +char(0),char(0),char(21),char(0),char(29),char(0),char(5),char(0),char(27),char(0),char(38),char(0),char(13),char(0),char(39),char(0),char(13),char(0),char(42),char(0), +char(7),char(0),char(43),char(0),char(4),char(0),char(44),char(0),char(30),char(0),char(2),char(0),char(13),char(0),char(45),char(0),char(7),char(0),char(46),char(0), +char(31),char(0),char(4),char(0),char(29),char(0),char(47),char(0),char(30),char(0),char(48),char(0),char(4),char(0),char(49),char(0),char(0),char(0),char(37),char(0), +char(32),char(0),char(1),char(0),char(4),char(0),char(50),char(0),char(33),char(0),char(2),char(0),char(2),char(0),char(50),char(0),char(0),char(0),char(51),char(0), +char(34),char(0),char(2),char(0),char(2),char(0),char(52),char(0),char(0),char(0),char(51),char(0),char(35),char(0),char(2),char(0),char(0),char(0),char(52),char(0), +char(0),char(0),char(53),char(0),char(36),char(0),char(8),char(0),char(13),char(0),char(54),char(0),char(14),char(0),char(55),char(0),char(32),char(0),char(56),char(0), +char(34),char(0),char(57),char(0),char(35),char(0),char(58),char(0),char(33),char(0),char(59),char(0),char(4),char(0),char(60),char(0),char(4),char(0),char(61),char(0), +char(37),char(0),char(4),char(0),char(36),char(0),char(62),char(0),char(13),char(0),char(63),char(0),char(4),char(0),char(64),char(0),char(0),char(0),char(37),char(0), +char(38),char(0),char(7),char(0),char(27),char(0),char(38),char(0),char(37),char(0),char(65),char(0),char(25),char(0),char(66),char(0),char(26),char(0),char(67),char(0), +char(39),char(0),char(68),char(0),char(7),char(0),char(43),char(0),char(0),char(0),char(69),char(0),char(40),char(0),char(2),char(0),char(38),char(0),char(70),char(0), +char(13),char(0),char(39),char(0),char(41),char(0),char(4),char(0),char(19),char(0),char(71),char(0),char(27),char(0),char(72),char(0),char(4),char(0),char(73),char(0), +char(7),char(0),char(74),char(0),char(42),char(0),char(4),char(0),char(27),char(0),char(38),char(0),char(41),char(0),char(75),char(0),char(4),char(0),char(76),char(0), +char(7),char(0),char(43),char(0),char(43),char(0),char(3),char(0),char(29),char(0),char(47),char(0),char(4),char(0),char(77),char(0),char(0),char(0),char(37),char(0), +char(44),char(0),char(3),char(0),char(29),char(0),char(47),char(0),char(4),char(0),char(78),char(0),char(0),char(0),char(37),char(0),char(45),char(0),char(3),char(0), +char(29),char(0),char(47),char(0),char(4),char(0),char(77),char(0),char(0),char(0),char(37),char(0),char(46),char(0),char(4),char(0),char(4),char(0),char(79),char(0), +char(7),char(0),char(80),char(0),char(7),char(0),char(81),char(0),char(7),char(0),char(82),char(0),char(39),char(0),char(14),char(0),char(4),char(0),char(83),char(0), +char(4),char(0),char(84),char(0),char(46),char(0),char(85),char(0),char(4),char(0),char(86),char(0),char(7),char(0),char(87),char(0),char(7),char(0),char(88),char(0), +char(7),char(0),char(89),char(0),char(7),char(0),char(90),char(0),char(7),char(0),char(91),char(0),char(4),char(0),char(92),char(0),char(4),char(0),char(93),char(0), +char(4),char(0),char(94),char(0),char(4),char(0),char(95),char(0),char(0),char(0),char(37),char(0),char(47),char(0),char(5),char(0),char(27),char(0),char(38),char(0), +char(37),char(0),char(65),char(0),char(13),char(0),char(39),char(0),char(7),char(0),char(43),char(0),char(4),char(0),char(96),char(0),char(48),char(0),char(5),char(0), +char(29),char(0),char(47),char(0),char(13),char(0),char(97),char(0),char(14),char(0),char(98),char(0),char(4),char(0),char(99),char(0),char(0),char(0),char(100),char(0), +char(49),char(0),char(27),char(0),char(9),char(0),char(101),char(0),char(9),char(0),char(102),char(0),char(27),char(0),char(103),char(0),char(0),char(0),char(35),char(0), +char(20),char(0),char(104),char(0),char(20),char(0),char(105),char(0),char(14),char(0),char(106),char(0),char(14),char(0),char(107),char(0),char(14),char(0),char(108),char(0), +char(8),char(0),char(109),char(0),char(8),char(0),char(110),char(0),char(8),char(0),char(111),char(0),char(8),char(0),char(112),char(0),char(8),char(0),char(113),char(0), +char(8),char(0),char(114),char(0),char(8),char(0),char(115),char(0),char(8),char(0),char(116),char(0),char(8),char(0),char(117),char(0),char(8),char(0),char(118),char(0), +char(4),char(0),char(119),char(0),char(4),char(0),char(120),char(0),char(4),char(0),char(121),char(0),char(4),char(0),char(122),char(0),char(4),char(0),char(123),char(0), +char(4),char(0),char(124),char(0),char(4),char(0),char(125),char(0),char(0),char(0),char(37),char(0),char(50),char(0),char(27),char(0),char(9),char(0),char(101),char(0), +char(9),char(0),char(102),char(0),char(27),char(0),char(103),char(0),char(0),char(0),char(35),char(0),char(19),char(0),char(104),char(0),char(19),char(0),char(105),char(0), +char(13),char(0),char(106),char(0),char(13),char(0),char(107),char(0),char(13),char(0),char(108),char(0),char(7),char(0),char(109),char(0),char(7),char(0),char(110),char(0), +char(7),char(0),char(111),char(0),char(7),char(0),char(112),char(0),char(7),char(0),char(113),char(0),char(7),char(0),char(114),char(0),char(7),char(0),char(115),char(0), +char(7),char(0),char(116),char(0),char(7),char(0),char(117),char(0),char(7),char(0),char(118),char(0),char(4),char(0),char(119),char(0),char(4),char(0),char(120),char(0), +char(4),char(0),char(121),char(0),char(4),char(0),char(122),char(0),char(4),char(0),char(123),char(0),char(4),char(0),char(124),char(0),char(4),char(0),char(125),char(0), +char(0),char(0),char(37),char(0),char(51),char(0),char(22),char(0),char(8),char(0),char(126),char(0),char(8),char(0),char(127),char(0),char(8),char(0),char(111),char(0), +char(8),char(0),char(-128),char(0),char(8),char(0),char(115),char(0),char(8),char(0),char(-127),char(0),char(8),char(0),char(-126),char(0),char(8),char(0),char(-125),char(0), +char(8),char(0),char(-124),char(0),char(8),char(0),char(-123),char(0),char(8),char(0),char(-122),char(0),char(8),char(0),char(-121),char(0),char(8),char(0),char(-120),char(0), +char(8),char(0),char(-119),char(0),char(8),char(0),char(-118),char(0),char(8),char(0),char(-117),char(0),char(4),char(0),char(-116),char(0),char(4),char(0),char(-115),char(0), +char(4),char(0),char(-114),char(0),char(4),char(0),char(-113),char(0),char(4),char(0),char(-112),char(0),char(0),char(0),char(37),char(0),char(52),char(0),char(22),char(0), +char(7),char(0),char(126),char(0),char(7),char(0),char(127),char(0),char(7),char(0),char(111),char(0),char(7),char(0),char(-128),char(0),char(7),char(0),char(115),char(0), +char(7),char(0),char(-127),char(0),char(7),char(0),char(-126),char(0),char(7),char(0),char(-125),char(0),char(7),char(0),char(-124),char(0),char(7),char(0),char(-123),char(0), +char(7),char(0),char(-122),char(0),char(7),char(0),char(-121),char(0),char(7),char(0),char(-120),char(0),char(7),char(0),char(-119),char(0),char(7),char(0),char(-118),char(0), +char(7),char(0),char(-117),char(0),char(4),char(0),char(-116),char(0),char(4),char(0),char(-115),char(0),char(4),char(0),char(-114),char(0),char(4),char(0),char(-113),char(0), +char(4),char(0),char(-112),char(0),char(0),char(0),char(37),char(0),char(53),char(0),char(2),char(0),char(51),char(0),char(-111),char(0),char(14),char(0),char(-110),char(0), +char(54),char(0),char(2),char(0),char(52),char(0),char(-111),char(0),char(13),char(0),char(-110),char(0),char(55),char(0),char(21),char(0),char(50),char(0),char(-109),char(0), +char(17),char(0),char(-108),char(0),char(13),char(0),char(-107),char(0),char(13),char(0),char(-106),char(0),char(13),char(0),char(-105),char(0),char(13),char(0),char(-104),char(0), +char(13),char(0),char(-110),char(0),char(13),char(0),char(-103),char(0),char(13),char(0),char(-102),char(0),char(13),char(0),char(-101),char(0),char(13),char(0),char(-100),char(0), +char(7),char(0),char(-99),char(0),char(7),char(0),char(-98),char(0),char(7),char(0),char(-97),char(0),char(7),char(0),char(-96),char(0),char(7),char(0),char(-95),char(0), +char(7),char(0),char(-94),char(0),char(7),char(0),char(-93),char(0),char(7),char(0),char(-92),char(0),char(7),char(0),char(-91),char(0),char(4),char(0),char(-90),char(0), +char(56),char(0),char(22),char(0),char(49),char(0),char(-109),char(0),char(18),char(0),char(-108),char(0),char(14),char(0),char(-107),char(0),char(14),char(0),char(-106),char(0), +char(14),char(0),char(-105),char(0),char(14),char(0),char(-104),char(0),char(14),char(0),char(-110),char(0),char(14),char(0),char(-103),char(0),char(14),char(0),char(-102),char(0), +char(14),char(0),char(-101),char(0),char(14),char(0),char(-100),char(0),char(8),char(0),char(-99),char(0),char(8),char(0),char(-98),char(0),char(8),char(0),char(-97),char(0), +char(8),char(0),char(-96),char(0),char(8),char(0),char(-95),char(0),char(8),char(0),char(-94),char(0),char(8),char(0),char(-93),char(0),char(8),char(0),char(-92),char(0), +char(8),char(0),char(-91),char(0),char(4),char(0),char(-90),char(0),char(0),char(0),char(37),char(0),char(57),char(0),char(2),char(0),char(4),char(0),char(-89),char(0), +char(4),char(0),char(-88),char(0),char(58),char(0),char(13),char(0),char(55),char(0),char(-87),char(0),char(55),char(0),char(-86),char(0),char(0),char(0),char(35),char(0), +char(4),char(0),char(-85),char(0),char(4),char(0),char(-84),char(0),char(4),char(0),char(-83),char(0),char(4),char(0),char(-82),char(0),char(7),char(0),char(-81),char(0), +char(7),char(0),char(-80),char(0),char(4),char(0),char(-79),char(0),char(4),char(0),char(-78),char(0),char(7),char(0),char(-77),char(0),char(4),char(0),char(-76),char(0), +char(59),char(0),char(13),char(0),char(60),char(0),char(-87),char(0),char(60),char(0),char(-86),char(0),char(0),char(0),char(35),char(0),char(4),char(0),char(-85),char(0), +char(4),char(0),char(-84),char(0),char(4),char(0),char(-83),char(0),char(4),char(0),char(-82),char(0),char(7),char(0),char(-81),char(0),char(7),char(0),char(-80),char(0), +char(4),char(0),char(-79),char(0),char(4),char(0),char(-78),char(0),char(7),char(0),char(-77),char(0),char(4),char(0),char(-76),char(0),char(61),char(0),char(14),char(0), +char(56),char(0),char(-87),char(0),char(56),char(0),char(-86),char(0),char(0),char(0),char(35),char(0),char(4),char(0),char(-85),char(0),char(4),char(0),char(-84),char(0), +char(4),char(0),char(-83),char(0),char(4),char(0),char(-82),char(0),char(8),char(0),char(-81),char(0),char(8),char(0),char(-80),char(0),char(4),char(0),char(-79),char(0), +char(4),char(0),char(-78),char(0),char(8),char(0),char(-77),char(0),char(4),char(0),char(-76),char(0),char(0),char(0),char(-75),char(0),char(62),char(0),char(3),char(0), +char(59),char(0),char(-74),char(0),char(13),char(0),char(-73),char(0),char(13),char(0),char(-72),char(0),char(63),char(0),char(3),char(0),char(61),char(0),char(-74),char(0), +char(14),char(0),char(-73),char(0),char(14),char(0),char(-72),char(0),char(64),char(0),char(3),char(0),char(59),char(0),char(-74),char(0),char(14),char(0),char(-73),char(0), +char(14),char(0),char(-72),char(0),char(65),char(0),char(13),char(0),char(59),char(0),char(-74),char(0),char(20),char(0),char(-71),char(0),char(20),char(0),char(-70),char(0), +char(4),char(0),char(-69),char(0),char(4),char(0),char(-68),char(0),char(4),char(0),char(-67),char(0),char(7),char(0),char(-66),char(0),char(7),char(0),char(-65),char(0), +char(7),char(0),char(-64),char(0),char(7),char(0),char(-63),char(0),char(7),char(0),char(-62),char(0),char(7),char(0),char(-61),char(0),char(7),char(0),char(-60),char(0), +char(66),char(0),char(13),char(0),char(59),char(0),char(-74),char(0),char(19),char(0),char(-71),char(0),char(19),char(0),char(-70),char(0),char(4),char(0),char(-69),char(0), +char(4),char(0),char(-68),char(0),char(4),char(0),char(-67),char(0),char(7),char(0),char(-66),char(0),char(7),char(0),char(-65),char(0),char(7),char(0),char(-64),char(0), +char(7),char(0),char(-63),char(0),char(7),char(0),char(-62),char(0),char(7),char(0),char(-61),char(0),char(7),char(0),char(-60),char(0),char(67),char(0),char(14),char(0), +char(61),char(0),char(-74),char(0),char(20),char(0),char(-71),char(0),char(20),char(0),char(-70),char(0),char(4),char(0),char(-69),char(0),char(4),char(0),char(-68),char(0), +char(4),char(0),char(-67),char(0),char(8),char(0),char(-66),char(0),char(8),char(0),char(-65),char(0),char(8),char(0),char(-64),char(0),char(8),char(0),char(-63),char(0), +char(8),char(0),char(-62),char(0),char(8),char(0),char(-61),char(0),char(8),char(0),char(-60),char(0),char(0),char(0),char(-59),char(0),char(68),char(0),char(10),char(0), +char(61),char(0),char(-74),char(0),char(20),char(0),char(-71),char(0),char(20),char(0),char(-70),char(0),char(8),char(0),char(-58),char(0),char(8),char(0),char(-57),char(0), +char(8),char(0),char(-56),char(0),char(8),char(0),char(-62),char(0),char(8),char(0),char(-61),char(0),char(8),char(0),char(-60),char(0),char(8),char(0),char(127),char(0), +char(69),char(0),char(11),char(0),char(59),char(0),char(-74),char(0),char(19),char(0),char(-71),char(0),char(19),char(0),char(-70),char(0),char(7),char(0),char(-58),char(0), +char(7),char(0),char(-57),char(0),char(7),char(0),char(-56),char(0),char(7),char(0),char(-62),char(0),char(7),char(0),char(-61),char(0),char(7),char(0),char(-60),char(0), +char(7),char(0),char(127),char(0),char(0),char(0),char(21),char(0),char(70),char(0),char(9),char(0),char(59),char(0),char(-74),char(0),char(19),char(0),char(-71),char(0), +char(19),char(0),char(-70),char(0),char(13),char(0),char(-55),char(0),char(13),char(0),char(-54),char(0),char(13),char(0),char(-53),char(0),char(13),char(0),char(-52),char(0), +char(4),char(0),char(-51),char(0),char(4),char(0),char(-50),char(0),char(71),char(0),char(9),char(0),char(61),char(0),char(-74),char(0),char(20),char(0),char(-71),char(0), +char(20),char(0),char(-70),char(0),char(14),char(0),char(-55),char(0),char(14),char(0),char(-54),char(0),char(14),char(0),char(-53),char(0),char(14),char(0),char(-52),char(0), +char(4),char(0),char(-51),char(0),char(4),char(0),char(-50),char(0),char(72),char(0),char(5),char(0),char(70),char(0),char(-49),char(0),char(4),char(0),char(-48),char(0), +char(7),char(0),char(-47),char(0),char(7),char(0),char(-46),char(0),char(7),char(0),char(-45),char(0),char(73),char(0),char(5),char(0),char(71),char(0),char(-49),char(0), +char(4),char(0),char(-48),char(0),char(8),char(0),char(-47),char(0),char(8),char(0),char(-46),char(0),char(8),char(0),char(-45),char(0),char(74),char(0),char(41),char(0), +char(59),char(0),char(-74),char(0),char(19),char(0),char(-71),char(0),char(19),char(0),char(-70),char(0),char(13),char(0),char(-55),char(0),char(13),char(0),char(-54),char(0), +char(13),char(0),char(-44),char(0),char(13),char(0),char(-43),char(0),char(13),char(0),char(-42),char(0),char(13),char(0),char(-41),char(0),char(13),char(0),char(-40),char(0), +char(13),char(0),char(-39),char(0),char(13),char(0),char(-38),char(0),char(13),char(0),char(-37),char(0),char(13),char(0),char(-36),char(0),char(13),char(0),char(-35),char(0), +char(13),char(0),char(-34),char(0),char(0),char(0),char(-33),char(0),char(0),char(0),char(-32),char(0),char(0),char(0),char(-31),char(0),char(0),char(0),char(-30),char(0), +char(0),char(0),char(-29),char(0),char(0),char(0),char(-59),char(0),char(13),char(0),char(-53),char(0),char(13),char(0),char(-52),char(0),char(13),char(0),char(-28),char(0), +char(13),char(0),char(-27),char(0),char(13),char(0),char(-26),char(0),char(13),char(0),char(-25),char(0),char(13),char(0),char(-24),char(0),char(13),char(0),char(-23),char(0), +char(13),char(0),char(-22),char(0),char(13),char(0),char(-21),char(0),char(13),char(0),char(-20),char(0),char(13),char(0),char(-19),char(0),char(13),char(0),char(-18),char(0), +char(0),char(0),char(-17),char(0),char(0),char(0),char(-16),char(0),char(0),char(0),char(-15),char(0),char(0),char(0),char(-14),char(0),char(0),char(0),char(-13),char(0), +char(4),char(0),char(-12),char(0),char(75),char(0),char(41),char(0),char(61),char(0),char(-74),char(0),char(20),char(0),char(-71),char(0),char(20),char(0),char(-70),char(0), +char(14),char(0),char(-55),char(0),char(14),char(0),char(-54),char(0),char(14),char(0),char(-44),char(0),char(14),char(0),char(-43),char(0),char(14),char(0),char(-42),char(0), +char(14),char(0),char(-41),char(0),char(14),char(0),char(-40),char(0),char(14),char(0),char(-39),char(0),char(14),char(0),char(-38),char(0),char(14),char(0),char(-37),char(0), +char(14),char(0),char(-36),char(0),char(14),char(0),char(-35),char(0),char(14),char(0),char(-34),char(0),char(0),char(0),char(-33),char(0),char(0),char(0),char(-32),char(0), +char(0),char(0),char(-31),char(0),char(0),char(0),char(-30),char(0),char(0),char(0),char(-29),char(0),char(0),char(0),char(-59),char(0),char(14),char(0),char(-53),char(0), +char(14),char(0),char(-52),char(0),char(14),char(0),char(-28),char(0),char(14),char(0),char(-27),char(0),char(14),char(0),char(-26),char(0),char(14),char(0),char(-25),char(0), +char(14),char(0),char(-24),char(0),char(14),char(0),char(-23),char(0),char(14),char(0),char(-22),char(0),char(14),char(0),char(-21),char(0),char(14),char(0),char(-20),char(0), +char(14),char(0),char(-19),char(0),char(14),char(0),char(-18),char(0),char(0),char(0),char(-17),char(0),char(0),char(0),char(-16),char(0),char(0),char(0),char(-15),char(0), +char(0),char(0),char(-14),char(0),char(0),char(0),char(-13),char(0),char(4),char(0),char(-12),char(0),char(76),char(0),char(9),char(0),char(59),char(0),char(-74),char(0), +char(19),char(0),char(-71),char(0),char(19),char(0),char(-70),char(0),char(7),char(0),char(-55),char(0),char(7),char(0),char(-54),char(0),char(7),char(0),char(-53),char(0), +char(7),char(0),char(-52),char(0),char(4),char(0),char(-51),char(0),char(4),char(0),char(-50),char(0),char(77),char(0),char(9),char(0),char(61),char(0),char(-74),char(0), +char(20),char(0),char(-71),char(0),char(20),char(0),char(-70),char(0),char(8),char(0),char(-55),char(0),char(8),char(0),char(-54),char(0),char(8),char(0),char(-53),char(0), +char(8),char(0),char(-52),char(0),char(4),char(0),char(-51),char(0),char(4),char(0),char(-50),char(0),char(78),char(0),char(5),char(0),char(58),char(0),char(-74),char(0), +char(13),char(0),char(-11),char(0),char(13),char(0),char(-10),char(0),char(7),char(0),char(-9),char(0),char(0),char(0),char(37),char(0),char(79),char(0),char(4),char(0), +char(61),char(0),char(-74),char(0),char(14),char(0),char(-11),char(0),char(14),char(0),char(-10),char(0),char(8),char(0),char(-9),char(0),char(80),char(0),char(4),char(0), +char(7),char(0),char(-8),char(0),char(7),char(0),char(-7),char(0),char(7),char(0),char(-6),char(0),char(4),char(0),char(79),char(0),char(81),char(0),char(10),char(0), +char(80),char(0),char(-5),char(0),char(13),char(0),char(-4),char(0),char(13),char(0),char(-3),char(0),char(13),char(0),char(-2),char(0),char(13),char(0),char(-1),char(0), +char(13),char(0),char(0),char(1),char(7),char(0),char(-99),char(0),char(7),char(0),char(1),char(1),char(4),char(0),char(2),char(1),char(4),char(0),char(53),char(0), +char(82),char(0),char(4),char(0),char(80),char(0),char(-5),char(0),char(4),char(0),char(3),char(1),char(7),char(0),char(4),char(1),char(4),char(0),char(5),char(1), +char(83),char(0),char(4),char(0),char(13),char(0),char(0),char(1),char(80),char(0),char(-5),char(0),char(4),char(0),char(6),char(1),char(7),char(0),char(7),char(1), +char(84),char(0),char(7),char(0),char(13),char(0),char(8),char(1),char(80),char(0),char(-5),char(0),char(4),char(0),char(9),char(1),char(7),char(0),char(10),char(1), +char(7),char(0),char(11),char(1),char(7),char(0),char(12),char(1),char(4),char(0),char(53),char(0),char(85),char(0),char(6),char(0),char(17),char(0),char(13),char(1), +char(13),char(0),char(11),char(1),char(13),char(0),char(14),char(1),char(60),char(0),char(15),char(1),char(4),char(0),char(16),char(1),char(7),char(0),char(12),char(1), +char(86),char(0),char(26),char(0),char(4),char(0),char(17),char(1),char(7),char(0),char(18),char(1),char(7),char(0),char(127),char(0),char(7),char(0),char(19),char(1), +char(7),char(0),char(20),char(1),char(7),char(0),char(21),char(1),char(7),char(0),char(22),char(1),char(7),char(0),char(23),char(1),char(7),char(0),char(24),char(1), +char(7),char(0),char(25),char(1),char(7),char(0),char(26),char(1),char(7),char(0),char(27),char(1),char(7),char(0),char(28),char(1),char(7),char(0),char(29),char(1), +char(7),char(0),char(30),char(1),char(7),char(0),char(31),char(1),char(7),char(0),char(32),char(1),char(7),char(0),char(33),char(1),char(7),char(0),char(34),char(1), +char(7),char(0),char(35),char(1),char(7),char(0),char(36),char(1),char(4),char(0),char(37),char(1),char(4),char(0),char(38),char(1),char(4),char(0),char(39),char(1), +char(4),char(0),char(40),char(1),char(4),char(0),char(120),char(0),char(87),char(0),char(12),char(0),char(17),char(0),char(41),char(1),char(17),char(0),char(42),char(1), +char(17),char(0),char(43),char(1),char(13),char(0),char(44),char(1),char(13),char(0),char(45),char(1),char(7),char(0),char(46),char(1),char(4),char(0),char(47),char(1), +char(4),char(0),char(48),char(1),char(4),char(0),char(49),char(1),char(4),char(0),char(50),char(1),char(7),char(0),char(10),char(1),char(4),char(0),char(53),char(0), +char(88),char(0),char(27),char(0),char(19),char(0),char(51),char(1),char(17),char(0),char(52),char(1),char(17),char(0),char(53),char(1),char(13),char(0),char(44),char(1), +char(13),char(0),char(54),char(1),char(13),char(0),char(55),char(1),char(13),char(0),char(56),char(1),char(13),char(0),char(57),char(1),char(13),char(0),char(58),char(1), +char(4),char(0),char(59),char(1),char(7),char(0),char(60),char(1),char(4),char(0),char(61),char(1),char(4),char(0),char(62),char(1),char(4),char(0),char(63),char(1), +char(7),char(0),char(64),char(1),char(7),char(0),char(65),char(1),char(4),char(0),char(66),char(1),char(4),char(0),char(67),char(1),char(7),char(0),char(68),char(1), +char(7),char(0),char(69),char(1),char(7),char(0),char(70),char(1),char(7),char(0),char(71),char(1),char(7),char(0),char(72),char(1),char(7),char(0),char(73),char(1), +char(4),char(0),char(74),char(1),char(4),char(0),char(75),char(1),char(4),char(0),char(76),char(1),char(89),char(0),char(12),char(0),char(9),char(0),char(77),char(1), +char(9),char(0),char(78),char(1),char(13),char(0),char(79),char(1),char(7),char(0),char(80),char(1),char(7),char(0),char(-125),char(0),char(7),char(0),char(81),char(1), +char(4),char(0),char(82),char(1),char(13),char(0),char(83),char(1),char(4),char(0),char(84),char(1),char(4),char(0),char(85),char(1),char(4),char(0),char(86),char(1), +char(4),char(0),char(53),char(0),char(90),char(0),char(19),char(0),char(50),char(0),char(-109),char(0),char(87),char(0),char(87),char(1),char(80),char(0),char(88),char(1), +char(81),char(0),char(89),char(1),char(82),char(0),char(90),char(1),char(83),char(0),char(91),char(1),char(84),char(0),char(92),char(1),char(85),char(0),char(93),char(1), +char(88),char(0),char(94),char(1),char(89),char(0),char(95),char(1),char(4),char(0),char(96),char(1),char(4),char(0),char(62),char(1),char(4),char(0),char(97),char(1), +char(4),char(0),char(98),char(1),char(4),char(0),char(99),char(1),char(4),char(0),char(100),char(1),char(4),char(0),char(101),char(1),char(4),char(0),char(102),char(1), +char(86),char(0),char(103),char(1),char(91),char(0),char(24),char(0),char(16),char(0),char(104),char(1),char(14),char(0),char(105),char(1),char(14),char(0),char(106),char(1), +char(14),char(0),char(107),char(1),char(14),char(0),char(108),char(1),char(14),char(0),char(109),char(1),char(8),char(0),char(110),char(1),char(4),char(0),char(111),char(1), +char(4),char(0),char(86),char(1),char(4),char(0),char(112),char(1),char(4),char(0),char(113),char(1),char(8),char(0),char(114),char(1),char(8),char(0),char(115),char(1), +char(8),char(0),char(116),char(1),char(8),char(0),char(117),char(1),char(8),char(0),char(118),char(1),char(8),char(0),char(119),char(1),char(8),char(0),char(120),char(1), +char(8),char(0),char(121),char(1),char(8),char(0),char(122),char(1),char(0),char(0),char(123),char(1),char(0),char(0),char(124),char(1),char(49),char(0),char(125),char(1), +char(0),char(0),char(126),char(1),char(92),char(0),char(24),char(0),char(15),char(0),char(104),char(1),char(13),char(0),char(105),char(1),char(13),char(0),char(106),char(1), +char(13),char(0),char(107),char(1),char(13),char(0),char(108),char(1),char(13),char(0),char(109),char(1),char(4),char(0),char(112),char(1),char(7),char(0),char(110),char(1), +char(4),char(0),char(111),char(1),char(4),char(0),char(86),char(1),char(7),char(0),char(114),char(1),char(7),char(0),char(115),char(1),char(7),char(0),char(116),char(1), +char(4),char(0),char(113),char(1),char(7),char(0),char(117),char(1),char(7),char(0),char(118),char(1),char(7),char(0),char(119),char(1),char(7),char(0),char(120),char(1), +char(7),char(0),char(121),char(1),char(7),char(0),char(122),char(1),char(0),char(0),char(123),char(1),char(0),char(0),char(124),char(1),char(50),char(0),char(125),char(1), +char(0),char(0),char(126),char(1),char(93),char(0),char(9),char(0),char(20),char(0),char(127),char(1),char(14),char(0),char(-128),char(1),char(8),char(0),char(-127),char(1), +char(0),char(0),char(-126),char(1),char(91),char(0),char(90),char(1),char(49),char(0),char(-125),char(1),char(0),char(0),char(126),char(1),char(4),char(0),char(97),char(1), +char(0),char(0),char(37),char(0),char(94),char(0),char(7),char(0),char(0),char(0),char(-126),char(1),char(92),char(0),char(90),char(1),char(50),char(0),char(-125),char(1), +char(19),char(0),char(127),char(1),char(13),char(0),char(-128),char(1),char(7),char(0),char(-127),char(1),char(4),char(0),char(97),char(1),}; +int sBulletDNAlen64= sizeof(sBulletDNAstr64); From 7462d55128222d4b30544c7377e8c6a9e4b218d1 Mon Sep 17 00:00:00 2001 From: Erwin Coumans Date: Sun, 26 Mar 2017 16:29:06 -0700 Subject: [PATCH 08/20] remove non-public files --- examples/RobotSimulator/CMakeLists.txt | 7 ------- 1 file changed, 7 deletions(-) diff --git a/examples/RobotSimulator/CMakeLists.txt b/examples/RobotSimulator/CMakeLists.txt index e966cf390..c9e0a66c3 100644 --- a/examples/RobotSimulator/CMakeLists.txt +++ b/examples/RobotSimulator/CMakeLists.txt @@ -14,13 +14,6 @@ SET(RobotSimulator_SRCS b3RobotSimulatorClientAPI.h MinitaurSetup.cpp MinitaurSetup.h - Bound.cpp - GRAPI/BulletMinitaur.cpp - GRAPI/BulletMotor.cpp - GRAPI/BulletRemoteKeyboard - GRAPI/BulletRobot - GRAPI/Impl.cpp - GRAPI/MinitaurLeg.cpp ../../examples/SharedMemory/IKTrajectoryHelper.cpp ../../examples/SharedMemory/IKTrajectoryHelper.h ../../examples/ExampleBrowser/InProcessExampleBrowser.cpp From f4be2c1ee0237cf844ca5848c53d97fa702302b2 Mon Sep 17 00:00:00 2001 From: Erwin Coumans Date: Sun, 26 Mar 2017 20:05:48 -0700 Subject: [PATCH 09/20] pass the joint parameters for all joints --- .../Importers/ImportURDFDemo/URDF2Bullet.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/examples/Importers/ImportURDFDemo/URDF2Bullet.cpp b/examples/Importers/ImportURDFDemo/URDF2Bullet.cpp index 51df659a0..94dcfcb04 100644 --- a/examples/Importers/ImportURDFDemo/URDF2Bullet.cpp +++ b/examples/Importers/ImportURDFDemo/URDF2Bullet.cpp @@ -346,6 +346,17 @@ void ConvertURDF2BulletInternal( btQuaternion parentRotToThis = offsetInB.getRotation() * offsetInA.inverse().getRotation(); bool disableParentCollision = true; + + if (createMultiBody && cache.m_bulletMultiBody) + { + cache.m_bulletMultiBody->getLink(mbLinkIndex).m_jointDamping = jointDamping; + cache.m_bulletMultiBody->getLink(mbLinkIndex).m_jointFriction = jointFriction; + cache.m_bulletMultiBody->getLink(mbLinkIndex).m_jointLowerLimit = jointLowerLimit; + cache.m_bulletMultiBody->getLink(mbLinkIndex).m_jointUpperLimit = jointUpperLimit; + cache.m_bulletMultiBody->getLink(mbLinkIndex).m_jointMaxForce = jointMaxForce; + cache.m_bulletMultiBody->getLink(mbLinkIndex).m_jointMaxVelocity = jointMaxVelocity; + } + switch (jointType) { case URDFFixedJoint: @@ -376,11 +387,6 @@ void ConvertURDF2BulletInternal( parentRotToThis, quatRotate(offsetInB.getRotation(),jointAxisInJointSpace), offsetInA.getOrigin(),//parent2joint.getOrigin(), -offsetInB.getOrigin(), disableParentCollision); - cache.m_bulletMultiBody->getLink(mbLinkIndex).m_jointDamping = jointDamping; - cache.m_bulletMultiBody->getLink(mbLinkIndex).m_jointFriction = jointFriction; - cache.m_bulletMultiBody->getLink(mbLinkIndex).m_jointLowerLimit = jointLowerLimit; - cache.m_bulletMultiBody->getLink(mbLinkIndex).m_jointUpperLimit = jointUpperLimit; - creation.addLinkMapping(urdfLinkIndex,mbLinkIndex); if (jointType == URDFRevoluteJoint && jointLowerLimit <= jointUpperLimit) { //std::string name = u2b.getLinkName(urdfLinkIndex); From d78909aef9f254aa410aed41a81c5c688ea4f62b Mon Sep 17 00:00:00 2001 From: Erwin Coumans Date: Mon, 27 Mar 2017 07:38:06 -0700 Subject: [PATCH 10/20] update pybullet quickstart guide pdf from https://docs.google.com/document/d/10sXEhzFRSnvFcl3XxNGhnD4N2SedqwdAvK3dsihxVUA/edit#heading=h.6c3uot59qod4 --- docs/pybullet_quickstartguide.pdf | Bin 521178 -> 522212 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/docs/pybullet_quickstartguide.pdf b/docs/pybullet_quickstartguide.pdf index 53eef4638aa4a3834434dfd96e668da571cbc88f..33f43eed1826a765846cf71c87ff6098d9bcb104 100644 GIT binary patch delta 124650 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 Rx22P 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Ž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 delta 123746 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 Date: Mon, 27 Mar 2017 08:30:20 -0700 Subject: [PATCH 11/20] Expose 'flags' option for loadURDF, to allow customization of the URDF loading process while maintaining backward compatibility. For example: URDF_USE_INERTIA_FROM_FILE flag. By default, URDF2Bullet will re-compute the inertia tensor based on mass and volume, because most URDF files have bogus Inertia values. --- .../RobotSimulator/b3RobotSimulatorClientAPI.cpp | 2 ++ .../RobotSimulator/b3RobotSimulatorClientAPI.h | 4 +++- examples/SharedMemory/PhysicsClientC_API.cpp | 13 +++++++++++++ examples/SharedMemory/PhysicsClientC_API.h | 1 + .../SharedMemory/PhysicsServerCommandProcessor.cpp | 14 +++++++++----- .../SharedMemory/PhysicsServerCommandProcessor.h | 2 +- examples/SharedMemory/SharedMemoryCommands.h | 2 ++ examples/SharedMemory/SharedMemoryPublic.h | 5 +++++ examples/pybullet/pybullet.c | 14 ++++++++------ 9 files changed, 44 insertions(+), 13 deletions(-) diff --git a/examples/RobotSimulator/b3RobotSimulatorClientAPI.cpp b/examples/RobotSimulator/b3RobotSimulatorClientAPI.cpp index 64b062964..d29b7407f 100644 --- a/examples/RobotSimulator/b3RobotSimulatorClientAPI.cpp +++ b/examples/RobotSimulator/b3RobotSimulatorClientAPI.cpp @@ -260,6 +260,8 @@ int b3RobotSimulatorClientAPI::loadURDF(const std::string& fileName, const struc //setting the initial position, orientation and other arguments are optional + b3LoadUrdfCommandSetFlags(command,args.m_flags); + b3LoadUrdfCommandSetStartPosition(command, args.m_startPosition[0], args.m_startPosition[1], args.m_startPosition[2]); diff --git a/examples/RobotSimulator/b3RobotSimulatorClientAPI.h b/examples/RobotSimulator/b3RobotSimulatorClientAPI.h index bac77009a..b7d9991e5 100644 --- a/examples/RobotSimulator/b3RobotSimulatorClientAPI.h +++ b/examples/RobotSimulator/b3RobotSimulatorClientAPI.h @@ -15,12 +15,14 @@ struct b3RobotSimulatorLoadUrdfFileArgs b3Quaternion m_startOrientation; bool m_forceOverrideFixedBase; bool m_useMultiBody; + int m_flags; b3RobotSimulatorLoadUrdfFileArgs() : m_startPosition(b3MakeVector3(0, 0, 0)), m_startOrientation(b3Quaternion(0, 0, 0, 1)), m_forceOverrideFixedBase(false), - m_useMultiBody(true) + m_useMultiBody(true), + m_flags(0) { } }; diff --git a/examples/SharedMemory/PhysicsClientC_API.cpp b/examples/SharedMemory/PhysicsClientC_API.cpp index bf2c95dad..7615782ba 100644 --- a/examples/SharedMemory/PhysicsClientC_API.cpp +++ b/examples/SharedMemory/PhysicsClientC_API.cpp @@ -238,6 +238,19 @@ int b3LoadUrdfCommandSetUseFixedBase(b3SharedMemoryCommandHandle commandHandle, return -1; } +int b3LoadUrdfCommandSetFlags(b3SharedMemoryCommandHandle commandHandle, int flags) +{ + struct SharedMemoryCommand* command = (struct SharedMemoryCommand*) commandHandle; + b3Assert(command); + b3Assert(command->m_type == CMD_LOAD_URDF); + if (command && (command->m_type == CMD_LOAD_URDF)) + { + command->m_updateFlags |= URDF_ARGS_HAS_CUSTOM_URDF_FLAGS; + command->m_urdfArguments.m_urdfFlags = flags; + } + return 0; +} + int b3LoadUrdfCommandSetStartPosition(b3SharedMemoryCommandHandle commandHandle, double startPosX,double startPosY,double startPosZ) { struct SharedMemoryCommand* command = (struct SharedMemoryCommand*) commandHandle; diff --git a/examples/SharedMemory/PhysicsClientC_API.h b/examples/SharedMemory/PhysicsClientC_API.h index ff553680c..35071ae34 100644 --- a/examples/SharedMemory/PhysicsClientC_API.h +++ b/examples/SharedMemory/PhysicsClientC_API.h @@ -217,6 +217,7 @@ int b3LoadUrdfCommandSetStartPosition(b3SharedMemoryCommandHandle commandHandle, int b3LoadUrdfCommandSetStartOrientation(b3SharedMemoryCommandHandle commandHandle, double startOrnX,double startOrnY,double startOrnZ, double startOrnW); int b3LoadUrdfCommandSetUseMultiBody(b3SharedMemoryCommandHandle commandHandle, int useMultiBody); int b3LoadUrdfCommandSetUseFixedBase(b3SharedMemoryCommandHandle commandHandle, int useFixedBase); +int b3LoadUrdfCommandSetFlags(b3SharedMemoryCommandHandle commandHandle, int flags); b3SharedMemoryCommandHandle b3LoadBulletCommandInit(b3PhysicsClientHandle physClient, const char* fileName); b3SharedMemoryCommandHandle b3SaveBulletCommandInit(b3PhysicsClientHandle physClient, const char* fileName); diff --git a/examples/SharedMemory/PhysicsServerCommandProcessor.cpp b/examples/SharedMemory/PhysicsServerCommandProcessor.cpp index 614dc8da5..84371ae89 100644 --- a/examples/SharedMemory/PhysicsServerCommandProcessor.cpp +++ b/examples/SharedMemory/PhysicsServerCommandProcessor.cpp @@ -1539,7 +1539,7 @@ bool PhysicsServerCommandProcessor::loadSdf(const char* fileName, char* bufferSe bool PhysicsServerCommandProcessor::loadUrdf(const char* fileName, const btVector3& pos, const btQuaternion& orn, - bool useMultiBody, bool useFixedBase, int* bodyUniqueIdPtr, char* bufferServerToClient, int bufferSizeInBytes) + bool useMultiBody, bool useFixedBase, int* bodyUniqueIdPtr, char* bufferServerToClient, int bufferSizeInBytes, int flags) { BT_PROFILE("loadURDF"); btAssert(m_data->m_dynamicsWorld); @@ -1597,7 +1597,7 @@ bool PhysicsServerCommandProcessor::loadUrdf(const char* fileName, const btVecto // printf("urdf root link index = %d\n",rootLinkIndex); MyMultiBodyCreator creation(m_data->m_guiHelper); - ConvertURDF2Bullet(u2b,creation, tr,m_data->m_dynamicsWorld,useMultiBody,u2b.getPathPrefix()); + ConvertURDF2Bullet(u2b,creation, tr,m_data->m_dynamicsWorld,useMultiBody,u2b.getPathPrefix(),flags); for (int i=0;im_sphereId = bodyId; InteralBodyData* parentBody = m_data->getHandle(bodyId); diff --git a/examples/SharedMemory/PhysicsServerCommandProcessor.h b/examples/SharedMemory/PhysicsServerCommandProcessor.h index 7c1732002..180db5c58 100644 --- a/examples/SharedMemory/PhysicsServerCommandProcessor.h +++ b/examples/SharedMemory/PhysicsServerCommandProcessor.h @@ -35,7 +35,7 @@ protected: bool loadSdf(const char* fileName, char* bufferServerToClient, int bufferSizeInBytes, bool useMultiBody, int flags); bool loadUrdf(const char* fileName, const class btVector3& pos, const class btQuaternion& orn, - bool useMultiBody, bool useFixedBase, int* bodyUniqueIdPtr, char* bufferServerToClient, int bufferSizeInBytes); + bool useMultiBody, bool useFixedBase, int* bodyUniqueIdPtr, char* bufferServerToClient, int bufferSizeInBytes, int flags=0); bool loadMjcf(const char* fileName, char* bufferServerToClient, int bufferSizeInBytes, bool useMultiBody, int flags); diff --git a/examples/SharedMemory/SharedMemoryCommands.h b/examples/SharedMemory/SharedMemoryCommands.h index fdc1aa709..096349762 100644 --- a/examples/SharedMemory/SharedMemoryCommands.h +++ b/examples/SharedMemory/SharedMemoryCommands.h @@ -79,6 +79,7 @@ enum EnumUrdfArgsUpdateFlags URDF_ARGS_INITIAL_ORIENTATION=4, URDF_ARGS_USE_MULTIBODY=8, URDF_ARGS_USE_FIXED_BASE=16, + URDF_ARGS_HAS_CUSTOM_URDF_FLAGS = 32 }; @@ -89,6 +90,7 @@ struct UrdfArgs double m_initialOrientation[4]; int m_useMultiBody; int m_useFixedBase; + int m_urdfFlags; }; struct MjcfArgs diff --git a/examples/SharedMemory/SharedMemoryPublic.h b/examples/SharedMemory/SharedMemoryPublic.h index 6587747d4..9692014d2 100644 --- a/examples/SharedMemory/SharedMemoryPublic.h +++ b/examples/SharedMemory/SharedMemoryPublic.h @@ -447,4 +447,9 @@ enum eCONNECT_METHOD { eCONNECT_TCP = 5, }; +enum eURDF_Flags +{ + URDF_USE_INERTIA_FROM_FILE=2,//sync with URDF2Bullet.h 'ConvertURDFFlags' +}; + #endif//SHARED_MEMORY_PUBLIC_H diff --git a/examples/pybullet/pybullet.c b/examples/pybullet/pybullet.c index ddf444d6e..c2e44185a 100644 --- a/examples/pybullet/pybullet.c +++ b/examples/pybullet/pybullet.c @@ -693,8 +693,9 @@ static PyObject* pybullet_setPhysicsEngineParameter(PyObject* self, PyObject* ar static PyObject* pybullet_loadURDF(PyObject* self, PyObject* args, PyObject* keywds) { int physicsClientId = 0; + int flags = 0; - static char* kwlist[] = {"fileName", "basePosition", "baseOrientation", "useMaximalCoordinates", "useFixedBase", "physicsClientId", NULL}; + static char* kwlist[] = {"fileName", "basePosition", "baseOrientation", "useMaximalCoordinates", "useFixedBase", "flags","physicsClientId", NULL}; static char* kwlistBackwardCompatible4[] = {"fileName", "startPosX", "startPosY", "startPosZ", NULL}; static char* kwlistBackwardCompatible8[] = {"fileName", "startPosX", "startPosY", "startPosZ", "startOrnX", "startOrnY", "startOrnZ", "startOrnW", NULL}; @@ -741,7 +742,7 @@ static PyObject* pybullet_loadURDF(PyObject* self, PyObject* args, PyObject* key double basePos[3]; double baseOrn[4]; - if (!PyArg_ParseTupleAndKeywords(args, keywds, "s|OOiii", kwlist, &urdfFileName, &basePosObj, &baseOrnObj, &useMaximalCoordinates, &useFixedBase, &physicsClientId)) + if (!PyArg_ParseTupleAndKeywords(args, keywds, "s|OOiiii", kwlist, &urdfFileName, &basePosObj, &baseOrnObj, &useMaximalCoordinates, &useFixedBase, &flags, &physicsClientId)) { return NULL; } @@ -790,6 +791,8 @@ static PyObject* pybullet_loadURDF(PyObject* self, PyObject* args, PyObject* key b3SharedMemoryCommandHandle command = b3LoadUrdfCommandInit(sm, urdfFileName); + b3LoadUrdfCommandSetFlags(command,flags); + // setting the initial position, orientation and other arguments are // optional b3LoadUrdfCommandSetStartPosition(command, startPosX, startPosY, startPosZ); @@ -3916,15 +3919,13 @@ static PyObject* pybullet_getCameraImage(PyObject* self, PyObject* args, PyObjec b3RequestCameraImageSetLightDiffuseCoeff(command, lightDiffuseCoeff); b3RequestCameraImageSetLightSpecularCoeff(command, lightSpecularCoeff); - b3RequestCameraImageSelectRenderer(command, renderer); + b3RequestCameraImageSelectRenderer(command, renderer);//renderer could be ER_BULLET_HARDWARE_OPENGL if (b3CanSubmitCommand(sm)) { b3SharedMemoryStatusHandle statusHandle; int statusType; - // b3RequestCameraImageSelectRenderer(command,ER_BULLET_HARDWARE_OPENGL); - statusHandle = b3SubmitClientCommandAndWaitStatus(sm, command); statusType = b3GetStatusType(statusHandle); if (statusType == CMD_CAMERA_IMAGE_COMPLETED) @@ -4349,7 +4350,6 @@ static PyObject* pybullet_renderImageObsolete(PyObject* self, PyObject* args) b3SharedMemoryStatusHandle statusHandle; int statusType; - // b3RequestCameraImageSelectRenderer(command,ER_BULLET_HARDWARE_OPENGL); statusHandle = b3SubmitClientCommandAndWaitStatus(sm, command); statusType = b3GetStatusType(statusHandle); @@ -5422,6 +5422,8 @@ initpybullet(void) PyModule_AddIntConstant(m, "ER_TINY_RENDERER", ER_TINY_RENDERER); PyModule_AddIntConstant(m, "ER_BULLET_HARDWARE_OPENGL", ER_BULLET_HARDWARE_OPENGL); + PyModule_AddIntConstant(m, "URDF_USE_INERTIA_FROM_FILE", URDF_USE_INERTIA_FROM_FILE); + PyModule_AddIntConstant(m, "B3G_F1", B3G_F1); PyModule_AddIntConstant(m, "B3G_F2", B3G_F2); PyModule_AddIntConstant(m, "B3G_F3", B3G_F3); From 38ad1bfb89a603a94ec5d68632c83c1c58b8e9e5 Mon Sep 17 00:00:00 2001 From: Erwin Coumans Date: Mon, 27 Mar 2017 10:16:55 -0700 Subject: [PATCH 12/20] revert to m_jointFriction (from m_jointFriction1) --- examples/SharedMemory/BodyJointInfoUtility.h | 4 ++-- examples/SharedMemory/SharedMemoryPublic.h | 2 +- examples/pybullet/pybullet.c | 2 +- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/examples/SharedMemory/BodyJointInfoUtility.h b/examples/SharedMemory/BodyJointInfoUtility.h index 6c3e61c16..decced5ba 100644 --- a/examples/SharedMemory/BodyJointInfoUtility.h +++ b/examples/SharedMemory/BodyJointInfoUtility.h @@ -60,7 +60,7 @@ template void addJointInfoFromMultiBodyData(const T* mb info.m_jointType = mb->m_links[link].m_jointType; info.m_jointDamping = mb->m_links[link].m_jointDamping; - info.m_jointFriction1 = mb->m_links[link].m_jointFriction; + info.m_jointFriction = mb->m_links[link].m_jointFriction; info.m_jointLowerLimit = mb->m_links[link].m_jointLowerLimit; info.m_jointUpperLimit = mb->m_links[link].m_jointUpperLimit; info.m_jointMaxForce = mb->m_links[link].m_jointMaxForce; @@ -80,4 +80,4 @@ template void addJointInfoFromMultiBodyData(const T* mb -#endif //BODY_JOINT_INFO_UTILITY_H \ No newline at end of file +#endif //BODY_JOINT_INFO_UTILITY_H diff --git a/examples/SharedMemory/SharedMemoryPublic.h b/examples/SharedMemory/SharedMemoryPublic.h index 6587747d4..8f4ae3d37 100644 --- a/examples/SharedMemory/SharedMemoryPublic.h +++ b/examples/SharedMemory/SharedMemoryPublic.h @@ -174,7 +174,7 @@ struct b3JointInfo int m_jointIndex; int m_flags; double m_jointDamping; - double m_jointFriction1; + double m_jointFriction; double m_jointLowerLimit; double m_jointUpperLimit; double m_jointMaxForce; diff --git a/examples/pybullet/pybullet.c b/examples/pybullet/pybullet.c index ddf444d6e..7bb01cca1 100644 --- a/examples/pybullet/pybullet.c +++ b/examples/pybullet/pybullet.c @@ -2118,7 +2118,7 @@ static PyObject* pybullet_getJointInfo(PyObject* self, PyObject* args, PyObject* PyTuple_SetItem(pyListJointInfo, 6, PyFloat_FromDouble(info.m_jointDamping)); PyTuple_SetItem(pyListJointInfo, 7, - PyFloat_FromDouble(info.m_jointFriction1)); + PyFloat_FromDouble(info.m_jointFriction)); PyTuple_SetItem(pyListJointInfo, 8, PyFloat_FromDouble(info.m_jointLowerLimit)); PyTuple_SetItem(pyListJointInfo, 9, From 634f4cfdbcac871e06e6c3da520ca6fd0af445a8 Mon Sep 17 00:00:00 2001 From: Oleg Klimov Date: Wed, 22 Mar 2017 21:05:00 +0300 Subject: [PATCH 13/20] MJCF: support for angle units in , kill two stdout messages --- .../ImportMJCFDemo/BulletMJCFImporter.cpp | 30 ++++++++++++++----- .../PhysicsServerCommandProcessor.cpp | 4 +-- .../TinyRendererVisualShapeConverter.cpp | 5 ++++ 3 files changed, 29 insertions(+), 10 deletions(-) diff --git a/examples/Importers/ImportMJCFDemo/BulletMJCFImporter.cpp b/examples/Importers/ImportMJCFDemo/BulletMJCFImporter.cpp index 78c2745da..f4d6d231d 100644 --- a/examples/Importers/ImportMJCFDemo/BulletMJCFImporter.cpp +++ b/examples/Importers/ImportMJCFDemo/BulletMJCFImporter.cpp @@ -143,6 +143,7 @@ struct BulletMJCFImporterInternalData // std::string m_meshDir; std::string m_textureDir; + std::string m_angleUnits; int m_activeModel; @@ -213,6 +214,8 @@ struct BulletMJCFImporterInternalData { m_textureDir = textureDirStr; } + const char* angle = root_xml->Attribute("angle"); + m_angleUnits = angle ? angle : "degree"; // degrees by default, http://www.mujoco.org/book/modeling.html#compiler #if 0 for (TiXmlElement* child_xml = root_xml->FirstChildElement() ; child_xml ; child_xml = child_xml->NextSiblingElement()) { @@ -406,7 +409,7 @@ struct BulletMJCFImporterInternalData isLimited = true; //parse the 'range' field btArray pieces; - btArray sizes; + btArray limits; btAlignedObjectArray strArray; urdfIsAnyOf(" ", strArray); urdfStringSplit(pieces, rangeStr, strArray); @@ -414,17 +417,28 @@ struct BulletMJCFImporterInternalData { if (!pieces[i].empty()) { - sizes.push_back(urdfLexicalCast(pieces[i].c_str())); + limits.push_back(urdfLexicalCast(pieces[i].c_str())); } } - if (sizes.size()==2) + bool success = false; + if (limits.size()==2) { - // TODO angle units are in " - range[0] = sizes[0] * B3_PI / 180; - range[1] = sizes[1] * B3_PI / 180; - } else + if (m_angleUnits=="degree") + { + range[0] = limits[0] * B3_PI / 180; + range[1] = limits[1] * B3_PI / 180; + success = true; + } + else if (m_angleUnits=="radian") + { + range[0] = limits[0]; + range[1] = limits[1]; + success = true; + } + } + if (!success) { - logger->reportWarning("Expected range[2] in joint with limits"); + logger->reportWarning( (sourceFileLocation(link_xml) + ": cannot parse 'range' attribute (units='" + m_angleUnits + "'')").c_str() ); } } diff --git a/examples/SharedMemory/PhysicsServerCommandProcessor.cpp b/examples/SharedMemory/PhysicsServerCommandProcessor.cpp index 614dc8da5..33cc39096 100644 --- a/examples/SharedMemory/PhysicsServerCommandProcessor.cpp +++ b/examples/SharedMemory/PhysicsServerCommandProcessor.cpp @@ -1398,8 +1398,8 @@ bool PhysicsServerCommandProcessor::processImportedObjects(const char* fileName, //todo: move these internal API called inside the 'ConvertURDF2Bullet' call, hidden from the user - int rootLinkIndex = u2b.getRootLinkIndex(); - b3Printf("urdf root link index = %d\n",rootLinkIndex); + //int rootLinkIndex = u2b.getRootLinkIndex(); + //b3Printf("urdf root link index = %d\n",rootLinkIndex); MyMultiBodyCreator creation(m_data->m_guiHelper); u2b.getRootTransformInWorld(rootTrans); diff --git a/examples/SharedMemory/TinyRendererVisualShapeConverter.cpp b/examples/SharedMemory/TinyRendererVisualShapeConverter.cpp index 520ca6710..0ecacd81e 100644 --- a/examples/SharedMemory/TinyRendererVisualShapeConverter.cpp +++ b/examples/SharedMemory/TinyRendererVisualShapeConverter.cpp @@ -414,6 +414,11 @@ void convertURDFToVisualShape(const UrdfShape* visual, const char* urdfPathPrefi break; } // case mesh + case URDF_GEOM_PLANE: + // TODO: plane in tiny renderer + // TODO: export visualShapeOut for external render + break; + default: { b3Warning("TinyRenderer: unknown visual geometry type %i\n", visual->m_geometry.m_type); From dcb7e25f341dbf7230f98e91134036300780fd9c Mon Sep 17 00:00:00 2001 From: Oleg Klimov Date: Fri, 24 Mar 2017 03:43:56 +0300 Subject: [PATCH 14/20] MJCF: improve error messages --- .../ImportMJCFDemo/BulletMJCFImporter.cpp | 30 ++++++++----------- 1 file changed, 13 insertions(+), 17 deletions(-) diff --git a/examples/Importers/ImportMJCFDemo/BulletMJCFImporter.cpp b/examples/Importers/ImportMJCFDemo/BulletMJCFImporter.cpp index f4d6d231d..a933aeade 100644 --- a/examples/Importers/ImportMJCFDemo/BulletMJCFImporter.cpp +++ b/examples/Importers/ImportMJCFDemo/BulletMJCFImporter.cpp @@ -79,7 +79,7 @@ static bool parseVector3(btVector3& vec3, const std::string& vector_str, MJCFErr } if (rgba.size() < 3) { - logger->reportWarning("Couldn't parse vector3"); + logger->reportWarning( ("Couldn't parse vector3 '" + vector_str + "'").c_str() ); return false; } if (lastThree) { @@ -113,7 +113,8 @@ static bool parseVector6(btVector3& v0, btVector3& v1, const std::string& vector } if (values.size() < 6) { - logger->reportWarning("Couldn't parse 6 floats"); + logger->reportWarning( ("Couldn't parse 6 floats '" + vector_str + "'").c_str() ); + return false; } v0.setValue(values[0],values[1],values[2]); @@ -348,8 +349,7 @@ struct BulletMJCFImporterInternalData } if (!handled) { - logger->reportWarning("Unhandled root element"); - logger->reportWarning(n.c_str()); + logger->reportWarning( (sourceFileLocation(rootxml) + ": unhandled root element '" + n + "'").c_str() ); } } return true; @@ -394,7 +394,7 @@ struct BulletMJCFImporterInternalData parseVector3(jointAxis,ax,logger); } else { - logger->reportWarning("joint without axis attribute"); + logger->reportWarning( (sourceFileLocation(link_xml) + ": joint without axis attribute").c_str() ); } bool isLimited = false; double range[2] = {1,0}; @@ -497,7 +497,7 @@ struct BulletMJCFImporterInternalData } } else { - logger->reportWarning("Expected 'type' attribute for joint"); + logger->reportWarning( (sourceFileLocation(link_xml) + ": expected 'type' attribute for joint").c_str() ); } if (jointHandled) @@ -542,6 +542,7 @@ struct BulletMJCFImporterInternalData UrdfLink** linkPtrPtr = m_models[modelIndex]->m_links.getAtIndex(linkIndex); if (linkPtrPtr==0) { + // XXX: should it be assert? logger->reportWarning("Invalide linkindex"); return false; } @@ -635,7 +636,7 @@ struct BulletMJCFImporterInternalData geom.m_sphereRadius = urdfLexicalCast(sz); } else { - logger->reportWarning("Expected size field (scalar) in sphere geom"); + logger->reportWarning( (sourceFileLocation(link_xml) + ": no size field (scalar) in sphere geom").c_str() ); } handledGeomType = true; } @@ -670,7 +671,7 @@ struct BulletMJCFImporterInternalData } } else { - logger->reportWarning("couldn't convert 'size' attribute of capsule geom"); + logger->reportWarning( (sourceFileLocation(link_xml) + ": couldn't convert 'size' attribute of capsule geom").c_str() ); } const char* fromtoStr = link_xml->Attribute("fromto"); geom.m_hasFromTo = false; @@ -686,7 +687,7 @@ struct BulletMJCFImporterInternalData { if (sizes.size()<2) { - logger->reportWarning("capsule without fromto attribute requires 2 sizes (radius and halfheight)"); + logger->reportWarning( (sourceFileLocation(link_xml) + ": capsule without fromto attribute requires 2 sizes (radius and halfheight)").c_str() ); } else { handledGeomType = true; @@ -747,13 +748,11 @@ struct BulletMJCFImporterInternalData } else { - char warn[1024]; - sprintf(warn,"Unknown/unhandled geom type: %s", geomType.c_str()); - logger->reportWarning(warn); + logger->reportWarning( (sourceFileLocation(link_xml) + ": unhandled geom type '" + geomType + "'").c_str() ); } } else { - logger->reportWarning("geom requires type"); + logger->reportWarning( (sourceFileLocation(link_xml) + ": geom requires type").c_str() ); } return handledGeomType; @@ -1035,10 +1034,7 @@ struct BulletMJCFImporterInternalData } if (!handled) { - char warn[1024]; - std::string n = xml->Value(); - sprintf(warn,"Unknown/unhandled field: %s", n.c_str()); - logger->reportWarning(warn); + logger->reportWarning( (sourceFileLocation(xml) + ": unknown field '" + n + "'").c_str() ); } } From 3048326addc9a068a2a2264941bcfe1b04a9b44e Mon Sep 17 00:00:00 2001 From: Oleg Klimov Date: Mon, 27 Mar 2017 22:30:43 +0300 Subject: [PATCH 15/20] C API: fix b3SetContactFilterLink() when using b3RequestContactPoint() --- .../SharedMemory/PhysicsServerCommandProcessor.cpp | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/examples/SharedMemory/PhysicsServerCommandProcessor.cpp b/examples/SharedMemory/PhysicsServerCommandProcessor.cpp index 33cc39096..40dc3c5e1 100644 --- a/examples/SharedMemory/PhysicsServerCommandProcessor.cpp +++ b/examples/SharedMemory/PhysicsServerCommandProcessor.cpp @@ -3808,6 +3808,12 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm { linkIndexB = mblB->m_link; objectIndexB = mblB->m_multiBody->getUserIndex2(); + if ( + (clientCmd.m_updateFlags & CMD_REQUEST_CONTACT_POINT_HAS_LINK_INDEX_B_FILTER) && + clientCmd.m_requestContactPointArguments.m_linkIndexBIndexFilter != linkIndexB) + { + continue; + } } int objectIndexA = -1; @@ -3820,8 +3826,13 @@ bool PhysicsServerCommandProcessor::processCommand(const struct SharedMemoryComm if (mblA && mblA->m_multiBody) { linkIndexA = mblA->m_link; - objectIndexA = mblA->m_multiBody->getUserIndex2(); + if ( + (clientCmd.m_updateFlags & CMD_REQUEST_CONTACT_POINT_HAS_LINK_INDEX_A_FILTER) && + clientCmd.m_requestContactPointArguments.m_linkIndexAIndexFilter != linkIndexA) + { + continue; + } } btAssert(bodyA || mblA); From 77608154a3c40fa5b74a7abe9d70bc3fdf476c89 Mon Sep 17 00:00:00 2001 From: Oleg Klimov Date: Mon, 27 Mar 2017 22:29:24 +0300 Subject: [PATCH 16/20] MJCF: fix capsule length when given in size="", fix slider joint limits --- .../ImportMJCFDemo/BulletMJCFImporter.cpp | 138 +++++++++--------- .../ImportURDFDemo/BulletUrdfImporter.cpp | 8 +- .../Importers/ImportURDFDemo/UrdfParser.cpp | 4 +- .../Importers/ImportURDFDemo/UrdfParser.h | 2 +- .../TinyRendererVisualShapeConverter.cpp | 2 +- 5 files changed, 74 insertions(+), 80 deletions(-) diff --git a/examples/Importers/ImportMJCFDemo/BulletMJCFImporter.cpp b/examples/Importers/ImportMJCFDemo/BulletMJCFImporter.cpp index a933aeade..123ceea68 100644 --- a/examples/Importers/ImportMJCFDemo/BulletMJCFImporter.cpp +++ b/examples/Importers/ImportMJCFDemo/BulletMJCFImporter.cpp @@ -357,6 +357,7 @@ struct BulletMJCFImporterInternalData bool parseJoint(TiXmlElement* link_xml, int modelIndex, int parentLinkIndex, int linkIndex, MJCFErrorLogger* logger, const btTransform& parentToLinkTrans, btTransform& jointTransOut) { + bool jointHandled = false; const char* jType = link_xml->Attribute("type"); const char* limitedStr = link_xml->Attribute("limited"); const char* axisStr = link_xml->Attribute("axis"); @@ -386,8 +387,8 @@ struct BulletMJCFImporterInternalData jointTrans.setRotation(orn); } } - btVector3 jointAxis(1,0,0); + btVector3 jointAxis(1,0,0); if (axisStr) { std::string ax = axisStr; @@ -396,84 +397,19 @@ struct BulletMJCFImporterInternalData { logger->reportWarning( (sourceFileLocation(link_xml) + ": joint without axis attribute").c_str() ); } - bool isLimited = false; - double range[2] = {1,0}; + double range[2] = {1,0}; std::string lim = m_defaultJointLimited; if (limitedStr) { lim = limitedStr; } - if (lim=="true") - { - isLimited = true; - //parse the 'range' field - btArray pieces; - btArray limits; - btAlignedObjectArray strArray; - urdfIsAnyOf(" ", strArray); - urdfStringSplit(pieces, rangeStr, strArray); - for (int i = 0; i < pieces.size(); ++i) - { - if (!pieces[i].empty()) - { - limits.push_back(urdfLexicalCast(pieces[i].c_str())); - } - } - bool success = false; - if (limits.size()==2) - { - if (m_angleUnits=="degree") - { - range[0] = limits[0] * B3_PI / 180; - range[1] = limits[1] * B3_PI / 180; - success = true; - } - else if (m_angleUnits=="radian") - { - range[0] = limits[0]; - range[1] = limits[1]; - success = true; - } - } - if (!success) - { - logger->reportWarning( (sourceFileLocation(link_xml) + ": cannot parse 'range' attribute (units='" + m_angleUnits + "'')").c_str() ); - } - } + bool isLimited = lim=="true"; - // TODO armature : real, "0" Armature inertia (or rotor inertia) of all - // degrees of freedom created by this joint. These are constants added to the - // diagonal of the inertia matrix in generalized coordinates. They make the - // simulation more stable, and often increase physical realism. This is because - // when a motor is attached to the system with a transmission that amplifies - // the motor force by c, the inertia of the rotor (i.e. the moving part of the - // motor) is amplified by c*c. The same holds for gears in the early stages of - // planetary gear boxes. These extra inertias often dominate the inertias of - // the robot parts that are represented explicitly in the model, and the - // armature attribute is the way to model them. - - // TODO damping : real, "0" Damping applied to all degrees of - // freedom created by this joint. Unlike friction loss - // which is computed by the constraint solver, damping is - // simply a force linear in velocity. It is included in - // the passive forces. Despite this simplicity, larger - // damping values can make numerical integrators unstable, - // which is why our Euler integrator handles damping - // implicitly. See Integration in the Computation chapter. - - bool jointHandled = false; - const UrdfLink* linkPtr = getLink(modelIndex,linkIndex); - - btTransform parentLinkToJointTransform; - parentLinkToJointTransform.setIdentity(); - parentLinkToJointTransform = parentToLinkTrans*jointTrans; - - jointTransOut = jointTrans; UrdfJointTypes ejtype; if (jType) { - std::string jointType = jType; + std::string jointType = jType; if (jointType == "fixed") { ejtype = URDFFixedJoint; @@ -500,6 +436,64 @@ struct BulletMJCFImporterInternalData logger->reportWarning( (sourceFileLocation(link_xml) + ": expected 'type' attribute for joint").c_str() ); } + if (isLimited) + { + //parse the 'range' field + btArray pieces; + btArray limits; + btAlignedObjectArray strArray; + urdfIsAnyOf(" ", strArray); + urdfStringSplit(pieces, rangeStr, strArray); + for (int i = 0; i < pieces.size(); ++i) + { + if (!pieces[i].empty()) + { + limits.push_back(urdfLexicalCast(pieces[i].c_str())); + } + } + if (limits.size()==2) + { + range[0] = limits[0]; + range[1] = limits[1]; + if (m_angleUnits=="degree" && ejtype==URDFRevoluteJoint) + { + range[0] = limits[0] * B3_PI / 180; + range[1] = limits[1] * B3_PI / 180; + } + } + else + { + logger->reportWarning( (sourceFileLocation(link_xml) + ": cannot parse 'range' attribute (units='" + m_angleUnits + "'')").c_str() ); + } + } + + // TODO armature : real, "0" Armature inertia (or rotor inertia) of all + // degrees of freedom created by this joint. These are constants added to the + // diagonal of the inertia matrix in generalized coordinates. They make the + // simulation more stable, and often increase physical realism. This is because + // when a motor is attached to the system with a transmission that amplifies + // the motor force by c, the inertia of the rotor (i.e. the moving part of the + // motor) is amplified by c*c. The same holds for gears in the early stages of + // planetary gear boxes. These extra inertias often dominate the inertias of + // the robot parts that are represented explicitly in the model, and the + // armature attribute is the way to model them. + + // TODO damping : real, "0" Damping applied to all degrees of + // freedom created by this joint. Unlike friction loss + // which is computed by the constraint solver, damping is + // simply a force linear in velocity. It is included in + // the passive forces. Despite this simplicity, larger + // damping values can make numerical integrators unstable, + // which is why our Euler integrator handles damping + // implicitly. See Integration in the Computation chapter. + + const UrdfLink* linkPtr = getLink(modelIndex,linkIndex); + + btTransform parentLinkToJointTransform; + parentLinkToJointTransform.setIdentity(); + parentLinkToJointTransform = parentToLinkTrans*jointTrans; + jointTransOut = jointTrans; + if (jointHandled) { UrdfJoint* jointPtr = new UrdfJoint(); @@ -660,14 +654,14 @@ struct BulletMJCFImporterInternalData } geom.m_capsuleRadius = 0; - geom.m_capsuleHalfHeight = 0.f; + geom.m_capsuleHeight = 0.f; if (sizes.size()>0) { geom.m_capsuleRadius = sizes[0]; if (sizes.size()>1) { - geom.m_capsuleHalfHeight = sizes[1]; + geom.m_capsuleHeight = 2*sizes[1]; } } else { @@ -1687,7 +1681,7 @@ class btCompoundShape* BulletMJCFImporter::convertLinkCollisionShapes(int linkIn } else { btCapsuleShapeZ* cap = new btCapsuleShapeZ(col->m_geometry.m_capsuleRadius, - 2.*col->m_geometry.m_capsuleHalfHeight); + col->m_geometry.m_capsuleHeight); childShape = cap; } break; diff --git a/examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp b/examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp index 8c242fe3e..8407c6191 100644 --- a/examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp +++ b/examples/Importers/ImportURDFDemo/BulletUrdfImporter.cpp @@ -564,9 +564,9 @@ btCollisionShape* convertURDFToCollisionShape(const UrdfCollision* collision, co case URDF_GEOM_CAPSULE: { btScalar radius = collision->m_geometry.m_capsuleRadius; - btScalar height = btScalar(2.f)*collision->m_geometry.m_capsuleHalfHeight; + btScalar height = collision->m_geometry.m_capsuleHeight; btCapsuleShapeZ* capsuleShape = new btCapsuleShapeZ(radius,height); - shape = capsuleShape; + shape = capsuleShape; shape ->setMargin(gUrdfDefaultCollisionMargin); break; } @@ -574,7 +574,7 @@ btCollisionShape* convertURDFToCollisionShape(const UrdfCollision* collision, co case URDF_GEOM_CYLINDER: { btScalar cylRadius = collision->m_geometry.m_capsuleRadius; - btScalar cylLength = collision->m_geometry.m_capsuleHalfHeight; + btScalar cylLength = collision->m_geometry.m_capsuleHeight; btAlignedObjectArray vertices; //int numVerts = sizeof(barrel_vertices)/(9*sizeof(float)); @@ -797,7 +797,7 @@ static void convertURDFToVisualShapeInternal(const UrdfVisual* visual, const cha { btScalar cylRadius = visual->m_geometry.m_capsuleRadius; - btScalar cylLength = visual->m_geometry.m_capsuleHalfHeight; + btScalar cylLength = visual->m_geometry.m_capsuleHeight; btVector3 vert(cylRadius*btSin(SIMD_2_PI*(float(i) / numSteps)), cylRadius*btCos(SIMD_2_PI*(float(i) / numSteps)), cylLength / 2.); vertices.push_back(vert); diff --git a/examples/Importers/ImportURDFDemo/UrdfParser.cpp b/examples/Importers/ImportURDFDemo/UrdfParser.cpp index 53857c6c2..2ec443db2 100644 --- a/examples/Importers/ImportURDFDemo/UrdfParser.cpp +++ b/examples/Importers/ImportURDFDemo/UrdfParser.cpp @@ -403,7 +403,7 @@ bool UrdfParser::parseGeometry(UrdfGeometry& geom, TiXmlElement* g, ErrorLogger* } geom.m_hasFromTo = false; geom.m_capsuleRadius = urdfLexicalCast(shape->Attribute("radius")); - geom.m_capsuleHalfHeight = urdfLexicalCast(shape->Attribute("length")); + geom.m_capsuleHeight = urdfLexicalCast(shape->Attribute("length")); } else if (type_name == "capsule") @@ -417,7 +417,7 @@ bool UrdfParser::parseGeometry(UrdfGeometry& geom, TiXmlElement* g, ErrorLogger* } geom.m_hasFromTo = false; geom.m_capsuleRadius = urdfLexicalCast(shape->Attribute("radius")); - geom.m_capsuleHalfHeight = btScalar(0.5)*urdfLexicalCast(shape->Attribute("length")); + geom.m_capsuleHeight = urdfLexicalCast(shape->Attribute("length")); } else if (type_name == "mesh") { diff --git a/examples/Importers/ImportURDFDemo/UrdfParser.h b/examples/Importers/ImportURDFDemo/UrdfParser.h index 015342a0a..680fbc1ca 100644 --- a/examples/Importers/ImportURDFDemo/UrdfParser.h +++ b/examples/Importers/ImportURDFDemo/UrdfParser.h @@ -65,7 +65,7 @@ struct UrdfGeometry btVector3 m_boxSize; double m_capsuleRadius; - double m_capsuleHalfHeight; + double m_capsuleHeight; int m_hasFromTo; btVector3 m_capsuleFrom; btVector3 m_capsuleTo; diff --git a/examples/SharedMemory/TinyRendererVisualShapeConverter.cpp b/examples/SharedMemory/TinyRendererVisualShapeConverter.cpp index 0ecacd81e..f0eaa8798 100644 --- a/examples/SharedMemory/TinyRendererVisualShapeConverter.cpp +++ b/examples/SharedMemory/TinyRendererVisualShapeConverter.cpp @@ -220,7 +220,7 @@ void convertURDFToVisualShape(const UrdfShape* visual, const char* urdfPathPrefi rad = visual->m_geometry.m_capsuleRadius; } else { tr = visual->m_linkLocalFrame; - len = visual->m_geometry.m_capsuleHalfHeight; + len = visual->m_geometry.m_capsuleHeight; rad = visual->m_geometry.m_capsuleRadius; } visualShapeOut.m_localVisualFrame[0] = tr.getOrigin()[0]; From b9642e8e68948fdb3819d702de29c7e7daa022f2 Mon Sep 17 00:00:00 2001 From: Erwin Coumans Date: Mon, 27 Mar 2017 21:42:37 -0700 Subject: [PATCH 17/20] enable base OpenGL2 rendering as fallback for more demos including physics server (use --opengl2 flag in Example Browser), no shadows yet. --- .../ExampleBrowser/OpenGLExampleBrowser.cpp | 8 +- examples/ExampleBrowser/OpenGLGuiHelper.cpp | 21 +- examples/OpenGLWindow/SimpleOpenGL2App.cpp | 116 ++++- examples/OpenGLWindow/SimpleOpenGL2App.h | 11 +- .../OpenGLWindow/SimpleOpenGL2Renderer.cpp | 471 +++++++++++++++++- examples/OpenGLWindow/SimpleOpenGL2Renderer.h | 41 +- 6 files changed, 591 insertions(+), 77 deletions(-) diff --git a/examples/ExampleBrowser/OpenGLExampleBrowser.cpp b/examples/ExampleBrowser/OpenGLExampleBrowser.cpp index 42250d589..8883c0ba5 100644 --- a/examples/ExampleBrowser/OpenGLExampleBrowser.cpp +++ b/examples/ExampleBrowser/OpenGLExampleBrowser.cpp @@ -495,10 +495,10 @@ static void saveCurrentSettings(int currentEntry,const char* startFileName) { fprintf(f,"--enable_experimental_opencl\n"); } - if (sUseOpenGL2 ) - { - fprintf(f,"--opengl2\n"); - } +// if (sUseOpenGL2 ) +// { +// fprintf(f,"--opengl2\n"); +// } fclose(f); } diff --git a/examples/ExampleBrowser/OpenGLGuiHelper.cpp b/examples/ExampleBrowser/OpenGLGuiHelper.cpp index b65eaea44..ccaa11113 100644 --- a/examples/ExampleBrowser/OpenGLGuiHelper.cpp +++ b/examples/ExampleBrowser/OpenGLGuiHelper.cpp @@ -10,8 +10,6 @@ #include "../OpenGLWindow/SimpleCamera.h" #include "../OpenGLWindow/GLInstanceGraphicsShape.h" -//backwards compatibility -#include "GL_ShapeDrawer.h" #define BT_LINE_BATCH_SIZE 512 @@ -147,7 +145,6 @@ struct OpenGLGuiHelperInternalData { struct CommonGraphicsApp* m_glApp; class MyDebugDrawer* m_debugDraw; - GL_ShapeDrawer* m_gl2ShapeDrawer; bool m_vrMode; int m_vrSkipShadowPass; @@ -178,19 +175,13 @@ OpenGLGuiHelper::OpenGLGuiHelper(CommonGraphicsApp* glApp, bool useOpenGL2) m_data->m_glApp = glApp; m_data->m_debugDraw = 0; - m_data->m_gl2ShapeDrawer = 0; - - if (useOpenGL2) - { - m_data->m_gl2ShapeDrawer = new GL_ShapeDrawer(); - - } + } OpenGLGuiHelper::~OpenGLGuiHelper() { delete m_data->m_debugDraw; - delete m_data->m_gl2ShapeDrawer; + delete m_data; } @@ -337,13 +328,7 @@ void OpenGLGuiHelper::render(const btDiscreteDynamicsWorld* rbWorld) m_data->m_glApp->m_renderer->renderScene(); } - //backwards compatible OpenGL2 rendering - - if (m_data->m_gl2ShapeDrawer && rbWorld) - { - m_data->m_gl2ShapeDrawer->enableTexture(true); - m_data->m_gl2ShapeDrawer->drawScene(rbWorld,true, m_data->m_glApp->getUpAxis()); - } + } void OpenGLGuiHelper::createPhysicsDebugDrawer(btDiscreteDynamicsWorld* rbWorld) { diff --git a/examples/OpenGLWindow/SimpleOpenGL2App.cpp b/examples/OpenGLWindow/SimpleOpenGL2App.cpp index b2caaf3d7..3a87a0d0e 100644 --- a/examples/OpenGLWindow/SimpleOpenGL2App.cpp +++ b/examples/OpenGLWindow/SimpleOpenGL2App.cpp @@ -1,13 +1,15 @@ #include "SimpleOpenGL2App.h" #define USE_OPENGL2 #include "OpenGLInclude.h" - +#include "ShapeData.h" #include "Bullet3Common/b3Logging.h"//b3Assert? #include "Bullet3Common/b3Scalar.h" #include "Bullet3Common/b3AlignedObjectArray.h" #include "Bullet3Common/b3Vector3.h" +#include "Bullet3Common/b3Quaternion.h" #include "../CommonInterfaces/CommonRenderInterface.h" #include "../OpenGLWindow/GLPrimitiveRenderer.h" +#include "GLInstanceGraphicsShape.h" #include "stdlib.h" #include "TwFonts.h" #ifdef __APPLE__ @@ -161,13 +163,13 @@ SimpleOpenGL2App::SimpleOpenGL2App(const char* title, int width, int height) b3Assert(glGetError() ==GL_NO_ERROR); - //m_instancingRenderer = new GLInstancingRenderer(128*1024,32*1024*1024); - //m_instancingRenderer->init(); - //m_instancingRenderer->resize(width,height); + //m_renderer = new GLInstancingRenderer(128*1024,32*1024*1024); + //m_renderer->init(); + //m_renderer->resize(width,height); b3Assert(glGetError() ==GL_NO_ERROR); - //m_instancingRenderer->InitShaders(); + //m_renderer->InitShaders(); m_window->setMouseMoveCallback(Simple2MouseMoveCallback); m_window->setMouseButtonCallback(Simple2MouseButtonCallback); @@ -275,7 +277,7 @@ void SimpleOpenGL2App::drawGrid(DrawGridData data) //we don't use drawPoints because all points would have the same color // b3Vector3 points[3] = { b3MakeVector3(1, 0, 0), b3MakeVector3(0, 1, 0), b3MakeVector3(0, 0, 1) }; -// m_instancingRenderer->drawPoints(&points[0].x, b3MakeVector3(1, 0, 0), 3, sizeof(b3Vector3), 6); +// m_renderer->drawPoints(&points[0].x, b3MakeVector3(1, 0, 0), 3, sizeof(b3Vector3), 6); } void SimpleOpenGL2App::setUpAxis(int axis) { @@ -466,8 +468,106 @@ void SimpleOpenGL2App::drawText3D( const char* txt, float worldPosX, float world restoreOpenGLState(); } -void SimpleOpenGL2App::registerGrid(int xres, int yres, float color0[4], float color1[4]) + +void SimpleOpenGL2App::registerGrid(int cells_x, int cells_z, float color0[4], float color1[4]) { - + b3Vector3 cubeExtents=b3MakeVector3(0.5,0.5,0.5); + cubeExtents[m_data->m_upAxis] = 0; + int cubeId = registerCubeShape(cubeExtents[0],cubeExtents[1],cubeExtents[2]); + + b3Quaternion orn(0,0,0,1); + b3Vector3 center=b3MakeVector3(0,0,0,1); + b3Vector3 scaling=b3MakeVector3(1,1,1,1); + + for ( int i = 0; i < cells_x; i++) + { + for (int j = 0; j < cells_z; j++) + { + float* color =0; + if ((i + j) % 2 == 0) + { + color = (float*)color0; + } else { + color = (float*)color1; + } + if (this->m_data->m_upAxis==1) + { + center =b3MakeVector3((i + 0.5f) - cells_x * 0.5f, 0.f, (j + 0.5f) - cells_z * 0.5f); + } else + { + center =b3MakeVector3((i + 0.5f) - cells_x * 0.5f, (j + 0.5f) - cells_z * 0.5f,0.f ); + } + m_renderer->registerGraphicsInstance(cubeId,center,orn,color,scaling); + } + } + } +int SimpleOpenGL2App::registerGraphicsUnitSphereShape(EnumSphereLevelOfDetail lod, int textureId) +{ + + int strideInBytes = 9*sizeof(float); + + int graphicsShapeIndex = -1; + + switch (lod) + { + case SPHERE_LOD_POINT_SPRITE: + { + int numVertices = sizeof(point_sphere_vertices)/strideInBytes; + int numIndices = sizeof(point_sphere_indices)/sizeof(int); + graphicsShapeIndex = m_renderer->registerShape(&point_sphere_vertices[0],numVertices,point_sphere_indices,numIndices,B3_GL_POINTS,textureId); + break; + } + + case SPHERE_LOD_LOW: + { + int numVertices = sizeof(low_sphere_vertices)/strideInBytes; + int numIndices = sizeof(low_sphere_indices)/sizeof(int); + graphicsShapeIndex = m_renderer->registerShape(&low_sphere_vertices[0],numVertices,low_sphere_indices,numIndices,B3_GL_TRIANGLES,textureId); + break; + } + case SPHERE_LOD_MEDIUM: + { + int numVertices = sizeof(medium_sphere_vertices)/strideInBytes; + int numIndices = sizeof(medium_sphere_indices)/sizeof(int); + graphicsShapeIndex = m_renderer->registerShape(&medium_sphere_vertices[0],numVertices,medium_sphere_indices,numIndices,B3_GL_TRIANGLES,textureId); + break; + } + case SPHERE_LOD_HIGH: + default: + { + int numVertices = sizeof(detailed_sphere_vertices)/strideInBytes; + int numIndices = sizeof(detailed_sphere_indices)/sizeof(int); + graphicsShapeIndex = m_renderer->registerShape(&detailed_sphere_vertices[0],numVertices,detailed_sphere_indices,numIndices,B3_GL_TRIANGLES,textureId); + break; + } + }; + return graphicsShapeIndex; +} + + +int SimpleOpenGL2App::registerCubeShape(float halfExtentsX,float halfExtentsY, float halfExtentsZ, int textureIndex, float textureScaling ) +{ + int strideInBytes = 9*sizeof(float); + int numVertices = sizeof(cube_vertices_textured)/strideInBytes; + int numIndices = sizeof(cube_indices)/sizeof(int); + + b3AlignedObjectArray verts; + verts.resize(numVertices); + for (int i=0;iregisterShape(&verts[0].xyzw[0],numVertices,cube_indices,numIndices,B3_GL_TRIANGLES,textureIndex); + return shapeId; +} \ No newline at end of file diff --git a/examples/OpenGLWindow/SimpleOpenGL2App.h b/examples/OpenGLWindow/SimpleOpenGL2App.h index 3b8a54a5b..0a08c8770 100644 --- a/examples/OpenGLWindow/SimpleOpenGL2App.h +++ b/examples/OpenGLWindow/SimpleOpenGL2App.h @@ -20,14 +20,9 @@ public: virtual void drawText( const char* txt, int posX, int posY, float size); virtual void drawTexturedRect(float x0, float y0, float x1, float y1, float color[4], float u0,float v0, float u1, float v1, int useRGBA){}; virtual void setBackgroundColor(float red, float green, float blue); - virtual int registerCubeShape(float halfExtentsX,float halfExtentsY, float halfExtentsZ, int textureIndex = -1, float textureScaling = 1) - { - return 0; - } - virtual int registerGraphicsUnitSphereShape(EnumSphereLevelOfDetail lod, int textureId=-1) - { - return 0; - } + virtual int registerCubeShape(float halfExtentsX,float halfExtentsY, float halfExtentsZ, int textureIndex = -1, float textureScaling = 1); + + virtual int registerGraphicsUnitSphereShape(EnumSphereLevelOfDetail lod, int textureId=-1); virtual void drawText3D( const char* txt, float posX, float posZY, float posZ, float size); virtual void registerGrid(int xres, int yres, float color0[4], float color1[4]); diff --git a/examples/OpenGLWindow/SimpleOpenGL2Renderer.cpp b/examples/OpenGLWindow/SimpleOpenGL2Renderer.cpp index d69b63d54..c3ddb02f7 100644 --- a/examples/OpenGLWindow/SimpleOpenGL2Renderer.cpp +++ b/examples/OpenGLWindow/SimpleOpenGL2Renderer.cpp @@ -2,13 +2,63 @@ #include "SimpleOpenGL2Renderer.h" #include "OpenGL2Include.h" #include "Bullet3Common/b3Vector3.h" +#include "Bullet3Common/b3AlignedObjectArray.h" +#include "GLInstanceGraphicsShape.h" +#include "Bullet3Common/b3Quaternion.h" +#include "Bullet3Common/b3Transform.h" +B3_ATTRIBUTE_ALIGNED16(struct) SimpleGL2Shape +{ + B3_DECLARE_ALIGNED_ALLOCATOR(); + + int m_textureIndex; + int m_primitiveType; + b3AlignedObjectArray m_indices; + b3AlignedObjectArray m_vertices; + b3Vector3 m_scaling; +}; + +B3_ATTRIBUTE_ALIGNED16(struct) SimpleGL2Instance +{ + B3_DECLARE_ALIGNED_ALLOCATOR(); + + int m_shapeIndex; + b3Vector3 m_position; + b3Quaternion orn; + b3Vector3 m_rgbColor; + b3Vector3 m_scaling; +}; + + + +struct InternalTextureHandle2 +{ + GLuint m_glTexture; + int m_width; + int m_height; +}; + +struct SimpleOpenGL2RendererInternalData +{ + int m_width; + int m_height; + SimpleCamera m_camera; + b3AlignedObjectArray m_shapes; + b3AlignedObjectArray m_graphicsInstances; + b3AlignedObjectArray m_textureHandles; + +}; SimpleOpenGL2Renderer::SimpleOpenGL2Renderer(int width, int height) - :m_width(width), - m_height(height) { - + m_data = new SimpleOpenGL2RendererInternalData; + m_data->m_width = width; + m_data->m_height = height; +} + +SimpleOpenGL2Renderer::~SimpleOpenGL2Renderer() +{ + delete m_data; } void SimpleOpenGL2Renderer::init() @@ -17,11 +67,11 @@ void SimpleOpenGL2Renderer::init() const CommonCameraInterface* SimpleOpenGL2Renderer::getActiveCamera() const { - return &m_camera; + return &m_data->m_camera; } CommonCameraInterface* SimpleOpenGL2Renderer::getActiveCamera() { - return &m_camera; + return &m_data->m_camera; } void SimpleOpenGL2Renderer::setActiveCamera(CommonCameraInterface* cam) { @@ -32,11 +82,11 @@ void SimpleOpenGL2Renderer::updateCamera(int upAxis) { float projection[16]; float view[16]; - m_camera.setAspectRatio((float)m_width/(float)m_height); - m_camera.setCameraUpAxis(upAxis); - m_camera.update(); - m_camera.getCameraProjectionMatrix(projection); - m_camera.getCameraViewMatrix(view); + getActiveCamera()->setAspectRatio((float)m_data->m_width/(float)m_data->m_height); + getActiveCamera()->setCameraUpAxis(upAxis); + m_data->m_camera.update(); //?? + getActiveCamera()->getCameraProjectionMatrix(projection); + getActiveCamera()->getCameraViewMatrix(view); GLfloat projMat[16]; GLfloat viewMat[16]; for (int i=0;i<16;i++) @@ -55,6 +105,14 @@ void SimpleOpenGL2Renderer::updateCamera(int upAxis) void SimpleOpenGL2Renderer::removeAllInstances() { + for (int i=0;im_shapes.size();i++) + { + delete m_data->m_shapes[i]; + } + m_data->m_shapes.clear(); + m_data->m_graphicsInstances.clear(); + //also destroy textures? + m_data->m_textureHandles.clear(); } @@ -90,21 +148,323 @@ void SimpleOpenGL2Renderer::getCameraProjectionMatrix(float projMat[16]) const } +void SimpleOpenGL2Renderer::drawOpenGL(int instanceIndex) +{ + const SimpleGL2Instance& inst = m_data->m_graphicsInstances[instanceIndex]; + const SimpleGL2Shape* shape = m_data->m_shapes[inst.m_shapeIndex]; + + + glPushMatrix(); + b3Transform tr; + tr.setOrigin(b3MakeVector3(inst.m_position[0],inst.m_position[1],inst.m_position[2])); + tr.setRotation(b3Quaternion(inst.orn[0],inst.orn[1],inst.orn[2],inst.orn[3])); + + b3Scalar m[16]; + + tr.getOpenGLMatrix(m); + +#ifdef B3_USE_DOUBLE_PRECISION + glMultMatrixd(m); +#else + glMultMatrixf(m); +#endif + + + #if 0 + glMatrixMode(GL_TEXTURE); + glLoadIdentity(); + glScalef(0.025f,0.025f,0.025f); + glMatrixMode(GL_MODELVIEW); + + static const GLfloat planex[]={1,0,0,0}; + // static const GLfloat planey[]={0,1,0,0}; + static const GLfloat planez[]={0,0,1,0}; + glTexGenfv(GL_S,GL_OBJECT_PLANE,planex); + glTexGenfv(GL_T,GL_OBJECT_PLANE,planez); + glTexGeni(GL_S,GL_TEXTURE_GEN_MODE,GL_OBJECT_LINEAR); + glTexGeni(GL_T,GL_TEXTURE_GEN_MODE,GL_OBJECT_LINEAR); + glEnable(GL_TEXTURE_GEN_S); + glEnable(GL_TEXTURE_GEN_T); + glEnable(GL_TEXTURE_GEN_R); + m_textureinitialized=true; + + + + #endif + + //drawCoordSystem(); + + //glPushMatrix(); +// glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); +// glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); +// glMatrixMode(GL_TEXTURE); +// glLoadIdentity(); + glMatrixMode(GL_MODELVIEW); + + glEnable(GL_COLOR_MATERIAL); + + if(shape->m_textureIndex>=0) + { + glEnable(GL_TEXTURE_2D); + activateTexture(shape->m_textureIndex); + } else + { + glDisable(GL_TEXTURE_2D); + } + + + glColor3f(inst.m_rgbColor[0],inst.m_rgbColor[1], inst.m_rgbColor[2]); + glScalef(inst.m_scaling[0],inst.m_scaling[1],inst.m_scaling[2]); + glShadeModel(GL_SMOOTH); + + glBegin (GL_TRIANGLES); + for (int i=0;im_indices.size();i+=3) + { + for (int v=0;v<3;v++) + { + const GLInstanceVertex& vtx0 = shape->m_vertices[shape->m_indices[i+v]]; + glNormal3f(vtx0.normal[0],vtx0.normal[1],vtx0.normal[2]); + glTexCoord2f(vtx0.uv[0],vtx0.uv[1]); + glVertex3f (vtx0.xyzw[0],vtx0.xyzw[1],vtx0.xyzw[2]); + } + } + glEnd(); + + glPopMatrix(); + +} + +void SimpleOpenGL2Renderer::drawSceneInternal(int pass, int cameraUpAxis) +{ + for (int i=0;im_graphicsInstances.size();i++) + { + drawOpenGL(i); + } + + #if 0 + b3Scalar m[16]; + b3Matrix3x3 rot;rot.setIdentity(); + const int numObjects=dynamicsWorld->getNumCollisionObjects(); + btVector3 wireColor(1,0,0); + //glDisable(GL_CULL_FACE); + + for(int i=0;igetCollisionObjectArray()[i]; + const btRigidBody* body=btRigidBody::upcast(colObj); + if(body&&body->getMotionState()) + { + btDefaultMotionState* myMotionState = (btDefaultMotionState*)body->getMotionState(); + myMotionState->m_graphicsWorldTrans.getOpenGLMatrix(m); + rot=myMotionState->m_graphicsWorldTrans.getBasis(); + } + else + { + colObj->getWorldTransform().getOpenGLMatrix(m); + rot=colObj->getWorldTransform().getBasis(); + } + btVector3 wireColor(1.f,1.0f,0.5f); //wants deactivation + if(i&1) wireColor=btVector3(0.f,0.0f,1.f); + ///color differently for active, sleeping, wantsdeactivation states + if (colObj->getActivationState() == 1) //active + { + if (i & 1) + { + wireColor += btVector3 (1.f,0.f,0.f); + } + else + { + wireColor += btVector3 (.5f,0.f,0.f); + } + } + if(colObj->getActivationState()==2) //ISLAND_SLEEPING + { + if(i&1) + { + wireColor += btVector3 (0.f,1.f, 0.f); + } + else + { + wireColor += btVector3 (0.f,0.5f,0.f); + } + } + + btVector3 aabbMin(0,0,0),aabbMax(0,0,0); + //m_dynamicsWorld->getBroadphase()->getBroadphaseAabb(aabbMin,aabbMax); + + aabbMin-=btVector3(BT_LARGE_FLOAT,BT_LARGE_FLOAT,BT_LARGE_FLOAT); + aabbMax+=btVector3(BT_LARGE_FLOAT,BT_LARGE_FLOAT,BT_LARGE_FLOAT); + // printf("aabbMin=(%f,%f,%f)\n",aabbMin.getX(),aabbMin.getY(),aabbMin.getZ()); + // printf("aabbMax=(%f,%f,%f)\n",aabbMax.getX(),aabbMax.getY(),aabbMax.getZ()); + // m_dynamicsWorld->getDebugDrawer()->drawAabb(aabbMin,aabbMax,btVector3(1,1,1)); + + //switch(pass) + + //if (!(getDebugMode()& btIDebugDraw::DBG_DrawWireframe)) + int debugMode = 0;//getDebugMode() + //btVector3 m_sundirection(-1,-1,-1); + + btVector3 m_sundirection(btVector3(1,-2,1)*1000); + if (cameraUpAxis==2) + { + m_sundirection = btVector3(1,1,-2)*1000; + } + + switch(pass) + { + case 0: drawOpenGL(m,colObj->getCollisionShape(),wireColor,debugMode,aabbMin,aabbMax);break; + case 1: drawShadow(m,m_sundirection*rot,colObj->getCollisionShape(),aabbMin,aabbMax);break; + case 2: drawOpenGL(m,colObj->getCollisionShape(),wireColor*b3Scalar(0.3),0,aabbMin,aabbMax);break; + } + } + #endif + +} + void SimpleOpenGL2Renderer::renderScene() { + GLfloat light_ambient[] = { b3Scalar(0.4), b3Scalar(0.4), b3Scalar(0.4), b3Scalar(1.0) }; + GLfloat light_diffuse[] = { b3Scalar(1.0), b3Scalar(1.0), b3Scalar(1.0), b3Scalar(1.0) }; + GLfloat light_specular[] = { b3Scalar(1.0), b3Scalar(1.0), b3Scalar(1.0), b3Scalar(1.0 )}; + /* light_position is NOT default value */ + GLfloat light_position0[] = { b3Scalar(1.0), b3Scalar(10.0), b3Scalar(1.0), b3Scalar(0.0 )}; + GLfloat light_position1[] = { b3Scalar(-1.0), b3Scalar(-10.0), b3Scalar(-1.0), b3Scalar(0.0) }; + + glLightfv(GL_LIGHT0, GL_AMBIENT, light_ambient); + glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse); + glLightfv(GL_LIGHT0, GL_SPECULAR, light_specular); + glLightfv(GL_LIGHT0, GL_POSITION, light_position0); + + glLightfv(GL_LIGHT1, GL_AMBIENT, light_ambient); + glLightfv(GL_LIGHT1, GL_DIFFUSE, light_diffuse); + glLightfv(GL_LIGHT1, GL_SPECULAR, light_specular); + glLightfv(GL_LIGHT1, GL_POSITION, light_position1); + + glEnable(GL_LIGHTING); + glEnable(GL_LIGHT0); + glEnable(GL_LIGHT1); + + + glShadeModel(GL_SMOOTH); + glEnable(GL_DEPTH_TEST); + glDepthFunc(GL_LESS); + + drawSceneInternal(0,0); } +int SimpleOpenGL2Renderer::registerTexture(const unsigned char* texels, int width, int height) +{ + b3Assert(glGetError() ==GL_NO_ERROR); + glActiveTexture(GL_TEXTURE0); + int textureIndex = m_data->m_textureHandles.size(); + // const GLubyte* image= (const GLubyte*)texels; + GLuint textureHandle; + glGenTextures(1,(GLuint*)&textureHandle); + glBindTexture(GL_TEXTURE_2D,textureHandle); + + b3Assert(glGetError() ==GL_NO_ERROR); + + InternalTextureHandle2 h; + h.m_glTexture = textureHandle; + h.m_width = width; + h.m_height = height; + + m_data->m_textureHandles.push_back(h); + updateTexture(textureIndex, texels); + return textureIndex; +} + + +void SimpleOpenGL2Renderer::updateTexture(int textureIndex, const unsigned char* texels) +{ + if (textureIndex>=0) + { + + + + glActiveTexture(GL_TEXTURE0); + b3Assert(glGetError() ==GL_NO_ERROR); + InternalTextureHandle2& h = m_data->m_textureHandles[textureIndex]; + + //textures need to be flipped for OpenGL... + b3AlignedObjectArray flippedTexels; + flippedTexels.resize(h.m_width* h.m_height * 3); + for (int i = 0; i < h.m_width; i++) + { + for (int j = 0; j < h.m_height; j++) + { + flippedTexels[(i + j*h.m_width) * 3] = texels[(i + (h.m_height - 1 -j )*h.m_width) * 3]; + flippedTexels[(i + j*h.m_width) * 3+1] = texels[(i + (h.m_height - 1 - j)*h.m_width) * 3+1]; + flippedTexels[(i + j*h.m_width) * 3+2] = texels[(i + (h.m_height - 1 - j)*h.m_width) * 3+2]; + } + } + + + glBindTexture(GL_TEXTURE_2D,h.m_glTexture); + b3Assert(glGetError() ==GL_NO_ERROR); + // const GLubyte* image= (const GLubyte*)texels; + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, h.m_width,h.m_height,0,GL_RGB,GL_UNSIGNED_BYTE,&flippedTexels[0]); + b3Assert(glGetError() ==GL_NO_ERROR); + glGenerateMipmap(GL_TEXTURE_2D); + b3Assert(glGetError() ==GL_NO_ERROR); + } +} + +void SimpleOpenGL2Renderer::activateTexture(int textureIndex) +{ + glActiveTexture(GL_TEXTURE0); + + if (textureIndex>=0) + { + glBindTexture(GL_TEXTURE_2D,m_data->m_textureHandles[textureIndex].m_glTexture); + } else + { + glBindTexture(GL_TEXTURE_2D,0); + } +} int SimpleOpenGL2Renderer::registerGraphicsInstance(int shapeIndex, const double* position, const double* quaternion, const double* color, const double* scaling) { - return 0; + int sz = m_data->m_graphicsInstances.size(); + SimpleGL2Instance& instance = m_data->m_graphicsInstances.expand(); + instance.m_shapeIndex = shapeIndex; + instance.m_position[0] = position[0]; + instance.m_position[1] = position[1]; + instance.m_position[2] = position[2]; + instance.orn[0] = quaternion[0]; + instance.orn[1] = quaternion[1]; + instance.orn[2] = quaternion[2]; + instance.orn[3] = quaternion[3]; + instance.m_rgbColor[0] = color[0]; + instance.m_rgbColor[1] = color[1]; + instance.m_rgbColor[2] = color[2]; + instance.m_scaling[0] = scaling[0]; + instance.m_scaling[1] = scaling[1]; + instance.m_scaling[2] = scaling[2]; + return sz; } int SimpleOpenGL2Renderer::registerGraphicsInstance(int shapeIndex, const float* position, const float* quaternion, const float* color, const float* scaling) { - return 0; + int sz = m_data->m_graphicsInstances.size(); + SimpleGL2Instance& instance = m_data->m_graphicsInstances.expand(); + instance.m_shapeIndex = shapeIndex; + instance.m_position[0] = position[0]; + instance.m_position[1] = position[1]; + instance.m_position[2] = position[2]; + instance.orn[0] = quaternion[0]; + instance.orn[1] = quaternion[1]; + instance.orn[2] = quaternion[2]; + instance.orn[3] = quaternion[3]; + instance.m_rgbColor[0] = color[0]; + instance.m_rgbColor[1] = color[1]; + instance.m_rgbColor[2] = color[2]; + instance.m_scaling[0] = scaling[0]; + instance.m_scaling[1] = scaling[1]; + instance.m_scaling[2] = scaling[2]; + return sz; } void SimpleOpenGL2Renderer::drawLines(const float* positions, const float color[4], int numPoints, int pointStrideInBytes, const unsigned int* indices, int numIndices, float pointDrawSize) @@ -141,25 +501,91 @@ void SimpleOpenGL2Renderer::drawLine(const float from[4], const float to[4], con glVertex3d(to[0],to[1],to[2]); glEnd(); } + + int SimpleOpenGL2Renderer::registerShape(const float* vertices, int numvertices, const int* indices, int numIndices,int primitiveType, int textureIndex) { - return 0; + + SimpleGL2Shape* shape = new SimpleGL2Shape(); + shape->m_textureIndex = textureIndex; + shape->m_indices.resize(numIndices); + + for (int i=0;im_indices[i]=indices[i]; + } + + shape->m_vertices.resize(numvertices); + + for (int v=0;vm_vertices[v]; + vtx.xyzw[0] = vertices[9*v+0]; + vtx.xyzw[1] = vertices[9*v+1]; + vtx.xyzw[2] = vertices[9*v+2]; + vtx.xyzw[3] = vertices[9*v+3]; + vtx.normal[0] = vertices[9*v+4]; + vtx.normal[1] = vertices[9*v+5]; + vtx.normal[2] = vertices[9*v+6]; + vtx.uv[0] = vertices[9*v+7]; + vtx.uv[1] = vertices[9*v+8]; + } + int sz = m_data->m_shapes.size(); + m_data->m_shapes.push_back(shape); + return sz; } void SimpleOpenGL2Renderer::writeSingleInstanceTransformToCPU(const float* position, const float* orientation, int srcIndex) { + m_data->m_graphicsInstances[srcIndex].m_position[0] = position[0]; + m_data->m_graphicsInstances[srcIndex].m_position[1] = position[1]; + m_data->m_graphicsInstances[srcIndex].m_position[2] = position[2]; + + m_data->m_graphicsInstances[srcIndex].orn[0] = orientation[0]; + m_data->m_graphicsInstances[srcIndex].orn[1] = orientation[1]; + m_data->m_graphicsInstances[srcIndex].orn[2] = orientation[2]; + m_data->m_graphicsInstances[srcIndex].orn[3] = orientation[3]; + } void SimpleOpenGL2Renderer::writeSingleInstanceTransformToCPU(const double* position, const double* orientation, int srcIndex) { + m_data->m_graphicsInstances[srcIndex].m_position[0] = position[0]; + m_data->m_graphicsInstances[srcIndex].m_position[1] = position[1]; + m_data->m_graphicsInstances[srcIndex].m_position[2] = position[2]; + + m_data->m_graphicsInstances[srcIndex].orn[0] = orientation[0]; + m_data->m_graphicsInstances[srcIndex].orn[1] = orientation[1]; + m_data->m_graphicsInstances[srcIndex].orn[2] = orientation[2]; + m_data->m_graphicsInstances[srcIndex].orn[3] = orientation[3]; } void SimpleOpenGL2Renderer::writeTransforms() { } +void SimpleOpenGL2Renderer::resize(int width, int height) +{ + m_data->m_width = width; + m_data->m_height = height; +} + +int SimpleOpenGL2Renderer::getScreenWidth() +{ + return m_data->m_width; +} +int SimpleOpenGL2Renderer::getScreenHeight() +{ + return m_data->m_height; +} + void SimpleOpenGL2Renderer::drawLine(const double from[4], const double to[4], const double color[4], double lineWidth) { - + glLineWidth(lineWidth); + glBegin(GL_LINES); + glColor3f(color[0],color[1],color[2]); + glVertex3d(from[0],from[1],from[2]); + glVertex3d(to[0],to[1],to[2]); + glEnd(); } void SimpleOpenGL2Renderer::drawPoint(const float* position, const float color[4], float pointDrawSize) { @@ -170,6 +596,23 @@ void SimpleOpenGL2Renderer::drawPoint(const double* position, const double color void SimpleOpenGL2Renderer::updateShape(int shapeIndex, const float* vertices) { + SimpleGL2Shape* shape = m_data->m_shapes[shapeIndex]; + int numvertices = shape->m_vertices.size(); + + for (int i=0;im_vertices[i].xyzw[0] = vertices[9*i+0]; + shape->m_vertices[i].xyzw[1] = vertices[9*i+1]; + shape->m_vertices[i].xyzw[2] = vertices[9*i+2]; + shape->m_vertices[i].xyzw[3] = vertices[9*i+3]; + + shape->m_vertices[i].normal[0] = vertices[9*i+4]; + shape->m_vertices[i].normal[1] = vertices[9*i+5]; + shape->m_vertices[i].normal[2] = vertices[9*i+6]; + + shape->m_vertices[i].uv[0] = vertices[9*i+7]; + shape->m_vertices[i].uv[1] = vertices[9*i+8]; + } } void SimpleOpenGL2Renderer::enableBlend(bool blend) diff --git a/examples/OpenGLWindow/SimpleOpenGL2Renderer.h b/examples/OpenGLWindow/SimpleOpenGL2Renderer.h index 393cc7375..57c6d1a36 100644 --- a/examples/OpenGLWindow/SimpleOpenGL2Renderer.h +++ b/examples/OpenGLWindow/SimpleOpenGL2Renderer.h @@ -5,14 +5,18 @@ #include "../CommonInterfaces/CommonRenderInterface.h" #include "SimpleCamera.h" -struct SimpleOpenGL2Renderer : public CommonRenderInterface +class SimpleOpenGL2Renderer : public CommonRenderInterface { - int m_width; - int m_height; - SimpleCamera m_camera; - + struct SimpleOpenGL2RendererInternalData* m_data; + + void drawSceneInternal(int pass, int cameraUpAxis); + void drawOpenGL(int instanceIndex); + +public: + SimpleOpenGL2Renderer(int width, int height); - + virtual ~SimpleOpenGL2Renderer(); + virtual void init(); virtual void updateCamera(int upAxis); @@ -21,11 +25,7 @@ struct SimpleOpenGL2Renderer : public CommonRenderInterface virtual CommonCameraInterface* getActiveCamera(); virtual void setActiveCamera(CommonCameraInterface* cam); - virtual void resize(int width, int height) - { - m_width = width; - m_height = height; - } + virtual void resize(int width, int height); virtual void removeAllInstances(); @@ -40,20 +40,11 @@ struct SimpleOpenGL2Renderer : public CommonRenderInterface virtual void renderScene(); - virtual int getScreenWidth() - { - return m_width; - } - virtual int getScreenHeight() - { - return m_height; - } - virtual int registerTexture(const unsigned char* texels, int width, int height) - { - return -1; - } - virtual void updateTexture(int textureIndex, const unsigned char* texels) {} - virtual void activateTexture(int textureIndex) {} + virtual int getScreenWidth(); + virtual int getScreenHeight(); + virtual int registerTexture(const unsigned char* texels, int width, int height); + virtual void updateTexture(int textureIndex, const unsigned char* texels); + virtual void activateTexture(int textureIndex); virtual int registerGraphicsInstance(int shapeIndex, const double* position, const double* quaternion, const double* color, const double* scaling); From 46c5b009640d1526d839a72ca64daad394a93b7c Mon Sep 17 00:00:00 2001 From: Erwin Coumans Date: Mon, 27 Mar 2017 23:09:24 -0700 Subject: [PATCH 18/20] report actual number of instances (enable sync transforms for physics server) --- examples/OpenGLWindow/SimpleOpenGL2Renderer.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/OpenGLWindow/SimpleOpenGL2Renderer.cpp b/examples/OpenGLWindow/SimpleOpenGL2Renderer.cpp index c3ddb02f7..81aee4e8f 100644 --- a/examples/OpenGLWindow/SimpleOpenGL2Renderer.cpp +++ b/examples/OpenGLWindow/SimpleOpenGL2Renderer.cpp @@ -134,7 +134,7 @@ void SimpleOpenGL2Renderer::writeSingleInstanceScaleToCPU(double* scale, int src int SimpleOpenGL2Renderer::getTotalNumInstances() const { - return 0; + return m_data->m_graphicsInstances.size(); } void SimpleOpenGL2Renderer::getCameraViewMatrix(float viewMat[16]) const From fffa17dd35510cdf99bc75aa90e78f76f2cf6c7d Mon Sep 17 00:00:00 2001 From: Erwin Coumans Date: Tue, 28 Mar 2017 08:20:10 -0700 Subject: [PATCH 19/20] little tuning for rendering --- examples/ExampleBrowser/OpenGLExampleBrowser.cpp | 4 ++-- examples/OpenGLWindow/SimpleOpenGL2Renderer.cpp | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/examples/ExampleBrowser/OpenGLExampleBrowser.cpp b/examples/ExampleBrowser/OpenGLExampleBrowser.cpp index 8883c0ba5..aeb3f2aaa 100644 --- a/examples/ExampleBrowser/OpenGLExampleBrowser.cpp +++ b/examples/ExampleBrowser/OpenGLExampleBrowser.cpp @@ -1237,8 +1237,8 @@ void OpenGLExampleBrowser::update(float deltaTime) if (renderGrid) { BT_PROFILE("Draw Grid"); - glPolygonOffset(3.0, 3); - glEnable(GL_POLYGON_OFFSET_FILL); + //glPolygonOffset(3.0, 3); + //glEnable(GL_POLYGON_OFFSET_FILL); s_app->drawGrid(dg); } diff --git a/examples/OpenGLWindow/SimpleOpenGL2Renderer.cpp b/examples/OpenGLWindow/SimpleOpenGL2Renderer.cpp index 81aee4e8f..d93b09ed2 100644 --- a/examples/OpenGLWindow/SimpleOpenGL2Renderer.cpp +++ b/examples/OpenGLWindow/SimpleOpenGL2Renderer.cpp @@ -323,7 +323,7 @@ void SimpleOpenGL2Renderer::drawSceneInternal(int pass, int cameraUpAxis) void SimpleOpenGL2Renderer::renderScene() { - GLfloat light_ambient[] = { b3Scalar(0.4), b3Scalar(0.4), b3Scalar(0.4), b3Scalar(1.0) }; + GLfloat light_ambient[] = { b3Scalar(0.2), b3Scalar(0.2), b3Scalar(0.2), b3Scalar(1.0) }; GLfloat light_diffuse[] = { b3Scalar(1.0), b3Scalar(1.0), b3Scalar(1.0), b3Scalar(1.0) }; GLfloat light_specular[] = { b3Scalar(1.0), b3Scalar(1.0), b3Scalar(1.0), b3Scalar(1.0 )}; /* light_position is NOT default value */ From eb8c31ae8212e37d981d46171a2bbce8d98d2e31 Mon Sep 17 00:00:00 2001 From: Erwin Coumans Date: Wed, 29 Mar 2017 09:40:56 -0700 Subject: [PATCH 20/20] move pybullet examples to Bullet/examples/pybullet/examples --- examples/pybullet/{ => examples}/constraint.py | 0 examples/pybullet/{ => examples}/forcetorquesensor.py | 0 examples/pybullet/{ => examples}/hand.ino | 0 examples/pybullet/{ => examples}/hand.py | 0 examples/pybullet/{ => examples}/hello_pybullet.py | 0 examples/pybullet/{ => examples}/inverse_kinematics.py | 0 examples/pybullet/{ => examples}/kuka_with_cube.py | 0 examples/pybullet/{ => examples}/kuka_with_cube_playback.py | 0 examples/pybullet/{ => examples}/logMinitaur.py | 0 examples/pybullet/{ => examples}/manyspheres.py | 0 examples/pybullet/{ => examples}/minitaur.py | 0 examples/pybullet/{ => examples}/minitaur_evaluate.py | 0 examples/pybullet/{ => examples}/minitaur_test.py | 0 examples/pybullet/{ => examples}/mylittleminitaur.py | 0 examples/pybullet/{ => examples}/quadruped.py | 0 examples/pybullet/{ => examples}/quadruped_playback.py | 0 examples/pybullet/{ => examples}/quadruped_setup_playback.py | 0 examples/pybullet/{ => examples}/robotcontrol.py | 0 examples/pybullet/{ => examples}/rollPitchYaw.py | 0 examples/pybullet/{ => examples}/saveWorld.py | 0 examples/pybullet/{ => examples}/test.py | 0 examples/pybullet/{ => examples}/testrender.py | 0 examples/pybullet/{ => examples}/testrender_np.py | 0 examples/pybullet/{ => examples}/vrEvent.py | 0 examples/pybullet/{ => examples}/vr_kuka_control.py | 0 examples/pybullet/{ => examples}/vr_kuka_pr2_move.py | 0 examples/pybullet/{ => examples}/vr_kuka_setup.py | 0 examples/pybullet/{ => examples}/vrhand.py | 0 examples/pybullet/{ => examples}/vrminitaur.py | 0 29 files changed, 0 insertions(+), 0 deletions(-) rename examples/pybullet/{ => examples}/constraint.py (100%) rename examples/pybullet/{ => examples}/forcetorquesensor.py (100%) rename examples/pybullet/{ => examples}/hand.ino (100%) rename examples/pybullet/{ => examples}/hand.py (100%) rename examples/pybullet/{ => examples}/hello_pybullet.py (100%) rename examples/pybullet/{ => examples}/inverse_kinematics.py (100%) rename examples/pybullet/{ => examples}/kuka_with_cube.py (100%) rename examples/pybullet/{ => examples}/kuka_with_cube_playback.py (100%) rename examples/pybullet/{ => examples}/logMinitaur.py (100%) rename examples/pybullet/{ => examples}/manyspheres.py (100%) rename examples/pybullet/{ => examples}/minitaur.py (100%) rename examples/pybullet/{ => examples}/minitaur_evaluate.py (100%) rename examples/pybullet/{ => examples}/minitaur_test.py (100%) rename examples/pybullet/{ => examples}/mylittleminitaur.py (100%) rename examples/pybullet/{ => examples}/quadruped.py (100%) rename examples/pybullet/{ => examples}/quadruped_playback.py (100%) rename examples/pybullet/{ => examples}/quadruped_setup_playback.py (100%) rename examples/pybullet/{ => examples}/robotcontrol.py (100%) rename examples/pybullet/{ => examples}/rollPitchYaw.py (100%) rename examples/pybullet/{ => examples}/saveWorld.py (100%) rename examples/pybullet/{ => examples}/test.py (100%) rename examples/pybullet/{ => examples}/testrender.py (100%) rename examples/pybullet/{ => examples}/testrender_np.py (100%) rename examples/pybullet/{ => examples}/vrEvent.py (100%) rename examples/pybullet/{ => examples}/vr_kuka_control.py (100%) rename examples/pybullet/{ => examples}/vr_kuka_pr2_move.py (100%) rename examples/pybullet/{ => examples}/vr_kuka_setup.py (100%) rename examples/pybullet/{ => examples}/vrhand.py (100%) rename examples/pybullet/{ => examples}/vrminitaur.py (100%) diff --git a/examples/pybullet/constraint.py b/examples/pybullet/examples/constraint.py similarity index 100% rename from examples/pybullet/constraint.py rename to examples/pybullet/examples/constraint.py diff --git a/examples/pybullet/forcetorquesensor.py b/examples/pybullet/examples/forcetorquesensor.py similarity index 100% rename from examples/pybullet/forcetorquesensor.py rename to examples/pybullet/examples/forcetorquesensor.py diff --git a/examples/pybullet/hand.ino b/examples/pybullet/examples/hand.ino similarity index 100% rename from examples/pybullet/hand.ino rename to examples/pybullet/examples/hand.ino diff --git a/examples/pybullet/hand.py b/examples/pybullet/examples/hand.py similarity index 100% rename from examples/pybullet/hand.py rename to examples/pybullet/examples/hand.py diff --git a/examples/pybullet/hello_pybullet.py b/examples/pybullet/examples/hello_pybullet.py similarity index 100% rename from examples/pybullet/hello_pybullet.py rename to examples/pybullet/examples/hello_pybullet.py diff --git a/examples/pybullet/inverse_kinematics.py b/examples/pybullet/examples/inverse_kinematics.py similarity index 100% rename from examples/pybullet/inverse_kinematics.py rename to examples/pybullet/examples/inverse_kinematics.py diff --git a/examples/pybullet/kuka_with_cube.py b/examples/pybullet/examples/kuka_with_cube.py similarity index 100% rename from examples/pybullet/kuka_with_cube.py rename to examples/pybullet/examples/kuka_with_cube.py diff --git a/examples/pybullet/kuka_with_cube_playback.py b/examples/pybullet/examples/kuka_with_cube_playback.py similarity index 100% rename from examples/pybullet/kuka_with_cube_playback.py rename to examples/pybullet/examples/kuka_with_cube_playback.py diff --git a/examples/pybullet/logMinitaur.py b/examples/pybullet/examples/logMinitaur.py similarity index 100% rename from examples/pybullet/logMinitaur.py rename to examples/pybullet/examples/logMinitaur.py diff --git a/examples/pybullet/manyspheres.py b/examples/pybullet/examples/manyspheres.py similarity index 100% rename from examples/pybullet/manyspheres.py rename to examples/pybullet/examples/manyspheres.py diff --git a/examples/pybullet/minitaur.py b/examples/pybullet/examples/minitaur.py similarity index 100% rename from examples/pybullet/minitaur.py rename to examples/pybullet/examples/minitaur.py diff --git a/examples/pybullet/minitaur_evaluate.py b/examples/pybullet/examples/minitaur_evaluate.py similarity index 100% rename from examples/pybullet/minitaur_evaluate.py rename to examples/pybullet/examples/minitaur_evaluate.py diff --git a/examples/pybullet/minitaur_test.py b/examples/pybullet/examples/minitaur_test.py similarity index 100% rename from examples/pybullet/minitaur_test.py rename to examples/pybullet/examples/minitaur_test.py diff --git a/examples/pybullet/mylittleminitaur.py b/examples/pybullet/examples/mylittleminitaur.py similarity index 100% rename from examples/pybullet/mylittleminitaur.py rename to examples/pybullet/examples/mylittleminitaur.py diff --git a/examples/pybullet/quadruped.py b/examples/pybullet/examples/quadruped.py similarity index 100% rename from examples/pybullet/quadruped.py rename to examples/pybullet/examples/quadruped.py diff --git a/examples/pybullet/quadruped_playback.py b/examples/pybullet/examples/quadruped_playback.py similarity index 100% rename from examples/pybullet/quadruped_playback.py rename to examples/pybullet/examples/quadruped_playback.py diff --git a/examples/pybullet/quadruped_setup_playback.py b/examples/pybullet/examples/quadruped_setup_playback.py similarity index 100% rename from examples/pybullet/quadruped_setup_playback.py rename to examples/pybullet/examples/quadruped_setup_playback.py diff --git a/examples/pybullet/robotcontrol.py b/examples/pybullet/examples/robotcontrol.py similarity index 100% rename from examples/pybullet/robotcontrol.py rename to examples/pybullet/examples/robotcontrol.py diff --git a/examples/pybullet/rollPitchYaw.py b/examples/pybullet/examples/rollPitchYaw.py similarity index 100% rename from examples/pybullet/rollPitchYaw.py rename to examples/pybullet/examples/rollPitchYaw.py diff --git a/examples/pybullet/saveWorld.py b/examples/pybullet/examples/saveWorld.py similarity index 100% rename from examples/pybullet/saveWorld.py rename to examples/pybullet/examples/saveWorld.py diff --git a/examples/pybullet/test.py b/examples/pybullet/examples/test.py similarity index 100% rename from examples/pybullet/test.py rename to examples/pybullet/examples/test.py diff --git a/examples/pybullet/testrender.py b/examples/pybullet/examples/testrender.py similarity index 100% rename from examples/pybullet/testrender.py rename to examples/pybullet/examples/testrender.py diff --git a/examples/pybullet/testrender_np.py b/examples/pybullet/examples/testrender_np.py similarity index 100% rename from examples/pybullet/testrender_np.py rename to examples/pybullet/examples/testrender_np.py diff --git a/examples/pybullet/vrEvent.py b/examples/pybullet/examples/vrEvent.py similarity index 100% rename from examples/pybullet/vrEvent.py rename to examples/pybullet/examples/vrEvent.py diff --git a/examples/pybullet/vr_kuka_control.py b/examples/pybullet/examples/vr_kuka_control.py similarity index 100% rename from examples/pybullet/vr_kuka_control.py rename to examples/pybullet/examples/vr_kuka_control.py diff --git a/examples/pybullet/vr_kuka_pr2_move.py b/examples/pybullet/examples/vr_kuka_pr2_move.py similarity index 100% rename from examples/pybullet/vr_kuka_pr2_move.py rename to examples/pybullet/examples/vr_kuka_pr2_move.py diff --git a/examples/pybullet/vr_kuka_setup.py b/examples/pybullet/examples/vr_kuka_setup.py similarity index 100% rename from examples/pybullet/vr_kuka_setup.py rename to examples/pybullet/examples/vr_kuka_setup.py diff --git a/examples/pybullet/vrhand.py b/examples/pybullet/examples/vrhand.py similarity index 100% rename from examples/pybullet/vrhand.py rename to examples/pybullet/examples/vrhand.py diff --git a/examples/pybullet/vrminitaur.py b/examples/pybullet/examples/vrminitaur.py similarity index 100% rename from examples/pybullet/vrminitaur.py rename to examples/pybullet/examples/vrminitaur.py