Add new demos to cmake: SerializeDemo and InternalEdgeDemo

Fix in btShapeHull for previous commit
Add support to serialize name for objects
Updated serialization structures.
This commit is contained in:
erwin.coumans
2010-02-04 01:07:07 +00:00
parent 43d82fc20c
commit 58c5630d7f
13 changed files with 481 additions and 420 deletions

View File

@@ -9,7 +9,7 @@ if (CMAKE_SIZEOF_VOID_P MATCHES "8")
CollisionInterfaceDemo ConcaveConvexcastDemo SimplexDemo DynamicControlDemo CollisionInterfaceDemo ConcaveConvexcastDemo SimplexDemo DynamicControlDemo
DoublePrecisionDemo ConcaveDemo CollisionDemo DoublePrecisionDemo ConcaveDemo CollisionDemo
ContinuousConvexCollision ConcaveRaycastDemo GjkConvexCastDemo ContinuousConvexCollision ConcaveRaycastDemo GjkConvexCastDemo
MultiMaterialDemo MultiMaterialDemo SerializeDemo InternalEdgeDemo
) )
else (CMAKE_SIZEOF_VOID_P MATCHES "8") else (CMAKE_SIZEOF_VOID_P MATCHES "8")
SUBDIRS( OpenGL AllBulletDemos ConvexDecompositionDemo Benchmarks HelloWorld SUBDIRS( OpenGL AllBulletDemos ConvexDecompositionDemo Benchmarks HelloWorld
@@ -20,7 +20,7 @@ else (CMAKE_SIZEOF_VOID_P MATCHES "8")
CollisionInterfaceDemo ConcaveConvexcastDemo SimplexDemo DynamicControlDemo CollisionInterfaceDemo ConcaveConvexcastDemo SimplexDemo DynamicControlDemo
DoublePrecisionDemo ConcaveDemo CollisionDemo DoublePrecisionDemo ConcaveDemo CollisionDemo
ContinuousConvexCollision ConcaveRaycastDemo GjkConvexCastDemo ContinuousConvexCollision ConcaveRaycastDemo GjkConvexCastDemo
MultiMaterialDemo MultiMaterialDemo SerializeDemo InternalEdgeDemo
) )
endif (CMAKE_SIZEOF_VOID_P MATCHES "8") endif (CMAKE_SIZEOF_VOID_P MATCHES "8")

View File

@@ -17,7 +17,7 @@ subject to the following restrictions:
#define TEST_SERIALIZATION 1 #define TEST_SERIALIZATION 1
//#ifdef BT_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES //#ifdef BT_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES
//#define CREATE_NEW_BULLETFILE 1 #define CREATE_NEW_BULLETFILE 1
//#endif //BT_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES //#endif //BT_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES
///create 125 (5x5x5) dynamic object ///create 125 (5x5x5) dynamic object
@@ -125,6 +125,8 @@ void SerializeDemo::initPhysics()
///create a few basic rigid bodies ///create a few basic rigid bodies
btCollisionShape* groundShape = new btBoxShape(btVector3(btScalar(50.),btScalar(50.),btScalar(50.))); btCollisionShape* groundShape = new btBoxShape(btVector3(btScalar(50.),btScalar(50.),btScalar(50.)));
// btCollisionShape* groundShape = new btStaticPlaneShape(btVector3(0,1,0),50); // btCollisionShape* groundShape = new btStaticPlaneShape(btVector3(0,1,0),50);
btCollisionObject* groundObject = 0;
m_collisionShapes.push_back(groundShape); m_collisionShapes.push_back(groundShape);
@@ -150,6 +152,7 @@ void SerializeDemo::initPhysics()
//add the body to the dynamics world //add the body to the dynamics world
m_dynamicsWorld->addRigidBody(body); m_dynamicsWorld->addRigidBody(body);
groundObject = body;
} }
@@ -223,6 +226,10 @@ void SerializeDemo::initPhysics()
int maxSerializeBufferSize = 1024*1024*5; int maxSerializeBufferSize = 1024*1024*5;
btDefaultSerializer* serializer = new btDefaultSerializer(maxSerializeBufferSize); btDefaultSerializer* serializer = new btDefaultSerializer(maxSerializeBufferSize);
static char* groundName = "GroundName";
serializer->registerNameForPointer(groundObject, groundName);
m_dynamicsWorld->serialize(serializer); m_dynamicsWorld->serialize(serializer);
FILE* f2 = fopen("testFile.bullet","wb"); FILE* f2 = fopen("testFile.bullet","wb");

View File

@@ -1,4 +1,4 @@
SUBDIRS( Serialize ConvexDecomposition GIMPACTUtils ) SUBDIRS( Serialize ConvexDecomposition GIMPACTUtils LibXML)
IF (BUILD_BULLET_MAYA_DYNAMICA_PLUGIN) IF (BUILD_BULLET_MAYA_DYNAMICA_PLUGIN)
SUBDIRS(MayaPlugin) SUBDIRS(MayaPlugin)

View File

@@ -15,6 +15,7 @@ subject to the following restrictions:
#include "btCollisionObject.h" #include "btCollisionObject.h"
#include "LinearMath/btSerializer.h"
btCollisionObject::btCollisionObject() btCollisionObject::btCollisionObject()
: m_anisotropicFriction(1.f,1.f,1.f), : m_anisotropicFriction(1.f,1.f,1.f),
@@ -64,5 +65,43 @@ void btCollisionObject::activate(bool forceActivation)
} }
} }
const char* btCollisionObject::serialize(void* dataBuffer, btSerializer* serializer) const
{
btCollisionObjectData* dataOut = (btCollisionObjectData*)dataBuffer;
m_worldTransform.serialize(dataOut->m_worldTransform);
m_interpolationWorldTransform.serialize(dataOut->m_interpolationWorldTransform);
m_interpolationLinearVelocity.serialize(dataOut->m_interpolationLinearVelocity);
m_interpolationAngularVelocity.serialize(dataOut->m_interpolationAngularVelocity);
m_anisotropicFriction.serialize(dataOut->m_anisotropicFriction);
dataOut->m_hasAnisotropicFriction = m_hasAnisotropicFriction;
dataOut->m_contactProcessingThreshold = m_contactProcessingThreshold;
dataOut->m_broadphaseHandle = 0;
dataOut->m_collisionShape = m_collisionShape; //@todo
dataOut->m_rootCollisionShape = 0;//@todo
dataOut->m_collisionFlags = m_collisionFlags;
dataOut->m_islandTag1 = m_islandTag1;
dataOut->m_companionId = m_companionId;
dataOut->m_activationState1 = m_activationState1;
dataOut->m_activationState1 = m_activationState1;
dataOut->m_deactivationTime = m_deactivationTime;
dataOut->m_friction = m_friction;
dataOut->m_restitution = m_restitution;
dataOut->m_internalType = m_internalType;
dataOut->m_name = (char*) serializer->findNameForPointer(this);
if (dataOut->m_name)
{
serializer->serializeName(dataOut->m_name);
}
dataOut->m_hitFraction = m_hitFraction;
dataOut->m_ccdSweptSphereRadius = m_ccdSweptSphereRadius;
dataOut->m_ccdMotionThreshold = m_ccdMotionThreshold;
dataOut->m_ccdMotionThreshold = m_ccdMotionThreshold;
dataOut->m_checkCollideWith = m_checkCollideWith;
return btCollisionObjectDataName;
}

View File

@@ -427,7 +427,7 @@ public:
virtual int calculateSerializeBufferSize() const; virtual int calculateSerializeBufferSize() const;
///fills the dataBuffer and returns the struct name (and 0 on failure) ///fills the dataBuffer and returns the struct name (and 0 on failure)
virtual const char* serialize(void* dataBuffer) const; virtual const char* serialize(void* dataBuffer, class btSerializer* serializer) const;
}; };
@@ -438,7 +438,7 @@ struct btCollisionObjectDoubleData
void *m_broadphaseHandle; void *m_broadphaseHandle;
void *m_collisionShape; void *m_collisionShape;
btCollisionShapeData *m_rootCollisionShape; btCollisionShapeData *m_rootCollisionShape;
void *m_userObjectPointer; char *m_name;
btTransformDoubleData m_worldTransform; btTransformDoubleData m_worldTransform;
btTransformDoubleData m_interpolationWorldTransform; btTransformDoubleData m_interpolationWorldTransform;
@@ -460,6 +460,7 @@ struct btCollisionObjectDoubleData
int m_activationState1; int m_activationState1;
int m_internalType; int m_internalType;
int m_checkCollideWith; int m_checkCollideWith;
char m_padding[4]; char m_padding[4];
}; };
@@ -469,7 +470,7 @@ struct btCollisionObjectFloatData
void *m_broadphaseHandle; void *m_broadphaseHandle;
void *m_collisionShape; void *m_collisionShape;
btCollisionShapeData *m_rootCollisionShape; btCollisionShapeData *m_rootCollisionShape;
void *m_userObjectPointer; char *m_name;
btTransformFloatData m_worldTransform; btTransformFloatData m_worldTransform;
btTransformFloatData m_interpolationWorldTransform; btTransformFloatData m_interpolationWorldTransform;
@@ -500,40 +501,6 @@ SIMD_FORCE_INLINE int btCollisionObject::calculateSerializeBufferSize() const
return sizeof(btCollisionObjectData); return sizeof(btCollisionObjectData);
} }
SIMD_FORCE_INLINE const char* btCollisionObject::serialize(void* dataBuffer) const
{
btCollisionObjectData* dataOut = (btCollisionObjectData*)dataBuffer;
m_worldTransform.serialize(dataOut->m_worldTransform);
m_interpolationWorldTransform.serialize(dataOut->m_interpolationWorldTransform);
m_interpolationLinearVelocity.serialize(dataOut->m_interpolationLinearVelocity);
m_interpolationAngularVelocity.serialize(dataOut->m_interpolationAngularVelocity);
m_anisotropicFriction.serialize(dataOut->m_anisotropicFriction);
dataOut->m_hasAnisotropicFriction = m_hasAnisotropicFriction;
dataOut->m_contactProcessingThreshold = m_contactProcessingThreshold;
dataOut->m_broadphaseHandle = 0;
dataOut->m_collisionShape = m_collisionShape; //@todo
dataOut->m_rootCollisionShape = 0;//@todo
dataOut->m_collisionFlags = m_collisionFlags;
dataOut->m_islandTag1 = m_islandTag1;
dataOut->m_companionId = m_companionId;
dataOut->m_activationState1 = m_activationState1;
dataOut->m_activationState1 = m_activationState1;
dataOut->m_deactivationTime = m_deactivationTime;
dataOut->m_friction = m_friction;
dataOut->m_restitution = m_restitution;
dataOut->m_internalType = m_internalType;
dataOut->m_userObjectPointer = m_userObjectPointer;
dataOut->m_hitFraction = m_hitFraction;
dataOut->m_ccdSweptSphereRadius = m_ccdSweptSphereRadius;
dataOut->m_ccdMotionThreshold = m_ccdMotionThreshold;
dataOut->m_ccdMotionThreshold = m_ccdMotionThreshold;
dataOut->m_checkCollideWith = m_checkCollideWith;
return btCollisionObjectDataName;
}
#endif //COLLISION_OBJECT_H #endif //COLLISION_OBJECT_H

View File

@@ -1255,7 +1255,7 @@ void btCollisionWorld::serializeCollisionObjects(btSerializer* serializer)
if (colObj->getInternalType() == btCollisionObject::CO_COLLISION_OBJECT) if (colObj->getInternalType() == btCollisionObject::CO_COLLISION_OBJECT)
{ {
btChunk* chunk = serializer->allocate(colObj->calculateSerializeBufferSize(),1); btChunk* chunk = serializer->allocate(colObj->calculateSerializeBufferSize(),1);
const char* structType = colObj->serialize(chunk->m_oldPtr); const char* structType = colObj->serialize(chunk->m_oldPtr, serializer);
serializer->finalizeChunk(chunk,structType,BT_COLLISIONOBJECT_CODE,colObj); serializer->finalizeChunk(chunk,structType,BT_COLLISIONOBJECT_CODE,colObj);
} }
} }

View File

@@ -57,7 +57,7 @@ btShapeHull::buildHull (btScalar /*margin*/)
int i; int i;
for (i = 0; i < numSampleDirections; i++) for (i = 0; i < numSampleDirections; i++)
{ {
getUnitSpherePoints()[i] = m_shape->localGetSupportingVertex(getUnitSpherePoints()[i]); supportPoints[i] = m_shape->localGetSupportingVertex(getUnitSpherePoints()[i]);
} }
HullDesc hd; HullDesc hd;

View File

@@ -1090,7 +1090,7 @@ void btDiscreteDynamicsWorld::serializeRigidBodies(btSerializer* serializer)
{ {
int len = colObj->calculateSerializeBufferSize(); int len = colObj->calculateSerializeBufferSize();
btChunk* chunk = serializer->allocate(len,1); btChunk* chunk = serializer->allocate(len,1);
const char* structType = colObj->serialize(chunk->m_oldPtr); const char* structType = colObj->serialize(chunk->m_oldPtr, serializer);
serializer->finalizeChunk(chunk,structType,BT_RIGIDBODY_CODE,colObj); serializer->finalizeChunk(chunk,structType,BT_RIGIDBODY_CODE,colObj);
} }
} }

View File

@@ -325,11 +325,11 @@ int btRigidBody::calculateSerializeBufferSize() const
} }
///fills the dataBuffer and returns the struct name (and 0 on failure) ///fills the dataBuffer and returns the struct name (and 0 on failure)
const char* btRigidBody::serialize(void* dataBuffer) const const char* btRigidBody::serialize(void* dataBuffer, class btSerializer* serializer) const
{ {
btRigidBodyData* rbd = (btRigidBodyData*) dataBuffer; btRigidBodyData* rbd = (btRigidBodyData*) dataBuffer;
btCollisionObject::serialize(&rbd->m_collisionObjectData); btCollisionObject::serialize(&rbd->m_collisionObjectData, serializer);
m_invInertiaTensorWorld.serialize(rbd->m_invInertiaTensorWorld); m_invInertiaTensorWorld.serialize(rbd->m_invInertiaTensorWorld);
m_linearVelocity.serialize(rbd->m_linearVelocity); m_linearVelocity.serialize(rbd->m_linearVelocity);

View File

@@ -524,7 +524,7 @@ public:
virtual int calculateSerializeBufferSize() const; virtual int calculateSerializeBufferSize() const;
///fills the dataBuffer and returns the struct name (and 0 on failure) ///fills the dataBuffer and returns the struct name (and 0 on failure)
virtual const char* serialize(void* dataBuffer) const; virtual const char* serialize(void* dataBuffer, class btSerializer* serializer) const;
}; };

View File

@@ -93,13 +93,13 @@ class btHashPtr
union union
{ {
void* m_pointer; const void* m_pointer;
int m_hashValues[2]; int m_hashValues[2];
}; };
public: public:
btHashPtr(void* ptr) btHashPtr(const void* ptr)
:m_pointer(ptr) :m_pointer(ptr)
{ {
} }

View File

@@ -1,5 +1,5 @@
unsigned char sBulletDNAstr64[]= { unsigned char sBulletDNAstr64[]= {
83,68,78,65,78,65,77,69,-121,0,0,0,109,95,115,105,122,101,0,109, 83,68,78,65,78,65,77,69,-124,0,0,0,109,95,115,105,122,101,0,109,
95,99,97,112,97,99,105,116,121,0,42,109,95,100,97,116,97,0,109,95, 95,99,97,112,97,99,105,116,121,0,42,109,95,100,97,116,97,0,109,95,
99,111,108,108,105,115,105,111,110,83,104,97,112,101,115,0,109,95,99,111, 99,111,108,108,105,115,105,111,110,83,104,97,112,101,115,0,109,95,99,111,
108,108,105,115,105,111,110,79,98,106,101,99,116,115,0,109,95,99,111,110, 108,108,105,115,105,111,110,79,98,106,101,99,116,115,0,109,95,99,111,110,
@@ -39,195 +39,190 @@ unsigned char sBulletDNAstr64[]= {
0,109,95,112,97,100,100,105,110,103,51,91,52,93,0,42,109,95,98,114, 0,109,95,112,97,100,100,105,110,103,51,91,52,93,0,42,109,95,98,114,
111,97,100,112,104,97,115,101,72,97,110,100,108,101,0,42,109,95,99,111, 111,97,100,112,104,97,115,101,72,97,110,100,108,101,0,42,109,95,99,111,
108,108,105,115,105,111,110,83,104,97,112,101,0,42,109,95,114,111,111,116, 108,108,105,115,105,111,110,83,104,97,112,101,0,42,109,95,114,111,111,116,
67,111,108,108,105,115,105,111,110,83,104,97,112,101,0,42,109,95,117,115, 67,111,108,108,105,115,105,111,110,83,104,97,112,101,0,42,109,95,110,97,
101,114,79,98,106,101,99,116,80,111,105,110,116,101,114,0,109,95,119,111, 109,101,0,109,95,119,111,114,108,100,84,114,97,110,115,102,111,114,109,0,
114,108,100,84,114,97,110,115,102,111,114,109,0,109,95,105,110,116,101,114, 109,95,105,110,116,101,114,112,111,108,97,116,105,111,110,87,111,114,108,100,
112,111,108,97,116,105,111,110,87,111,114,108,100,84,114,97,110,115,102,111, 84,114,97,110,115,102,111,114,109,0,109,95,105,110,116,101,114,112,111,108,
114,109,0,109,95,105,110,116,101,114,112,111,108,97,116,105,111,110,76,105, 97,116,105,111,110,76,105,110,101,97,114,86,101,108,111,99,105,116,121,0,
110,101,97,114,86,101,108,111,99,105,116,121,0,109,95,105,110,116,101,114, 109,95,105,110,116,101,114,112,111,108,97,116,105,111,110,65,110,103,117,108,
112,111,108,97,116,105,111,110,65,110,103,117,108,97,114,86,101,108,111,99, 97,114,86,101,108,111,99,105,116,121,0,109,95,97,110,105,115,111,116,114,
105,116,121,0,109,95,97,110,105,115,111,116,114,111,112,105,99,70,114,105, 111,112,105,99,70,114,105,99,116,105,111,110,0,109,95,99,111,110,116,97,
99,116,105,111,110,0,109,95,99,111,110,116,97,99,116,80,114,111,99,101, 99,116,80,114,111,99,101,115,115,105,110,103,84,104,114,101,115,104,111,108,
115,115,105,110,103,84,104,114,101,115,104,111,108,100,0,109,95,100,101,97, 100,0,109,95,100,101,97,99,116,105,118,97,116,105,111,110,84,105,109,101,
99,116,105,118,97,116,105,111,110,84,105,109,101,0,109,95,102,114,105,99, 0,109,95,102,114,105,99,116,105,111,110,0,109,95,114,101,115,116,105,116,
116,105,111,110,0,109,95,114,101,115,116,105,116,117,116,105,111,110,0,109, 117,116,105,111,110,0,109,95,104,105,116,70,114,97,99,116,105,111,110,0,
95,104,105,116,70,114,97,99,116,105,111,110,0,109,95,99,99,100,83,119, 109,95,99,99,100,83,119,101,112,116,83,112,104,101,114,101,82,97,100,105,
101,112,116,83,112,104,101,114,101,82,97,100,105,117,115,0,109,95,99,99, 117,115,0,109,95,99,99,100,77,111,116,105,111,110,84,104,114,101,115,104,
100,77,111,116,105,111,110,84,104,114,101,115,104,111,108,100,0,109,95,104, 111,108,100,0,109,95,104,97,115,65,110,105,115,111,116,114,111,112,105,99,
97,115,65,110,105,115,111,116,114,111,112,105,99,70,114,105,99,116,105,111, 70,114,105,99,116,105,111,110,0,109,95,99,111,108,108,105,115,105,111,110,
110,0,109,95,99,111,108,108,105,115,105,111,110,70,108,97,103,115,0,109, 70,108,97,103,115,0,109,95,105,115,108,97,110,100,84,97,103,49,0,109,
95,105,115,108,97,110,100,84,97,103,49,0,109,95,99,111,109,112,97,110, 95,99,111,109,112,97,110,105,111,110,73,100,0,109,95,97,99,116,105,118,
105,111,110,73,100,0,109,95,97,99,116,105,118,97,116,105,111,110,83,116, 97,116,105,111,110,83,116,97,116,101,49,0,109,95,105,110,116,101,114,110,
97,116,101,49,0,109,95,105,110,116,101,114,110,97,108,84,121,112,101,0, 97,108,84,121,112,101,0,109,95,99,104,101,99,107,67,111,108,108,105,100,
109,95,99,104,101,99,107,67,111,108,108,105,100,101,87,105,116,104,0,109, 101,87,105,116,104,0,109,95,99,111,108,108,105,115,105,111,110,79,98,106,
95,99,111,108,108,105,115,105,111,110,79,98,106,101,99,116,68,97,116,97, 101,99,116,68,97,116,97,0,109,95,105,110,118,73,110,101,114,116,105,97,
0,109,95,105,110,118,73,110,101,114,116,105,97,84,101,110,115,111,114,87, 84,101,110,115,111,114,87,111,114,108,100,0,109,95,108,105,110,101,97,114,
111,114,108,100,0,109,95,108,105,110,101,97,114,86,101,108,111,99,105,116, 86,101,108,111,99,105,116,121,0,109,95,97,110,103,117,108,97,114,86,101,
121,0,109,95,97,110,103,117,108,97,114,86,101,108,111,99,105,116,121,0, 108,111,99,105,116,121,0,109,95,97,110,103,117,108,97,114,70,97,99,116,
109,95,97,110,103,117,108,97,114,70,97,99,116,111,114,0,109,95,108,105, 111,114,0,109,95,108,105,110,101,97,114,70,97,99,116,111,114,0,109,95,
110,101,97,114,70,97,99,116,111,114,0,109,95,103,114,97,118,105,116,121, 103,114,97,118,105,116,121,0,109,95,103,114,97,118,105,116,121,95,97,99,
0,109,95,103,114,97,118,105,116,121,95,97,99,99,101,108,101,114,97,116, 99,101,108,101,114,97,116,105,111,110,0,109,95,105,110,118,73,110,101,114,
105,111,110,0,109,95,105,110,118,73,110,101,114,116,105,97,76,111,99,97, 116,105,97,76,111,99,97,108,0,109,95,116,111,116,97,108,70,111,114,99,
108,0,109,95,116,111,116,97,108,70,111,114,99,101,0,109,95,116,111,116, 101,0,109,95,116,111,116,97,108,84,111,114,113,117,101,0,109,95,105,110,
97,108,84,111,114,113,117,101,0,109,95,105,110,118,101,114,115,101,77,97, 118,101,114,115,101,77,97,115,115,0,109,95,108,105,110,101,97,114,68,97,
115,115,0,109,95,108,105,110,101,97,114,68,97,109,112,105,110,103,0,109, 109,112,105,110,103,0,109,95,97,110,103,117,108,97,114,68,97,109,112,105,
95,97,110,103,117,108,97,114,68,97,109,112,105,110,103,0,109,95,97,100, 110,103,0,109,95,97,100,100,105,116,105,111,110,97,108,68,97,109,112,105,
100,105,116,105,111,110,97,108,68,97,109,112,105,110,103,70,97,99,116,111, 110,103,70,97,99,116,111,114,0,109,95,97,100,100,105,116,105,111,110,97,
114,0,109,95,97,100,100,105,116,105,111,110,97,108,76,105,110,101,97,114, 108,76,105,110,101,97,114,68,97,109,112,105,110,103,84,104,114,101,115,104,
68,97,109,112,105,110,103,84,104,114,101,115,104,111,108,100,83,113,114,0, 111,108,100,83,113,114,0,109,95,97,100,100,105,116,105,111,110,97,108,65,
109,95,97,100,100,105,116,105,111,110,97,108,65,110,103,117,108,97,114,68, 110,103,117,108,97,114,68,97,109,112,105,110,103,84,104,114,101,115,104,111,
97,109,112,105,110,103,84,104,114,101,115,104,111,108,100,83,113,114,0,109, 108,100,83,113,114,0,109,95,97,100,100,105,116,105,111,110,97,108,65,110,
95,97,100,100,105,116,105,111,110,97,108,65,110,103,117,108,97,114,68,97, 103,117,108,97,114,68,97,109,112,105,110,103,70,97,99,116,111,114,0,109,
109,112,105,110,103,70,97,99,116,111,114,0,109,95,108,105,110,101,97,114, 95,108,105,110,101,97,114,83,108,101,101,112,105,110,103,84,104,114,101,115,
83,108,101,101,112,105,110,103,84,104,114,101,115,104,111,108,100,0,109,95, 104,111,108,100,0,109,95,97,110,103,117,108,97,114,83,108,101,101,112,105,
97,110,103,117,108,97,114,83,108,101,101,112,105,110,103,84,104,114,101,115, 110,103,84,104,114,101,115,104,111,108,100,0,109,95,97,100,100,105,116,105,
104,111,108,100,0,109,95,97,100,100,105,116,105,111,110,97,108,68,97,109, 111,110,97,108,68,97,109,112,105,110,103,0,109,95,110,117,109,67,111,110,
112,105,110,103,0,109,95,110,117,109,67,111,110,115,116,114,97,105,110,116, 115,116,114,97,105,110,116,82,111,119,115,0,110,117,98,0,42,109,95,114,
82,111,119,115,0,110,117,98,0,42,109,95,114,98,65,0,42,109,95,114, 98,65,0,42,109,95,114,98,66,0,109,95,111,98,106,101,99,116,84,121,
98,66,0,109,95,97,112,112,108,105,101,100,76,105,110,101,97,114,73,109, 112,101,0,109,95,117,115,101,114,67,111,110,115,116,114,97,105,110,116,84,
112,117,108,115,101,0,109,95,97,112,112,108,105,101,100,65,110,103,117,108, 121,112,101,0,109,95,117,115,101,114,67,111,110,115,116,114,97,105,110,116,
97,114,73,109,112,117,108,115,101,65,0,109,95,97,112,112,108,105,101,100, 73,100,0,109,95,110,101,101,100,115,70,101,101,100,98,97,99,107,0,109,
65,110,103,117,108,97,114,73,109,112,117,108,115,101,66,0,109,95,111,98, 95,97,112,112,108,105,101,100,73,109,112,117,108,115,101,0,109,95,100,98,
106,101,99,116,84,121,112,101,0,109,95,117,115,101,114,67,111,110,115,116, 103,68,114,97,119,83,105,122,101,0,109,95,100,105,115,97,98,108,101,67,
114,97,105,110,116,84,121,112,101,0,109,95,117,115,101,114,67,111,110,115, 111,108,108,105,115,105,111,110,115,66,101,116,119,101,101,110,76,105,110,107,
116,114,97,105,110,116,73,100,0,109,95,110,101,101,100,115,70,101,101,100, 101,100,66,111,100,105,101,115,0,109,95,116,121,112,101,67,111,110,115,116,
98,97,99,107,0,109,95,97,112,112,108,105,101,100,73,109,112,117,108,115, 114,97,105,110,116,68,97,116,97,0,109,95,112,105,118,111,116,73,110,65,
101,0,109,95,100,98,103,68,114,97,119,83,105,122,101,0,109,95,100,105, 0,109,95,112,105,118,111,116,73,110,66,0,109,95,114,98,65,70,114,97,
115,97,98,108,101,67,111,108,108,105,115,105,111,110,115,66,101,116,119,101, 109,101,0,109,95,114,98,66,70,114,97,109,101,0,109,95,117,115,101,82,
101,110,76,105,110,107,101,100,66,111,100,105,101,115,0,109,95,116,121,112, 101,102,101,114,101,110,99,101,70,114,97,109,101,65,0,109,95,97,110,103,
101,67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,109,95,112,105, 117,108,97,114,79,110,108,121,0,109,95,101,110,97,98,108,101,65,110,103,
118,111,116,73,110,65,0,109,95,112,105,118,111,116,73,110,66,0,109,95, 117,108,97,114,77,111,116,111,114,0,109,95,109,111,116,111,114,84,97,114,
114,98,65,70,114,97,109,101,0,109,95,114,98,66,70,114,97,109,101,0, 103,101,116,86,101,108,111,99,105,116,121,0,109,95,109,97,120,77,111,116,
109,95,117,115,101,82,101,102,101,114,101,110,99,101,70,114,97,109,101,65, 111,114,73,109,112,117,108,115,101,0,109,95,108,111,119,101,114,76,105,109,
0,109,95,97,110,103,117,108,97,114,79,110,108,121,0,109,95,101,110,97, 105,116,0,109,95,117,112,112,101,114,76,105,109,105,116,0,109,95,108,105,
98,108,101,65,110,103,117,108,97,114,77,111,116,111,114,0,109,95,109,111, 109,105,116,83,111,102,116,110,101,115,115,0,109,95,98,105,97,115,70,97,
116,111,114,84,97,114,103,101,116,86,101,108,111,99,105,116,121,0,109,95, 99,116,111,114,0,109,95,114,101,108,97,120,97,116,105,111,110,70,97,99,
109,97,120,77,111,116,111,114,73,109,112,117,108,115,101,0,109,95,108,111, 116,111,114,0,109,95,115,119,105,110,103,83,112,97,110,49,0,109,95,115,
119,101,114,76,105,109,105,116,0,109,95,117,112,112,101,114,76,105,109,105, 119,105,110,103,83,112,97,110,50,0,109,95,116,119,105,115,116,83,112,97,
116,0,109,95,108,105,109,105,116,83,111,102,116,110,101,115,115,0,109,95, 110,0,109,95,100,97,109,112,105,110,103,0,109,95,108,105,110,101,97,114,
98,105,97,115,70,97,99,116,111,114,0,109,95,114,101,108,97,120,97,116, 85,112,112,101,114,76,105,109,105,116,0,109,95,108,105,110,101,97,114,76,
105,111,110,70,97,99,116,111,114,0,109,95,115,119,105,110,103,83,112,97, 111,119,101,114,76,105,109,105,116,0,109,95,97,110,103,117,108,97,114,85,
110,49,0,109,95,115,119,105,110,103,83,112,97,110,50,0,109,95,116,119, 112,112,101,114,76,105,109,105,116,0,109,95,97,110,103,117,108,97,114,76,
105,115,116,83,112,97,110,0,109,95,100,97,109,112,105,110,103,0,109,95, 111,119,101,114,76,105,109,105,116,0,109,95,117,115,101,76,105,110,101,97,
108,105,110,101,97,114,85,112,112,101,114,76,105,109,105,116,0,109,95,108, 114,82,101,102,101,114,101,110,99,101,70,114,97,109,101,65,0,109,95,117,
105,110,101,97,114,76,111,119,101,114,76,105,109,105,116,0,109,95,97,110, 115,101,79,102,102,115,101,116,70,111,114,67,111,110,115,116,114,97,105,110,
103,117,108,97,114,85,112,112,101,114,76,105,109,105,116,0,109,95,97,110, 116,70,114,97,109,101,0,0,84,89,80,69,49,0,0,0,99,104,97,114,
103,117,108,97,114,76,111,119,101,114,76,105,109,105,116,0,109,95,117,115, 0,117,99,104,97,114,0,115,104,111,114,116,0,117,115,104,111,114,116,0,
101,76,105,110,101,97,114,82,101,102,101,114,101,110,99,101,70,114,97,109, 105,110,116,0,108,111,110,103,0,117,108,111,110,103,0,102,108,111,97,116,
101,65,0,109,95,117,115,101,79,102,102,115,101,116,70,111,114,67,111,110, 0,100,111,117,98,108,101,0,118,111,105,100,0,80,111,105,110,116,101,114,
115,116,114,97,105,110,116,70,114,97,109,101,0,0,0,0,84,89,80,69, 65,114,114,97,121,0,98,116,80,104,121,115,105,99,115,83,121,115,116,101,
49,0,0,0,99,104,97,114,0,117,99,104,97,114,0,115,104,111,114,116, 109,0,76,105,115,116,66,97,115,101,0,98,116,86,101,99,116,111,114,51,
0,117,115,104,111,114,116,0,105,110,116,0,108,111,110,103,0,117,108,111, 70,108,111,97,116,68,97,116,97,0,98,116,86,101,99,116,111,114,51,68,
110,103,0,102,108,111,97,116,0,100,111,117,98,108,101,0,118,111,105,100, 111,117,98,108,101,68,97,116,97,0,98,116,77,97,116,114,105,120,51,120,
0,80,111,105,110,116,101,114,65,114,114,97,121,0,98,116,80,104,121,115, 51,70,108,111,97,116,68,97,116,97,0,98,116,77,97,116,114,105,120,51,
105,99,115,83,121,115,116,101,109,0,76,105,115,116,66,97,115,101,0,98, 120,51,68,111,117,98,108,101,68,97,116,97,0,98,116,84,114,97,110,115,
116,86,101,99,116,111,114,51,70,108,111,97,116,68,97,116,97,0,98,116, 102,111,114,109,70,108,111,97,116,68,97,116,97,0,98,116,84,114,97,110,
86,101,99,116,111,114,51,68,111,117,98,108,101,68,97,116,97,0,98,116, 115,102,111,114,109,68,111,117,98,108,101,68,97,116,97,0,98,116,67,111,
77,97,116,114,105,120,51,120,51,70,108,111,97,116,68,97,116,97,0,98, 108,108,105,115,105,111,110,83,104,97,112,101,68,97,116,97,0,98,116,83,
116,77,97,116,114,105,120,51,120,51,68,111,117,98,108,101,68,97,116,97, 116,97,116,105,99,80,108,97,110,101,83,104,97,112,101,68,97,116,97,0,
0,98,116,84,114,97,110,115,102,111,114,109,70,108,111,97,116,68,97,116, 98,116,67,111,110,118,101,120,73,110,116,101,114,110,97,108,83,104,97,112,
97,0,98,116,84,114,97,110,115,102,111,114,109,68,111,117,98,108,101,68, 101,68,97,116,97,0,98,116,80,111,115,105,116,105,111,110,65,110,100,82,
97,116,97,0,98,116,67,111,108,108,105,115,105,111,110,83,104,97,112,101, 97,100,105,117,115,0,98,116,77,117,108,116,105,83,112,104,101,114,101,83,
68,97,116,97,0,98,116,83,116,97,116,105,99,80,108,97,110,101,83,104, 104,97,112,101,68,97,116,97,0,98,116,73,110,116,73,110,100,101,120,68,
97,112,101,68,97,116,97,0,98,116,67,111,110,118,101,120,73,110,116,101, 97,116,97,0,98,116,83,104,111,114,116,73,110,116,73,110,100,101,120,68,
114,110,97,108,83,104,97,112,101,68,97,116,97,0,98,116,80,111,115,105, 97,116,97,0,98,116,77,101,115,104,80,97,114,116,68,97,116,97,0,98,
116,105,111,110,65,110,100,82,97,100,105,117,115,0,98,116,77,117,108,116, 116,83,116,114,105,100,105,110,103,77,101,115,104,73,110,116,101,114,102,97,
105,83,112,104,101,114,101,83,104,97,112,101,68,97,116,97,0,98,116,73, 99,101,68,97,116,97,0,98,116,84,114,105,97,110,103,108,101,77,101,115,
110,116,73,110,100,101,120,68,97,116,97,0,98,116,83,104,111,114,116,73, 104,83,104,97,112,101,68,97,116,97,0,98,116,67,111,109,112,111,117,110,
110,116,73,110,100,101,120,68,97,116,97,0,98,116,77,101,115,104,80,97, 100,83,104,97,112,101,67,104,105,108,100,68,97,116,97,0,98,116,67,111,
114,116,68,97,116,97,0,98,116,83,116,114,105,100,105,110,103,77,101,115, 109,112,111,117,110,100,83,104,97,112,101,68,97,116,97,0,98,116,67,121,
104,73,110,116,101,114,102,97,99,101,68,97,116,97,0,98,116,84,114,105, 108,105,110,100,101,114,83,104,97,112,101,68,97,116,97,0,98,116,67,97,
97,110,103,108,101,77,101,115,104,83,104,97,112,101,68,97,116,97,0,98, 112,115,117,108,101,83,104,97,112,101,68,97,116,97,0,98,116,71,73,109,
116,67,111,109,112,111,117,110,100,83,104,97,112,101,67,104,105,108,100,68, 112,97,99,116,77,101,115,104,83,104,97,112,101,68,97,116,97,0,98,116,
97,116,97,0,98,116,67,111,109,112,111,117,110,100,83,104,97,112,101,68, 67,111,110,118,101,120,72,117,108,108,83,104,97,112,101,68,97,116,97,0,
97,116,97,0,98,116,67,121,108,105,110,100,101,114,83,104,97,112,101,68, 98,116,67,111,108,108,105,115,105,111,110,79,98,106,101,99,116,68,111,117,
97,116,97,0,98,116,67,97,112,115,117,108,101,83,104,97,112,101,68,97, 98,108,101,68,97,116,97,0,98,116,67,111,108,108,105,115,105,111,110,79,
116,97,0,98,116,71,73,109,112,97,99,116,77,101,115,104,83,104,97,112, 98,106,101,99,116,70,108,111,97,116,68,97,116,97,0,98,116,82,105,103,
101,68,97,116,97,0,98,116,67,111,110,118,101,120,72,117,108,108,83,104, 105,100,66,111,100,121,70,108,111,97,116,68,97,116,97,0,98,116,82,105,
97,112,101,68,97,116,97,0,98,116,67,111,108,108,105,115,105,111,110,79, 103,105,100,66,111,100,121,68,111,117,98,108,101,68,97,116,97,0,98,116,
98,106,101,99,116,68,111,117,98,108,101,68,97,116,97,0,98,116,67,111, 67,111,110,115,116,114,97,105,110,116,73,110,102,111,49,0,98,116,84,121,
108,108,105,115,105,111,110,79,98,106,101,99,116,70,108,111,97,116,68,97, 112,101,100,67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,98,116,
116,97,0,98,116,82,105,103,105,100,66,111,100,121,70,108,111,97,116,68, 82,105,103,105,100,66,111,100,121,68,97,116,97,0,98,116,80,111,105,110,
97,116,97,0,98,116,82,105,103,105,100,66,111,100,121,68,111,117,98,108, 116,50,80,111,105,110,116,67,111,110,115,116,114,97,105,110,116,70,108,111,
101,68,97,116,97,0,98,116,67,111,110,115,116,114,97,105,110,116,73,110, 97,116,68,97,116,97,0,98,116,80,111,105,110,116,50,80,111,105,110,116,
102,111,49,0,98,116,84,121,112,101,100,67,111,110,115,116,114,97,105,110, 67,111,110,115,116,114,97,105,110,116,68,111,117,98,108,101,68,97,116,97,
116,68,97,116,97,0,98,116,82,105,103,105,100,66,111,100,121,68,97,116, 0,98,116,72,105,110,103,101,67,111,110,115,116,114,97,105,110,116,68,111,
97,0,98,116,80,111,105,110,116,50,80,111,105,110,116,67,111,110,115,116,
114,97,105,110,116,70,108,111,97,116,68,97,116,97,0,98,116,80,111,105,
110,116,50,80,111,105,110,116,67,111,110,115,116,114,97,105,110,116,68,111,
117,98,108,101,68,97,116,97,0,98,116,72,105,110,103,101,67,111,110,115, 117,98,108,101,68,97,116,97,0,98,116,72,105,110,103,101,67,111,110,115,
116,114,97,105,110,116,68,111,117,98,108,101,68,97,116,97,0,98,116,72, 116,114,97,105,110,116,70,108,111,97,116,68,97,116,97,0,98,116,67,111,
105,110,103,101,67,111,110,115,116,114,97,105,110,116,70,108,111,97,116,68, 110,101,84,119,105,115,116,67,111,110,115,116,114,97,105,110,116,68,97,116,
97,116,97,0,98,116,67,111,110,101,84,119,105,115,116,67,111,110,115,116, 97,0,98,116,71,101,110,101,114,105,99,54,68,111,102,67,111,110,115,116,
114,97,105,110,116,68,97,116,97,0,98,116,71,101,110,101,114,105,99,54, 114,97,105,110,116,68,97,116,97,0,98,116,83,108,105,100,101,114,67,111,
68,111,102,67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,98,116, 110,115,116,114,97,105,110,116,68,97,116,97,0,0,0,0,84,76,69,78,
83,108,105,100,101,114,67,111,110,115,116,114,97,105,110,116,68,97,116,97, 1,0,1,0,2,0,2,0,4,0,4,0,4,0,4,0,8,0,0,0,
0,0,0,0,84,76,69,78,1,0,1,0,2,0,2,0,4,0,4,0, 16,0,48,0,16,0,16,0,32,0,48,0,96,0,64,0,-128,0,16,0,
4,0,4,0,8,0,0,0,16,0,48,0,16,0,16,0,32,0,48,0, 56,0,56,0,20,0,72,0,4,0,4,0,40,0,32,0,56,0,80,0,
96,0,64,0,-128,0,16,0,56,0,56,0,20,0,72,0,4,0,4,0, 32,0,64,0,64,0,72,0,80,0,-40,1,8,1,-16,1,-88,3,8,0,
40,0,32,0,56,0,80,0,32,0,64,0,64,0,72,0,80,0,-40,1, 48,0,0,0,80,0,112,0,88,1,-40,0,-48,0,-8,0,-56,0,0,0,
8,1,-16,1,-88,3,8,0,96,0,0,0,-128,0,-96,0,-120,1,8,1, 83,84,82,67,38,0,0,0,10,0,3,0,4,0,0,0,4,0,1,0,
0,1,40,1,-8,0,0,0,83,84,82,67,38,0,0,0,10,0,3,0, 9,0,2,0,11,0,3,0,10,0,3,0,10,0,4,0,10,0,5,0,
4,0,0,0,4,0,1,0,9,0,2,0,11,0,3,0,10,0,3,0, 12,0,2,0,9,0,6,0,9,0,7,0,13,0,1,0,7,0,8,0,
10,0,4,0,10,0,5,0,12,0,2,0,9,0,6,0,9,0,7,0, 14,0,1,0,8,0,8,0,15,0,1,0,13,0,9,0,16,0,1,0,
13,0,1,0,7,0,8,0,14,0,1,0,8,0,8,0,15,0,1,0, 14,0,9,0,17,0,2,0,15,0,10,0,13,0,11,0,18,0,2,0,
13,0,9,0,16,0,1,0,14,0,9,0,17,0,2,0,15,0,10,0, 16,0,10,0,14,0,11,0,19,0,3,0,9,0,12,0,4,0,13,0,
13,0,11,0,18,0,2,0,16,0,10,0,14,0,11,0,19,0,3,0, 0,0,14,0,20,0,5,0,19,0,15,0,13,0,16,0,13,0,17,0,
9,0,12,0,4,0,13,0,0,0,14,0,20,0,5,0,19,0,15,0, 7,0,18,0,0,0,19,0,21,0,5,0,19,0,15,0,13,0,16,0,
13,0,16,0,13,0,17,0,7,0,18,0,0,0,19,0,21,0,5,0, 13,0,20,0,7,0,21,0,4,0,22,0,22,0,2,0,13,0,23,0,
19,0,15,0,13,0,16,0,13,0,20,0,7,0,21,0,4,0,22,0, 7,0,24,0,23,0,4,0,21,0,25,0,22,0,26,0,4,0,27,0,
22,0,2,0,13,0,23,0,7,0,24,0,23,0,4,0,21,0,25,0, 0,0,14,0,24,0,1,0,4,0,28,0,25,0,2,0,2,0,29,0,
22,0,26,0,4,0,27,0,0,0,14,0,24,0,1,0,4,0,28,0, 2,0,28,0,26,0,6,0,13,0,30,0,14,0,31,0,24,0,32,0,
25,0,2,0,2,0,29,0,2,0,28,0,26,0,6,0,13,0,30,0, 25,0,33,0,4,0,34,0,4,0,35,0,27,0,4,0,26,0,36,0,
14,0,31,0,24,0,32,0,25,0,33,0,4,0,34,0,4,0,35,0, 13,0,37,0,4,0,38,0,0,0,14,0,28,0,4,0,19,0,15,0,
27,0,4,0,26,0,36,0,13,0,37,0,4,0,38,0,0,0,14,0, 27,0,39,0,7,0,21,0,0,0,14,0,29,0,4,0,17,0,40,0,
28,0,4,0,19,0,15,0,27,0,39,0,7,0,21,0,0,0,14,0, 19,0,41,0,4,0,42,0,7,0,43,0,30,0,4,0,19,0,15,0,
29,0,4,0,17,0,40,0,19,0,41,0,4,0,42,0,7,0,43,0, 29,0,44,0,4,0,45,0,7,0,21,0,31,0,3,0,21,0,25,0,
30,0,4,0,19,0,15,0,29,0,44,0,4,0,45,0,7,0,21,0, 4,0,46,0,0,0,14,0,32,0,3,0,21,0,25,0,4,0,46,0,
31,0,3,0,21,0,25,0,4,0,46,0,0,0,14,0,32,0,3,0, 0,0,14,0,33,0,5,0,19,0,15,0,27,0,39,0,13,0,16,0,
21,0,25,0,4,0,46,0,0,0,14,0,33,0,5,0,19,0,15,0, 7,0,21,0,4,0,47,0,34,0,5,0,21,0,25,0,13,0,48,0,
27,0,39,0,13,0,16,0,7,0,21,0,4,0,47,0,34,0,5,0, 14,0,49,0,4,0,50,0,0,0,51,0,35,0,24,0,9,0,52,0,
21,0,25,0,13,0,48,0,14,0,49,0,4,0,50,0,0,0,51,0, 9,0,53,0,19,0,54,0,0,0,55,0,18,0,56,0,18,0,57,0,
35,0,24,0,9,0,52,0,9,0,53,0,19,0,54,0,9,0,55,0, 14,0,58,0,14,0,59,0,14,0,60,0,8,0,61,0,8,0,62,0,
18,0,56,0,18,0,57,0,14,0,58,0,14,0,59,0,14,0,60,0, 8,0,63,0,8,0,64,0,8,0,65,0,8,0,66,0,8,0,67,0,
8,0,61,0,8,0,62,0,8,0,63,0,8,0,64,0,8,0,65,0, 4,0,68,0,4,0,69,0,4,0,70,0,4,0,71,0,4,0,72,0,
8,0,66,0,8,0,67,0,4,0,68,0,4,0,69,0,4,0,70,0, 4,0,73,0,4,0,74,0,0,0,14,0,36,0,23,0,9,0,52,0,
4,0,71,0,4,0,72,0,4,0,73,0,4,0,74,0,0,0,14,0, 9,0,53,0,19,0,54,0,0,0,55,0,17,0,56,0,17,0,57,0,
36,0,23,0,9,0,52,0,9,0,53,0,19,0,54,0,9,0,55,0, 13,0,58,0,13,0,59,0,13,0,60,0,7,0,61,0,7,0,62,0,
17,0,56,0,17,0,57,0,13,0,58,0,13,0,59,0,13,0,60,0, 7,0,63,0,7,0,64,0,7,0,65,0,7,0,66,0,7,0,67,0,
7,0,61,0,7,0,62,0,7,0,63,0,7,0,64,0,7,0,65,0, 4,0,68,0,4,0,69,0,4,0,70,0,4,0,71,0,4,0,72,0,
7,0,66,0,7,0,67,0,4,0,68,0,4,0,69,0,4,0,70,0, 4,0,73,0,4,0,74,0,37,0,21,0,36,0,75,0,15,0,76,0,
4,0,71,0,4,0,72,0,4,0,73,0,4,0,74,0,37,0,21,0, 13,0,77,0,13,0,78,0,13,0,79,0,13,0,80,0,13,0,81,0,
36,0,75,0,15,0,76,0,13,0,77,0,13,0,78,0,13,0,79,0, 13,0,82,0,13,0,83,0,13,0,84,0,13,0,85,0,7,0,86,0,
13,0,80,0,13,0,81,0,13,0,82,0,13,0,83,0,13,0,84,0, 7,0,87,0,7,0,88,0,7,0,89,0,7,0,90,0,7,0,91,0,
13,0,85,0,7,0,86,0,7,0,87,0,7,0,88,0,7,0,89,0, 7,0,92,0,7,0,93,0,7,0,94,0,4,0,95,0,38,0,22,0,
7,0,90,0,7,0,91,0,7,0,92,0,7,0,93,0,7,0,94,0, 35,0,75,0,16,0,76,0,14,0,77,0,14,0,78,0,14,0,79,0,
4,0,95,0,38,0,22,0,35,0,75,0,16,0,76,0,14,0,77,0, 14,0,80,0,14,0,81,0,14,0,82,0,14,0,83,0,14,0,84,0,
14,0,78,0,14,0,79,0,14,0,80,0,14,0,81,0,14,0,82,0, 14,0,85,0,8,0,86,0,8,0,87,0,8,0,88,0,8,0,89,0,
14,0,83,0,14,0,84,0,14,0,85,0,8,0,86,0,8,0,87,0, 8,0,90,0,8,0,91,0,8,0,92,0,8,0,93,0,8,0,94,0,
8,0,88,0,8,0,89,0,8,0,90,0,8,0,91,0,8,0,92,0, 4,0,95,0,0,0,14,0,39,0,2,0,4,0,96,0,4,0,97,0,
8,0,93,0,8,0,94,0,4,0,95,0,0,0,14,0,39,0,2,0, 40,0,10,0,41,0,98,0,41,0,99,0,4,0,100,0,4,0,101,0,
4,0,96,0,4,0,97,0,40,0,13,0,41,0,98,0,41,0,99,0, 4,0,102,0,4,0,103,0,7,0,104,0,7,0,105,0,4,0,106,0,
13,0,100,0,13,0,101,0,13,0,102,0,4,0,103,0,4,0,104,0, 0,0,19,0,42,0,3,0,40,0,107,0,13,0,108,0,13,0,109,0,
4,0,105,0,4,0,106,0,7,0,107,0,7,0,108,0,4,0,109,0, 43,0,3,0,40,0,107,0,14,0,108,0,14,0,109,0,44,0,13,0,
0,0,19,0,42,0,3,0,40,0,110,0,13,0,111,0,13,0,112,0, 40,0,107,0,18,0,110,0,18,0,111,0,4,0,112,0,4,0,113,0,
43,0,3,0,40,0,110,0,14,0,111,0,14,0,112,0,44,0,13,0, 4,0,114,0,7,0,115,0,7,0,116,0,7,0,117,0,7,0,118,0,
40,0,110,0,18,0,113,0,18,0,114,0,4,0,115,0,4,0,116,0, 7,0,119,0,7,0,120,0,7,0,121,0,45,0,13,0,40,0,107,0,
4,0,117,0,7,0,118,0,7,0,119,0,7,0,120,0,7,0,121,0, 17,0,110,0,17,0,111,0,4,0,112,0,4,0,113,0,4,0,114,0,
7,0,122,0,7,0,123,0,7,0,124,0,45,0,13,0,40,0,110,0, 7,0,115,0,7,0,116,0,7,0,117,0,7,0,118,0,7,0,119,0,
17,0,113,0,17,0,114,0,4,0,115,0,4,0,116,0,4,0,117,0, 7,0,120,0,7,0,121,0,46,0,11,0,40,0,107,0,17,0,110,0,
7,0,118,0,7,0,119,0,7,0,120,0,7,0,121,0,7,0,122,0, 17,0,111,0,7,0,122,0,7,0,123,0,7,0,124,0,7,0,119,0,
7,0,123,0,7,0,124,0,46,0,11,0,40,0,110,0,17,0,113,0, 7,0,120,0,7,0,121,0,7,0,125,0,0,0,19,0,47,0,9,0,
17,0,114,0,7,0,125,0,7,0,126,0,7,0,127,0,7,0,122,0, 40,0,107,0,17,0,110,0,17,0,111,0,13,0,126,0,13,0,127,0,
7,0,123,0,7,0,124,0,7,0,-128,0,0,0,19,0,47,0,9,0, 13,0,-128,0,13,0,-127,0,4,0,-126,0,4,0,-125,0,48,0,9,0,
40,0,110,0,17,0,113,0,17,0,114,0,13,0,-127,0,13,0,-126,0, 40,0,107,0,17,0,110,0,17,0,111,0,7,0,126,0,7,0,127,0,
13,0,-125,0,13,0,-124,0,4,0,-123,0,4,0,-122,0,48,0,9,0, 7,0,-128,0,7,0,-127,0,4,0,-126,0,4,0,-125,0,};
40,0,110,0,17,0,113,0,17,0,114,0,7,0,-127,0,7,0,-126,0,
7,0,-125,0,7,0,-124,0,4,0,-123,0,4,0,-122,0,};
int sBulletDNAlen64= sizeof(sBulletDNAstr64); int sBulletDNAlen64= sizeof(sBulletDNAstr64);
unsigned char sBulletDNAstr[]= { unsigned char sBulletDNAstr[]= {
83,68,78,65,78,65,77,69,-121,0,0,0,109,95,115,105,122,101,0,109, 83,68,78,65,78,65,77,69,-124,0,0,0,109,95,115,105,122,101,0,109,
95,99,97,112,97,99,105,116,121,0,42,109,95,100,97,116,97,0,109,95, 95,99,97,112,97,99,105,116,121,0,42,109,95,100,97,116,97,0,109,95,
99,111,108,108,105,115,105,111,110,83,104,97,112,101,115,0,109,95,99,111, 99,111,108,108,105,115,105,111,110,83,104,97,112,101,115,0,109,95,99,111,
108,108,105,115,105,111,110,79,98,106,101,99,116,115,0,109,95,99,111,110, 108,108,105,115,105,111,110,79,98,106,101,99,116,115,0,109,95,99,111,110,
@@ -267,189 +262,184 @@ unsigned char sBulletDNAstr[]= {
0,109,95,112,97,100,100,105,110,103,51,91,52,93,0,42,109,95,98,114, 0,109,95,112,97,100,100,105,110,103,51,91,52,93,0,42,109,95,98,114,
111,97,100,112,104,97,115,101,72,97,110,100,108,101,0,42,109,95,99,111, 111,97,100,112,104,97,115,101,72,97,110,100,108,101,0,42,109,95,99,111,
108,108,105,115,105,111,110,83,104,97,112,101,0,42,109,95,114,111,111,116, 108,108,105,115,105,111,110,83,104,97,112,101,0,42,109,95,114,111,111,116,
67,111,108,108,105,115,105,111,110,83,104,97,112,101,0,42,109,95,117,115, 67,111,108,108,105,115,105,111,110,83,104,97,112,101,0,42,109,95,110,97,
101,114,79,98,106,101,99,116,80,111,105,110,116,101,114,0,109,95,119,111, 109,101,0,109,95,119,111,114,108,100,84,114,97,110,115,102,111,114,109,0,
114,108,100,84,114,97,110,115,102,111,114,109,0,109,95,105,110,116,101,114, 109,95,105,110,116,101,114,112,111,108,97,116,105,111,110,87,111,114,108,100,
112,111,108,97,116,105,111,110,87,111,114,108,100,84,114,97,110,115,102,111, 84,114,97,110,115,102,111,114,109,0,109,95,105,110,116,101,114,112,111,108,
114,109,0,109,95,105,110,116,101,114,112,111,108,97,116,105,111,110,76,105, 97,116,105,111,110,76,105,110,101,97,114,86,101,108,111,99,105,116,121,0,
110,101,97,114,86,101,108,111,99,105,116,121,0,109,95,105,110,116,101,114, 109,95,105,110,116,101,114,112,111,108,97,116,105,111,110,65,110,103,117,108,
112,111,108,97,116,105,111,110,65,110,103,117,108,97,114,86,101,108,111,99, 97,114,86,101,108,111,99,105,116,121,0,109,95,97,110,105,115,111,116,114,
105,116,121,0,109,95,97,110,105,115,111,116,114,111,112,105,99,70,114,105, 111,112,105,99,70,114,105,99,116,105,111,110,0,109,95,99,111,110,116,97,
99,116,105,111,110,0,109,95,99,111,110,116,97,99,116,80,114,111,99,101, 99,116,80,114,111,99,101,115,115,105,110,103,84,104,114,101,115,104,111,108,
115,115,105,110,103,84,104,114,101,115,104,111,108,100,0,109,95,100,101,97, 100,0,109,95,100,101,97,99,116,105,118,97,116,105,111,110,84,105,109,101,
99,116,105,118,97,116,105,111,110,84,105,109,101,0,109,95,102,114,105,99, 0,109,95,102,114,105,99,116,105,111,110,0,109,95,114,101,115,116,105,116,
116,105,111,110,0,109,95,114,101,115,116,105,116,117,116,105,111,110,0,109, 117,116,105,111,110,0,109,95,104,105,116,70,114,97,99,116,105,111,110,0,
95,104,105,116,70,114,97,99,116,105,111,110,0,109,95,99,99,100,83,119, 109,95,99,99,100,83,119,101,112,116,83,112,104,101,114,101,82,97,100,105,
101,112,116,83,112,104,101,114,101,82,97,100,105,117,115,0,109,95,99,99, 117,115,0,109,95,99,99,100,77,111,116,105,111,110,84,104,114,101,115,104,
100,77,111,116,105,111,110,84,104,114,101,115,104,111,108,100,0,109,95,104, 111,108,100,0,109,95,104,97,115,65,110,105,115,111,116,114,111,112,105,99,
97,115,65,110,105,115,111,116,114,111,112,105,99,70,114,105,99,116,105,111, 70,114,105,99,116,105,111,110,0,109,95,99,111,108,108,105,115,105,111,110,
110,0,109,95,99,111,108,108,105,115,105,111,110,70,108,97,103,115,0,109, 70,108,97,103,115,0,109,95,105,115,108,97,110,100,84,97,103,49,0,109,
95,105,115,108,97,110,100,84,97,103,49,0,109,95,99,111,109,112,97,110, 95,99,111,109,112,97,110,105,111,110,73,100,0,109,95,97,99,116,105,118,
105,111,110,73,100,0,109,95,97,99,116,105,118,97,116,105,111,110,83,116, 97,116,105,111,110,83,116,97,116,101,49,0,109,95,105,110,116,101,114,110,
97,116,101,49,0,109,95,105,110,116,101,114,110,97,108,84,121,112,101,0, 97,108,84,121,112,101,0,109,95,99,104,101,99,107,67,111,108,108,105,100,
109,95,99,104,101,99,107,67,111,108,108,105,100,101,87,105,116,104,0,109, 101,87,105,116,104,0,109,95,99,111,108,108,105,115,105,111,110,79,98,106,
95,99,111,108,108,105,115,105,111,110,79,98,106,101,99,116,68,97,116,97, 101,99,116,68,97,116,97,0,109,95,105,110,118,73,110,101,114,116,105,97,
0,109,95,105,110,118,73,110,101,114,116,105,97,84,101,110,115,111,114,87, 84,101,110,115,111,114,87,111,114,108,100,0,109,95,108,105,110,101,97,114,
111,114,108,100,0,109,95,108,105,110,101,97,114,86,101,108,111,99,105,116, 86,101,108,111,99,105,116,121,0,109,95,97,110,103,117,108,97,114,86,101,
121,0,109,95,97,110,103,117,108,97,114,86,101,108,111,99,105,116,121,0, 108,111,99,105,116,121,0,109,95,97,110,103,117,108,97,114,70,97,99,116,
109,95,97,110,103,117,108,97,114,70,97,99,116,111,114,0,109,95,108,105, 111,114,0,109,95,108,105,110,101,97,114,70,97,99,116,111,114,0,109,95,
110,101,97,114,70,97,99,116,111,114,0,109,95,103,114,97,118,105,116,121, 103,114,97,118,105,116,121,0,109,95,103,114,97,118,105,116,121,95,97,99,
0,109,95,103,114,97,118,105,116,121,95,97,99,99,101,108,101,114,97,116, 99,101,108,101,114,97,116,105,111,110,0,109,95,105,110,118,73,110,101,114,
105,111,110,0,109,95,105,110,118,73,110,101,114,116,105,97,76,111,99,97, 116,105,97,76,111,99,97,108,0,109,95,116,111,116,97,108,70,111,114,99,
108,0,109,95,116,111,116,97,108,70,111,114,99,101,0,109,95,116,111,116, 101,0,109,95,116,111,116,97,108,84,111,114,113,117,101,0,109,95,105,110,
97,108,84,111,114,113,117,101,0,109,95,105,110,118,101,114,115,101,77,97, 118,101,114,115,101,77,97,115,115,0,109,95,108,105,110,101,97,114,68,97,
115,115,0,109,95,108,105,110,101,97,114,68,97,109,112,105,110,103,0,109, 109,112,105,110,103,0,109,95,97,110,103,117,108,97,114,68,97,109,112,105,
95,97,110,103,117,108,97,114,68,97,109,112,105,110,103,0,109,95,97,100, 110,103,0,109,95,97,100,100,105,116,105,111,110,97,108,68,97,109,112,105,
100,105,116,105,111,110,97,108,68,97,109,112,105,110,103,70,97,99,116,111, 110,103,70,97,99,116,111,114,0,109,95,97,100,100,105,116,105,111,110,97,
114,0,109,95,97,100,100,105,116,105,111,110,97,108,76,105,110,101,97,114, 108,76,105,110,101,97,114,68,97,109,112,105,110,103,84,104,114,101,115,104,
68,97,109,112,105,110,103,84,104,114,101,115,104,111,108,100,83,113,114,0, 111,108,100,83,113,114,0,109,95,97,100,100,105,116,105,111,110,97,108,65,
109,95,97,100,100,105,116,105,111,110,97,108,65,110,103,117,108,97,114,68, 110,103,117,108,97,114,68,97,109,112,105,110,103,84,104,114,101,115,104,111,
97,109,112,105,110,103,84,104,114,101,115,104,111,108,100,83,113,114,0,109, 108,100,83,113,114,0,109,95,97,100,100,105,116,105,111,110,97,108,65,110,
95,97,100,100,105,116,105,111,110,97,108,65,110,103,117,108,97,114,68,97, 103,117,108,97,114,68,97,109,112,105,110,103,70,97,99,116,111,114,0,109,
109,112,105,110,103,70,97,99,116,111,114,0,109,95,108,105,110,101,97,114, 95,108,105,110,101,97,114,83,108,101,101,112,105,110,103,84,104,114,101,115,
83,108,101,101,112,105,110,103,84,104,114,101,115,104,111,108,100,0,109,95, 104,111,108,100,0,109,95,97,110,103,117,108,97,114,83,108,101,101,112,105,
97,110,103,117,108,97,114,83,108,101,101,112,105,110,103,84,104,114,101,115, 110,103,84,104,114,101,115,104,111,108,100,0,109,95,97,100,100,105,116,105,
104,111,108,100,0,109,95,97,100,100,105,116,105,111,110,97,108,68,97,109, 111,110,97,108,68,97,109,112,105,110,103,0,109,95,110,117,109,67,111,110,
112,105,110,103,0,109,95,110,117,109,67,111,110,115,116,114,97,105,110,116, 115,116,114,97,105,110,116,82,111,119,115,0,110,117,98,0,42,109,95,114,
82,111,119,115,0,110,117,98,0,42,109,95,114,98,65,0,42,109,95,114, 98,65,0,42,109,95,114,98,66,0,109,95,111,98,106,101,99,116,84,121,
98,66,0,109,95,97,112,112,108,105,101,100,76,105,110,101,97,114,73,109, 112,101,0,109,95,117,115,101,114,67,111,110,115,116,114,97,105,110,116,84,
112,117,108,115,101,0,109,95,97,112,112,108,105,101,100,65,110,103,117,108, 121,112,101,0,109,95,117,115,101,114,67,111,110,115,116,114,97,105,110,116,
97,114,73,109,112,117,108,115,101,65,0,109,95,97,112,112,108,105,101,100, 73,100,0,109,95,110,101,101,100,115,70,101,101,100,98,97,99,107,0,109,
65,110,103,117,108,97,114,73,109,112,117,108,115,101,66,0,109,95,111,98, 95,97,112,112,108,105,101,100,73,109,112,117,108,115,101,0,109,95,100,98,
106,101,99,116,84,121,112,101,0,109,95,117,115,101,114,67,111,110,115,116, 103,68,114,97,119,83,105,122,101,0,109,95,100,105,115,97,98,108,101,67,
114,97,105,110,116,84,121,112,101,0,109,95,117,115,101,114,67,111,110,115, 111,108,108,105,115,105,111,110,115,66,101,116,119,101,101,110,76,105,110,107,
116,114,97,105,110,116,73,100,0,109,95,110,101,101,100,115,70,101,101,100, 101,100,66,111,100,105,101,115,0,109,95,116,121,112,101,67,111,110,115,116,
98,97,99,107,0,109,95,97,112,112,108,105,101,100,73,109,112,117,108,115, 114,97,105,110,116,68,97,116,97,0,109,95,112,105,118,111,116,73,110,65,
101,0,109,95,100,98,103,68,114,97,119,83,105,122,101,0,109,95,100,105, 0,109,95,112,105,118,111,116,73,110,66,0,109,95,114,98,65,70,114,97,
115,97,98,108,101,67,111,108,108,105,115,105,111,110,115,66,101,116,119,101, 109,101,0,109,95,114,98,66,70,114,97,109,101,0,109,95,117,115,101,82,
101,110,76,105,110,107,101,100,66,111,100,105,101,115,0,109,95,116,121,112, 101,102,101,114,101,110,99,101,70,114,97,109,101,65,0,109,95,97,110,103,
101,67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,109,95,112,105, 117,108,97,114,79,110,108,121,0,109,95,101,110,97,98,108,101,65,110,103,
118,111,116,73,110,65,0,109,95,112,105,118,111,116,73,110,66,0,109,95, 117,108,97,114,77,111,116,111,114,0,109,95,109,111,116,111,114,84,97,114,
114,98,65,70,114,97,109,101,0,109,95,114,98,66,70,114,97,109,101,0, 103,101,116,86,101,108,111,99,105,116,121,0,109,95,109,97,120,77,111,116,
109,95,117,115,101,82,101,102,101,114,101,110,99,101,70,114,97,109,101,65, 111,114,73,109,112,117,108,115,101,0,109,95,108,111,119,101,114,76,105,109,
0,109,95,97,110,103,117,108,97,114,79,110,108,121,0,109,95,101,110,97, 105,116,0,109,95,117,112,112,101,114,76,105,109,105,116,0,109,95,108,105,
98,108,101,65,110,103,117,108,97,114,77,111,116,111,114,0,109,95,109,111, 109,105,116,83,111,102,116,110,101,115,115,0,109,95,98,105,97,115,70,97,
116,111,114,84,97,114,103,101,116,86,101,108,111,99,105,116,121,0,109,95, 99,116,111,114,0,109,95,114,101,108,97,120,97,116,105,111,110,70,97,99,
109,97,120,77,111,116,111,114,73,109,112,117,108,115,101,0,109,95,108,111, 116,111,114,0,109,95,115,119,105,110,103,83,112,97,110,49,0,109,95,115,
119,101,114,76,105,109,105,116,0,109,95,117,112,112,101,114,76,105,109,105, 119,105,110,103,83,112,97,110,50,0,109,95,116,119,105,115,116,83,112,97,
116,0,109,95,108,105,109,105,116,83,111,102,116,110,101,115,115,0,109,95, 110,0,109,95,100,97,109,112,105,110,103,0,109,95,108,105,110,101,97,114,
98,105,97,115,70,97,99,116,111,114,0,109,95,114,101,108,97,120,97,116, 85,112,112,101,114,76,105,109,105,116,0,109,95,108,105,110,101,97,114,76,
105,111,110,70,97,99,116,111,114,0,109,95,115,119,105,110,103,83,112,97, 111,119,101,114,76,105,109,105,116,0,109,95,97,110,103,117,108,97,114,85,
110,49,0,109,95,115,119,105,110,103,83,112,97,110,50,0,109,95,116,119, 112,112,101,114,76,105,109,105,116,0,109,95,97,110,103,117,108,97,114,76,
105,115,116,83,112,97,110,0,109,95,100,97,109,112,105,110,103,0,109,95, 111,119,101,114,76,105,109,105,116,0,109,95,117,115,101,76,105,110,101,97,
108,105,110,101,97,114,85,112,112,101,114,76,105,109,105,116,0,109,95,108, 114,82,101,102,101,114,101,110,99,101,70,114,97,109,101,65,0,109,95,117,
105,110,101,97,114,76,111,119,101,114,76,105,109,105,116,0,109,95,97,110, 115,101,79,102,102,115,101,116,70,111,114,67,111,110,115,116,114,97,105,110,
103,117,108,97,114,85,112,112,101,114,76,105,109,105,116,0,109,95,97,110, 116,70,114,97,109,101,0,0,84,89,80,69,49,0,0,0,99,104,97,114,
103,117,108,97,114,76,111,119,101,114,76,105,109,105,116,0,109,95,117,115, 0,117,99,104,97,114,0,115,104,111,114,116,0,117,115,104,111,114,116,0,
101,76,105,110,101,97,114,82,101,102,101,114,101,110,99,101,70,114,97,109, 105,110,116,0,108,111,110,103,0,117,108,111,110,103,0,102,108,111,97,116,
101,65,0,109,95,117,115,101,79,102,102,115,101,116,70,111,114,67,111,110, 0,100,111,117,98,108,101,0,118,111,105,100,0,80,111,105,110,116,101,114,
115,116,114,97,105,110,116,70,114,97,109,101,0,0,0,0,84,89,80,69, 65,114,114,97,121,0,98,116,80,104,121,115,105,99,115,83,121,115,116,101,
49,0,0,0,99,104,97,114,0,117,99,104,97,114,0,115,104,111,114,116, 109,0,76,105,115,116,66,97,115,101,0,98,116,86,101,99,116,111,114,51,
0,117,115,104,111,114,116,0,105,110,116,0,108,111,110,103,0,117,108,111, 70,108,111,97,116,68,97,116,97,0,98,116,86,101,99,116,111,114,51,68,
110,103,0,102,108,111,97,116,0,100,111,117,98,108,101,0,118,111,105,100, 111,117,98,108,101,68,97,116,97,0,98,116,77,97,116,114,105,120,51,120,
0,80,111,105,110,116,101,114,65,114,114,97,121,0,98,116,80,104,121,115, 51,70,108,111,97,116,68,97,116,97,0,98,116,77,97,116,114,105,120,51,
105,99,115,83,121,115,116,101,109,0,76,105,115,116,66,97,115,101,0,98, 120,51,68,111,117,98,108,101,68,97,116,97,0,98,116,84,114,97,110,115,
116,86,101,99,116,111,114,51,70,108,111,97,116,68,97,116,97,0,98,116, 102,111,114,109,70,108,111,97,116,68,97,116,97,0,98,116,84,114,97,110,
86,101,99,116,111,114,51,68,111,117,98,108,101,68,97,116,97,0,98,116, 115,102,111,114,109,68,111,117,98,108,101,68,97,116,97,0,98,116,67,111,
77,97,116,114,105,120,51,120,51,70,108,111,97,116,68,97,116,97,0,98, 108,108,105,115,105,111,110,83,104,97,112,101,68,97,116,97,0,98,116,83,
116,77,97,116,114,105,120,51,120,51,68,111,117,98,108,101,68,97,116,97, 116,97,116,105,99,80,108,97,110,101,83,104,97,112,101,68,97,116,97,0,
0,98,116,84,114,97,110,115,102,111,114,109,70,108,111,97,116,68,97,116, 98,116,67,111,110,118,101,120,73,110,116,101,114,110,97,108,83,104,97,112,
97,0,98,116,84,114,97,110,115,102,111,114,109,68,111,117,98,108,101,68, 101,68,97,116,97,0,98,116,80,111,115,105,116,105,111,110,65,110,100,82,
97,116,97,0,98,116,67,111,108,108,105,115,105,111,110,83,104,97,112,101, 97,100,105,117,115,0,98,116,77,117,108,116,105,83,112,104,101,114,101,83,
68,97,116,97,0,98,116,83,116,97,116,105,99,80,108,97,110,101,83,104, 104,97,112,101,68,97,116,97,0,98,116,73,110,116,73,110,100,101,120,68,
97,112,101,68,97,116,97,0,98,116,67,111,110,118,101,120,73,110,116,101, 97,116,97,0,98,116,83,104,111,114,116,73,110,116,73,110,100,101,120,68,
114,110,97,108,83,104,97,112,101,68,97,116,97,0,98,116,80,111,115,105, 97,116,97,0,98,116,77,101,115,104,80,97,114,116,68,97,116,97,0,98,
116,105,111,110,65,110,100,82,97,100,105,117,115,0,98,116,77,117,108,116, 116,83,116,114,105,100,105,110,103,77,101,115,104,73,110,116,101,114,102,97,
105,83,112,104,101,114,101,83,104,97,112,101,68,97,116,97,0,98,116,73, 99,101,68,97,116,97,0,98,116,84,114,105,97,110,103,108,101,77,101,115,
110,116,73,110,100,101,120,68,97,116,97,0,98,116,83,104,111,114,116,73, 104,83,104,97,112,101,68,97,116,97,0,98,116,67,111,109,112,111,117,110,
110,116,73,110,100,101,120,68,97,116,97,0,98,116,77,101,115,104,80,97, 100,83,104,97,112,101,67,104,105,108,100,68,97,116,97,0,98,116,67,111,
114,116,68,97,116,97,0,98,116,83,116,114,105,100,105,110,103,77,101,115, 109,112,111,117,110,100,83,104,97,112,101,68,97,116,97,0,98,116,67,121,
104,73,110,116,101,114,102,97,99,101,68,97,116,97,0,98,116,84,114,105, 108,105,110,100,101,114,83,104,97,112,101,68,97,116,97,0,98,116,67,97,
97,110,103,108,101,77,101,115,104,83,104,97,112,101,68,97,116,97,0,98, 112,115,117,108,101,83,104,97,112,101,68,97,116,97,0,98,116,71,73,109,
116,67,111,109,112,111,117,110,100,83,104,97,112,101,67,104,105,108,100,68, 112,97,99,116,77,101,115,104,83,104,97,112,101,68,97,116,97,0,98,116,
97,116,97,0,98,116,67,111,109,112,111,117,110,100,83,104,97,112,101,68, 67,111,110,118,101,120,72,117,108,108,83,104,97,112,101,68,97,116,97,0,
97,116,97,0,98,116,67,121,108,105,110,100,101,114,83,104,97,112,101,68, 98,116,67,111,108,108,105,115,105,111,110,79,98,106,101,99,116,68,111,117,
97,116,97,0,98,116,67,97,112,115,117,108,101,83,104,97,112,101,68,97, 98,108,101,68,97,116,97,0,98,116,67,111,108,108,105,115,105,111,110,79,
116,97,0,98,116,71,73,109,112,97,99,116,77,101,115,104,83,104,97,112, 98,106,101,99,116,70,108,111,97,116,68,97,116,97,0,98,116,82,105,103,
101,68,97,116,97,0,98,116,67,111,110,118,101,120,72,117,108,108,83,104, 105,100,66,111,100,121,70,108,111,97,116,68,97,116,97,0,98,116,82,105,
97,112,101,68,97,116,97,0,98,116,67,111,108,108,105,115,105,111,110,79, 103,105,100,66,111,100,121,68,111,117,98,108,101,68,97,116,97,0,98,116,
98,106,101,99,116,68,111,117,98,108,101,68,97,116,97,0,98,116,67,111, 67,111,110,115,116,114,97,105,110,116,73,110,102,111,49,0,98,116,84,121,
108,108,105,115,105,111,110,79,98,106,101,99,116,70,108,111,97,116,68,97, 112,101,100,67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,98,116,
116,97,0,98,116,82,105,103,105,100,66,111,100,121,70,108,111,97,116,68, 82,105,103,105,100,66,111,100,121,68,97,116,97,0,98,116,80,111,105,110,
97,116,97,0,98,116,82,105,103,105,100,66,111,100,121,68,111,117,98,108, 116,50,80,111,105,110,116,67,111,110,115,116,114,97,105,110,116,70,108,111,
101,68,97,116,97,0,98,116,67,111,110,115,116,114,97,105,110,116,73,110, 97,116,68,97,116,97,0,98,116,80,111,105,110,116,50,80,111,105,110,116,
102,111,49,0,98,116,84,121,112,101,100,67,111,110,115,116,114,97,105,110, 67,111,110,115,116,114,97,105,110,116,68,111,117,98,108,101,68,97,116,97,
116,68,97,116,97,0,98,116,82,105,103,105,100,66,111,100,121,68,97,116, 0,98,116,72,105,110,103,101,67,111,110,115,116,114,97,105,110,116,68,111,
97,0,98,116,80,111,105,110,116,50,80,111,105,110,116,67,111,110,115,116,
114,97,105,110,116,70,108,111,97,116,68,97,116,97,0,98,116,80,111,105,
110,116,50,80,111,105,110,116,67,111,110,115,116,114,97,105,110,116,68,111,
117,98,108,101,68,97,116,97,0,98,116,72,105,110,103,101,67,111,110,115, 117,98,108,101,68,97,116,97,0,98,116,72,105,110,103,101,67,111,110,115,
116,114,97,105,110,116,68,111,117,98,108,101,68,97,116,97,0,98,116,72, 116,114,97,105,110,116,70,108,111,97,116,68,97,116,97,0,98,116,67,111,
105,110,103,101,67,111,110,115,116,114,97,105,110,116,70,108,111,97,116,68, 110,101,84,119,105,115,116,67,111,110,115,116,114,97,105,110,116,68,97,116,
97,116,97,0,98,116,67,111,110,101,84,119,105,115,116,67,111,110,115,116, 97,0,98,116,71,101,110,101,114,105,99,54,68,111,102,67,111,110,115,116,
114,97,105,110,116,68,97,116,97,0,98,116,71,101,110,101,114,105,99,54, 114,97,105,110,116,68,97,116,97,0,98,116,83,108,105,100,101,114,67,111,
68,111,102,67,111,110,115,116,114,97,105,110,116,68,97,116,97,0,98,116, 110,115,116,114,97,105,110,116,68,97,116,97,0,0,0,0,84,76,69,78,
83,108,105,100,101,114,67,111,110,115,116,114,97,105,110,116,68,97,116,97, 1,0,1,0,2,0,2,0,4,0,4,0,4,0,4,0,8,0,0,0,
0,0,0,0,84,76,69,78,1,0,1,0,2,0,2,0,4,0,4,0, 12,0,36,0,8,0,16,0,32,0,48,0,96,0,64,0,-128,0,12,0,
4,0,4,0,8,0,0,0,12,0,36,0,8,0,16,0,32,0,48,0, 52,0,52,0,20,0,64,0,4,0,4,0,24,0,28,0,48,0,76,0,
96,0,64,0,-128,0,12,0,52,0,52,0,20,0,64,0,4,0,4,0, 24,0,60,0,60,0,64,0,68,0,-56,1,-8,0,-32,1,-104,3,8,0,
24,0,28,0,48,0,76,0,24,0,60,0,60,0,64,0,68,0,-56,1, 40,0,0,0,72,0,104,0,80,1,-48,0,-56,0,-16,0,-64,0,0,0,
-8,0,-32,1,-104,3,8,0,88,0,0,0,120,0,-104,0,-128,1,0,1, 83,84,82,67,38,0,0,0,10,0,3,0,4,0,0,0,4,0,1,0,
-8,0,32,1,-16,0,0,0,83,84,82,67,38,0,0,0,10,0,3,0, 9,0,2,0,11,0,3,0,10,0,3,0,10,0,4,0,10,0,5,0,
4,0,0,0,4,0,1,0,9,0,2,0,11,0,3,0,10,0,3,0, 12,0,2,0,9,0,6,0,9,0,7,0,13,0,1,0,7,0,8,0,
10,0,4,0,10,0,5,0,12,0,2,0,9,0,6,0,9,0,7,0, 14,0,1,0,8,0,8,0,15,0,1,0,13,0,9,0,16,0,1,0,
13,0,1,0,7,0,8,0,14,0,1,0,8,0,8,0,15,0,1,0, 14,0,9,0,17,0,2,0,15,0,10,0,13,0,11,0,18,0,2,0,
13,0,9,0,16,0,1,0,14,0,9,0,17,0,2,0,15,0,10,0, 16,0,10,0,14,0,11,0,19,0,3,0,9,0,12,0,4,0,13,0,
13,0,11,0,18,0,2,0,16,0,10,0,14,0,11,0,19,0,3,0, 0,0,14,0,20,0,5,0,19,0,15,0,13,0,16,0,13,0,17,0,
9,0,12,0,4,0,13,0,0,0,14,0,20,0,5,0,19,0,15,0, 7,0,18,0,0,0,19,0,21,0,5,0,19,0,15,0,13,0,16,0,
13,0,16,0,13,0,17,0,7,0,18,0,0,0,19,0,21,0,5,0, 13,0,20,0,7,0,21,0,4,0,22,0,22,0,2,0,13,0,23,0,
19,0,15,0,13,0,16,0,13,0,20,0,7,0,21,0,4,0,22,0, 7,0,24,0,23,0,4,0,21,0,25,0,22,0,26,0,4,0,27,0,
22,0,2,0,13,0,23,0,7,0,24,0,23,0,4,0,21,0,25,0, 0,0,14,0,24,0,1,0,4,0,28,0,25,0,2,0,2,0,29,0,
22,0,26,0,4,0,27,0,0,0,14,0,24,0,1,0,4,0,28,0, 2,0,28,0,26,0,6,0,13,0,30,0,14,0,31,0,24,0,32,0,
25,0,2,0,2,0,29,0,2,0,28,0,26,0,6,0,13,0,30,0, 25,0,33,0,4,0,34,0,4,0,35,0,27,0,4,0,26,0,36,0,
14,0,31,0,24,0,32,0,25,0,33,0,4,0,34,0,4,0,35,0, 13,0,37,0,4,0,38,0,0,0,14,0,28,0,4,0,19,0,15,0,
27,0,4,0,26,0,36,0,13,0,37,0,4,0,38,0,0,0,14,0, 27,0,39,0,7,0,21,0,0,0,14,0,29,0,4,0,17,0,40,0,
28,0,4,0,19,0,15,0,27,0,39,0,7,0,21,0,0,0,14,0, 19,0,41,0,4,0,42,0,7,0,43,0,30,0,4,0,19,0,15,0,
29,0,4,0,17,0,40,0,19,0,41,0,4,0,42,0,7,0,43,0, 29,0,44,0,4,0,45,0,7,0,21,0,31,0,3,0,21,0,25,0,
30,0,4,0,19,0,15,0,29,0,44,0,4,0,45,0,7,0,21,0, 4,0,46,0,0,0,14,0,32,0,3,0,21,0,25,0,4,0,46,0,
31,0,3,0,21,0,25,0,4,0,46,0,0,0,14,0,32,0,3,0, 0,0,14,0,33,0,5,0,19,0,15,0,27,0,39,0,13,0,16,0,
21,0,25,0,4,0,46,0,0,0,14,0,33,0,5,0,19,0,15,0, 7,0,21,0,4,0,47,0,34,0,5,0,21,0,25,0,13,0,48,0,
27,0,39,0,13,0,16,0,7,0,21,0,4,0,47,0,34,0,5,0, 14,0,49,0,4,0,50,0,0,0,51,0,35,0,24,0,9,0,52,0,
21,0,25,0,13,0,48,0,14,0,49,0,4,0,50,0,0,0,51,0, 9,0,53,0,19,0,54,0,0,0,55,0,18,0,56,0,18,0,57,0,
35,0,24,0,9,0,52,0,9,0,53,0,19,0,54,0,9,0,55,0, 14,0,58,0,14,0,59,0,14,0,60,0,8,0,61,0,8,0,62,0,
18,0,56,0,18,0,57,0,14,0,58,0,14,0,59,0,14,0,60,0, 8,0,63,0,8,0,64,0,8,0,65,0,8,0,66,0,8,0,67,0,
8,0,61,0,8,0,62,0,8,0,63,0,8,0,64,0,8,0,65,0, 4,0,68,0,4,0,69,0,4,0,70,0,4,0,71,0,4,0,72,0,
8,0,66,0,8,0,67,0,4,0,68,0,4,0,69,0,4,0,70,0, 4,0,73,0,4,0,74,0,0,0,14,0,36,0,23,0,9,0,52,0,
4,0,71,0,4,0,72,0,4,0,73,0,4,0,74,0,0,0,14,0, 9,0,53,0,19,0,54,0,0,0,55,0,17,0,56,0,17,0,57,0,
36,0,23,0,9,0,52,0,9,0,53,0,19,0,54,0,9,0,55,0, 13,0,58,0,13,0,59,0,13,0,60,0,7,0,61,0,7,0,62,0,
17,0,56,0,17,0,57,0,13,0,58,0,13,0,59,0,13,0,60,0, 7,0,63,0,7,0,64,0,7,0,65,0,7,0,66,0,7,0,67,0,
7,0,61,0,7,0,62,0,7,0,63,0,7,0,64,0,7,0,65,0, 4,0,68,0,4,0,69,0,4,0,70,0,4,0,71,0,4,0,72,0,
7,0,66,0,7,0,67,0,4,0,68,0,4,0,69,0,4,0,70,0, 4,0,73,0,4,0,74,0,37,0,21,0,36,0,75,0,15,0,76,0,
4,0,71,0,4,0,72,0,4,0,73,0,4,0,74,0,37,0,21,0, 13,0,77,0,13,0,78,0,13,0,79,0,13,0,80,0,13,0,81,0,
36,0,75,0,15,0,76,0,13,0,77,0,13,0,78,0,13,0,79,0, 13,0,82,0,13,0,83,0,13,0,84,0,13,0,85,0,7,0,86,0,
13,0,80,0,13,0,81,0,13,0,82,0,13,0,83,0,13,0,84,0, 7,0,87,0,7,0,88,0,7,0,89,0,7,0,90,0,7,0,91,0,
13,0,85,0,7,0,86,0,7,0,87,0,7,0,88,0,7,0,89,0, 7,0,92,0,7,0,93,0,7,0,94,0,4,0,95,0,38,0,22,0,
7,0,90,0,7,0,91,0,7,0,92,0,7,0,93,0,7,0,94,0, 35,0,75,0,16,0,76,0,14,0,77,0,14,0,78,0,14,0,79,0,
4,0,95,0,38,0,22,0,35,0,75,0,16,0,76,0,14,0,77,0, 14,0,80,0,14,0,81,0,14,0,82,0,14,0,83,0,14,0,84,0,
14,0,78,0,14,0,79,0,14,0,80,0,14,0,81,0,14,0,82,0, 14,0,85,0,8,0,86,0,8,0,87,0,8,0,88,0,8,0,89,0,
14,0,83,0,14,0,84,0,14,0,85,0,8,0,86,0,8,0,87,0, 8,0,90,0,8,0,91,0,8,0,92,0,8,0,93,0,8,0,94,0,
8,0,88,0,8,0,89,0,8,0,90,0,8,0,91,0,8,0,92,0, 4,0,95,0,0,0,14,0,39,0,2,0,4,0,96,0,4,0,97,0,
8,0,93,0,8,0,94,0,4,0,95,0,0,0,14,0,39,0,2,0, 40,0,10,0,41,0,98,0,41,0,99,0,4,0,100,0,4,0,101,0,
4,0,96,0,4,0,97,0,40,0,13,0,41,0,98,0,41,0,99,0, 4,0,102,0,4,0,103,0,7,0,104,0,7,0,105,0,4,0,106,0,
13,0,100,0,13,0,101,0,13,0,102,0,4,0,103,0,4,0,104,0, 0,0,19,0,42,0,3,0,40,0,107,0,13,0,108,0,13,0,109,0,
4,0,105,0,4,0,106,0,7,0,107,0,7,0,108,0,4,0,109,0, 43,0,3,0,40,0,107,0,14,0,108,0,14,0,109,0,44,0,13,0,
0,0,19,0,42,0,3,0,40,0,110,0,13,0,111,0,13,0,112,0, 40,0,107,0,18,0,110,0,18,0,111,0,4,0,112,0,4,0,113,0,
43,0,3,0,40,0,110,0,14,0,111,0,14,0,112,0,44,0,13,0, 4,0,114,0,7,0,115,0,7,0,116,0,7,0,117,0,7,0,118,0,
40,0,110,0,18,0,113,0,18,0,114,0,4,0,115,0,4,0,116,0, 7,0,119,0,7,0,120,0,7,0,121,0,45,0,13,0,40,0,107,0,
4,0,117,0,7,0,118,0,7,0,119,0,7,0,120,0,7,0,121,0, 17,0,110,0,17,0,111,0,4,0,112,0,4,0,113,0,4,0,114,0,
7,0,122,0,7,0,123,0,7,0,124,0,45,0,13,0,40,0,110,0, 7,0,115,0,7,0,116,0,7,0,117,0,7,0,118,0,7,0,119,0,
17,0,113,0,17,0,114,0,4,0,115,0,4,0,116,0,4,0,117,0, 7,0,120,0,7,0,121,0,46,0,11,0,40,0,107,0,17,0,110,0,
7,0,118,0,7,0,119,0,7,0,120,0,7,0,121,0,7,0,122,0, 17,0,111,0,7,0,122,0,7,0,123,0,7,0,124,0,7,0,119,0,
7,0,123,0,7,0,124,0,46,0,11,0,40,0,110,0,17,0,113,0, 7,0,120,0,7,0,121,0,7,0,125,0,0,0,19,0,47,0,9,0,
17,0,114,0,7,0,125,0,7,0,126,0,7,0,127,0,7,0,122,0, 40,0,107,0,17,0,110,0,17,0,111,0,13,0,126,0,13,0,127,0,
7,0,123,0,7,0,124,0,7,0,-128,0,0,0,19,0,47,0,9,0, 13,0,-128,0,13,0,-127,0,4,0,-126,0,4,0,-125,0,48,0,9,0,
40,0,110,0,17,0,113,0,17,0,114,0,13,0,-127,0,13,0,-126,0, 40,0,107,0,17,0,110,0,17,0,111,0,7,0,126,0,7,0,127,0,
13,0,-125,0,13,0,-124,0,4,0,-123,0,4,0,-122,0,48,0,9,0, 7,0,-128,0,7,0,-127,0,4,0,-126,0,4,0,-125,0,};
40,0,110,0,17,0,113,0,17,0,114,0,7,0,-127,0,7,0,-126,0,
7,0,-125,0,7,0,-124,0,4,0,-123,0,4,0,-122,0,};
int sBulletDNAlen= sizeof(sBulletDNAstr); int sBulletDNAlen= sizeof(sBulletDNAstr);

View File

@@ -33,6 +33,20 @@ extern int sBulletDNAlen;
extern unsigned char sBulletDNAstr64[]; extern unsigned char sBulletDNAstr64[];
extern int sBulletDNAlen64; extern int sBulletDNAlen64;
SIMD_FORCE_INLINE int btStrLen(const char* str)
{
if (!str)
return(0);
int len = 0;
while (*str != 0)
{
str++;
len++;
}
return len;
}
class btChunk class btChunk
@@ -64,6 +78,12 @@ public:
virtual void finishSerialization() = 0; virtual void finishSerialization() = 0;
virtual const char* findNameForPointer(const void* ptr) const = 0;
virtual void registerNameForPointer(const void* ptr, const char* name) = 0;
virtual void serializeName(const char* ptr) = 0;
}; };
@@ -96,6 +116,9 @@ class btDefaultSerializer : public btSerializer
btHashMap<btHashPtr,void*> m_chunkP; btHashMap<btHashPtr,void*> m_chunkP;
btHashMap<btHashPtr,const char*> m_nameMap;
int m_totalSize; int m_totalSize;
unsigned char* m_buffer; unsigned char* m_buffer;
@@ -446,9 +469,44 @@ public:
return chunk; return chunk;
} }
virtual const char* findNameForPointer(const void* ptr) const
{
const char*const * namePtr = m_nameMap.find(ptr);
if (namePtr && *namePtr)
return *namePtr;
return 0;
}
virtual void registerNameForPointer(const void* ptr, const char* name)
{
m_nameMap.insert(ptr,name);
}
virtual void serializeName(const char* name)
{
if (name)
{
int len = btStrLen(name);
if (len)
{
int newLen = len+1;
int padding = ((newLen+3)&~3)-newLen;
newLen += padding;
//serialize name string now
btChunk* chunk = allocate(sizeof(char),newLen);
char* destinationName = (char*)chunk->m_oldPtr;
for (int i=0;i<len;i++)
{
destinationName[i] = name[i];
}
destinationName[len] = 0;
finalizeChunk(chunk,"char",BT_ARRAY_CODE,(void*)name);
}
}
}
}; };