summaryrefslogtreecommitdiff
path: root/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader
diff options
context:
space:
mode:
Diffstat (limited to 'thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader')
-rw-r--r--thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/autogenerated/bullet2.h1994
-rw-r--r--thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3BulletFile.cpp253
-rw-r--r--thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3BulletFile.h69
-rw-r--r--thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Chunk.cpp12
-rw-r--r--thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Chunk.h130
-rw-r--r--thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Common.h33
-rw-r--r--thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3DNA.cpp355
-rw-r--r--thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3DNA.h141
-rw-r--r--thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Defines.h199
-rw-r--r--thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3File.cpp990
-rw-r--r--thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3File.h253
-rw-r--r--thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Serializer.cpp18970
-rw-r--r--thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Serializer.h808
13 files changed, 20555 insertions, 3652 deletions
diff --git a/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/autogenerated/bullet2.h b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/autogenerated/bullet2.h
index a6b57b1a12..eaa27dfe8f 100644
--- a/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/autogenerated/bullet2.h
+++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/autogenerated/bullet2.h
@@ -19,1035 +19,969 @@
// Auto generated from Bullet/Extras/HeaderGenerator/bulletGenerate.py
#ifndef __BULLET2_H__
#define __BULLET2_H__
-namespace Bullet3SerializeBullet2 {
-
+namespace Bullet3SerializeBullet2
+{
// put an empty struct in the case
-typedef struct bInvalidHandle {
+typedef struct bInvalidHandle
+{
int unused;
-}bInvalidHandle;
-
- class PointerArray;
- class b3PhysicsSystem;
- class ListBase;
- class b3Vector3FloatData;
- class b3Vector3DoubleData;
- class b3Matrix3x3FloatData;
- class b3Matrix3x3DoubleData;
- class b3TransformFloatData;
- class b3TransformDoubleData;
- class b3BvhSubtreeInfoData;
- class b3OptimizedBvhNodeFloatData;
- class b3OptimizedBvhNodeDoubleData;
- class b3QuantizedBvhNodeData;
- class b3QuantizedBvhFloatData;
- class b3QuantizedBvhDoubleData;
- class b3CollisionShapeData;
- class b3StaticPlaneShapeData;
- class b3ConvexInternalShapeData;
- class b3PositionAndRadius;
- class b3MultiSphereShapeData;
- class b3IntIndexData;
- class b3ShortIntIndexData;
- class b3ShortIntIndexTripletData;
- class b3CharIndexTripletData;
- class b3MeshPartData;
- class b3StridingMeshInterfaceData;
- class b3TriangleMeshShapeData;
- class b3ScaledTriangleMeshShapeData;
- class b3CompoundShapeChildData;
- class b3CompoundShapeData;
- class b3CylinderShapeData;
- class b3CapsuleShapeData;
- class b3TriangleInfoData;
- class b3TriangleInfoMapData;
- class b3GImpactMeshShapeData;
- class b3ConvexHullShapeData;
- class b3CollisionObjectDoubleData;
- class b3CollisionObjectFloatData;
- class b3DynamicsWorldDoubleData;
- class b3DynamicsWorldFloatData;
- class b3RigidBodyFloatData;
- class b3RigidBodyDoubleData;
- class b3ConstraintInfo1;
- class b3TypedConstraintData;
- class b3Point2PointConstraintFloatData;
- class b3Point2PointConstraintDoubleData;
- class b3HingeConstraintDoubleData;
- class b3HingeConstraintFloatData;
- class b3ConeTwistConstraintData;
- class b3Generic6DofConstraintData;
- class b3Generic6DofSpringConstraintData;
- class b3SliderConstraintData;
- class b3ContactSolverInfoDoubleData;
- class b3ContactSolverInfoFloatData;
- class SoftBodyMaterialData;
- class SoftBodyNodeData;
- class SoftBodyLinkData;
- class SoftBodyFaceData;
- class SoftBodyTetraData;
- class SoftRigidAnchorData;
- class SoftBodyConfigData;
- class SoftBodyPoseData;
- class SoftBodyClusterData;
- class b3SoftBodyJointData;
- class b3SoftBodyFloatData;
-// -------------------------------------------------- //
- class PointerArray
- {
- public:
- int m_size;
- int m_capacity;
- void *m_data;
- };
-
-
-// -------------------------------------------------- //
- class b3PhysicsSystem
- {
- public:
- PointerArray m_collisionShapes;
- PointerArray m_collisionObjects;
- PointerArray m_constraints;
- };
-
-
-// -------------------------------------------------- //
- class ListBase
- {
- public:
- void *first;
- void *last;
- };
-
-
-// -------------------------------------------------- //
- class b3Vector3FloatData
- {
- public:
- float m_floats[4];
- };
-
-
-// -------------------------------------------------- //
- class b3Vector3DoubleData
- {
- public:
- double m_floats[4];
- };
-
-
-// -------------------------------------------------- //
- class b3Matrix3x3FloatData
- {
- public:
- b3Vector3FloatData m_el[3];
- };
-
-
-// -------------------------------------------------- //
- class b3Matrix3x3DoubleData
- {
- public:
- b3Vector3DoubleData m_el[3];
- };
-
-
-// -------------------------------------------------- //
- class b3TransformFloatData
- {
- public:
- b3Matrix3x3FloatData m_basis;
- b3Vector3FloatData m_origin;
- };
-
-
-// -------------------------------------------------- //
- class b3TransformDoubleData
- {
- public:
- b3Matrix3x3DoubleData m_basis;
- b3Vector3DoubleData m_origin;
- };
-
-
-// -------------------------------------------------- //
- class b3BvhSubtreeInfoData
- {
- public:
- int m_rootNodeIndex;
- int m_subtreeSize;
- short m_quantizedAabbMin[3];
- short m_quantizedAabbMax[3];
- };
-
-
-// -------------------------------------------------- //
- class b3OptimizedBvhNodeFloatData
- {
- public:
- b3Vector3FloatData m_aabbMinOrg;
- b3Vector3FloatData m_aabbMaxOrg;
- int m_escapeIndex;
- int m_subPart;
- int m_triangleIndex;
- char m_pad[4];
- };
-
-
-// -------------------------------------------------- //
- class b3OptimizedBvhNodeDoubleData
- {
- public:
- b3Vector3DoubleData m_aabbMinOrg;
- b3Vector3DoubleData m_aabbMaxOrg;
- int m_escapeIndex;
- int m_subPart;
- int m_triangleIndex;
- char m_pad[4];
- };
-
-
-// -------------------------------------------------- //
- class b3QuantizedBvhNodeData
- {
- public:
- short m_quantizedAabbMin[3];
- short m_quantizedAabbMax[3];
- int m_escapeIndexOrTriangleIndex;
- };
-
-
-// -------------------------------------------------- //
- class b3QuantizedBvhFloatData
- {
- public:
- b3Vector3FloatData m_bvhAabbMin;
- b3Vector3FloatData m_bvhAabbMax;
- b3Vector3FloatData m_bvhQuantization;
- int m_curNodeIndex;
- int m_useQuantization;
- int m_numContiguousLeafNodes;
- int m_numQuantizedContiguousNodes;
- b3OptimizedBvhNodeFloatData *m_contiguousNodesPtr;
- b3QuantizedBvhNodeData *m_quantizedContiguousNodesPtr;
- b3BvhSubtreeInfoData *m_subTreeInfoPtr;
- int m_traversalMode;
- int m_numSubtreeHeaders;
- };
-
-
-// -------------------------------------------------- //
- class b3QuantizedBvhDoubleData
- {
- public:
- b3Vector3DoubleData m_bvhAabbMin;
- b3Vector3DoubleData m_bvhAabbMax;
- b3Vector3DoubleData m_bvhQuantization;
- int m_curNodeIndex;
- int m_useQuantization;
- int m_numContiguousLeafNodes;
- int m_numQuantizedContiguousNodes;
- b3OptimizedBvhNodeDoubleData *m_contiguousNodesPtr;
- b3QuantizedBvhNodeData *m_quantizedContiguousNodesPtr;
- int m_traversalMode;
- int m_numSubtreeHeaders;
- b3BvhSubtreeInfoData *m_subTreeInfoPtr;
- };
-
-
-// -------------------------------------------------- //
- class b3CollisionShapeData
- {
- public:
- char *m_name;
- int m_shapeType;
- char m_padding[4];
- };
-
-
-// -------------------------------------------------- //
- class b3StaticPlaneShapeData
- {
- public:
- b3CollisionShapeData m_collisionShapeData;
- b3Vector3FloatData m_localScaling;
- b3Vector3FloatData m_planeNormal;
- float m_planeConstant;
- char m_pad[4];
- };
-
-
-// -------------------------------------------------- //
- class b3ConvexInternalShapeData
- {
- public:
- b3CollisionShapeData m_collisionShapeData;
- b3Vector3FloatData m_localScaling;
- b3Vector3FloatData m_implicitShapeDimensions;
- float m_collisionMargin;
- int m_padding;
- };
-
-
-// -------------------------------------------------- //
- class b3PositionAndRadius
- {
- public:
- b3Vector3FloatData m_pos;
- float m_radius;
- };
-
-
-// -------------------------------------------------- //
- class b3MultiSphereShapeData
- {
- public:
- b3ConvexInternalShapeData m_convexInternalShapeData;
- b3PositionAndRadius *m_localPositionArrayPtr;
- int m_localPositionArraySize;
- char m_padding[4];
- };
-
-
-// -------------------------------------------------- //
- class b3IntIndexData
- {
- public:
- int m_value;
- };
-
-
-// -------------------------------------------------- //
- class b3ShortIntIndexData
- {
- public:
- short m_value;
- char m_pad[2];
- };
-
-
-// -------------------------------------------------- //
- class b3ShortIntIndexTripletData
- {
- public:
- short m_values[3];
- char m_pad[2];
- };
-
-
-// -------------------------------------------------- //
- class b3CharIndexTripletData
- {
- public:
- char m_values[3];
- char m_pad;
- };
-
-
-// -------------------------------------------------- //
- class b3MeshPartData
- {
- public:
- b3Vector3FloatData *m_vertices3f;
- b3Vector3DoubleData *m_vertices3d;
- b3IntIndexData *m_indices32;
- b3ShortIntIndexTripletData *m_3indices16;
- b3CharIndexTripletData *m_3indices8;
- b3ShortIntIndexData *m_indices16;
- int m_numTriangles;
- int m_numVertices;
- };
-
-
-// -------------------------------------------------- //
- class b3StridingMeshInterfaceData
- {
- public:
- b3MeshPartData *m_meshPartsPtr;
- b3Vector3FloatData m_scaling;
- int m_numMeshParts;
- char m_padding[4];
- };
-
-
-// -------------------------------------------------- //
- class b3TriangleMeshShapeData
- {
- public:
- b3CollisionShapeData m_collisionShapeData;
- b3StridingMeshInterfaceData m_meshInterface;
- b3QuantizedBvhFloatData *m_quantizedFloatBvh;
- b3QuantizedBvhDoubleData *m_quantizedDoubleBvh;
- b3TriangleInfoMapData *m_triangleInfoMap;
- float m_collisionMargin;
- char m_pad3[4];
- };
-
-
-// -------------------------------------------------- //
- class b3ScaledTriangleMeshShapeData
- {
- public:
- b3TriangleMeshShapeData m_trimeshShapeData;
- b3Vector3FloatData m_localScaling;
- };
-
-
-// -------------------------------------------------- //
- class b3CompoundShapeChildData
- {
- public:
- b3TransformFloatData m_transform;
- b3CollisionShapeData *m_childShape;
- int m_childShapeType;
- float m_childMargin;
- };
-
-
-// -------------------------------------------------- //
- class b3CompoundShapeData
- {
- public:
- b3CollisionShapeData m_collisionShapeData;
- b3CompoundShapeChildData *m_childShapePtr;
- int m_numChildShapes;
- float m_collisionMargin;
- };
-
-
-// -------------------------------------------------- //
- class b3CylinderShapeData
- {
- public:
- b3ConvexInternalShapeData m_convexInternalShapeData;
- int m_upAxis;
- char m_padding[4];
- };
-
-
-// -------------------------------------------------- //
- class b3CapsuleShapeData
- {
- public:
- b3ConvexInternalShapeData m_convexInternalShapeData;
- int m_upAxis;
- char m_padding[4];
- };
-
-
-// -------------------------------------------------- //
- class b3TriangleInfoData
- {
- public:
- int m_flags;
- float m_edgeV0V1Angle;
- float m_edgeV1V2Angle;
- float m_edgeV2V0Angle;
- };
-
-
-// -------------------------------------------------- //
- class b3TriangleInfoMapData
- {
- public:
- int *m_hashTablePtr;
- int *m_nextPtr;
- b3TriangleInfoData *m_valueArrayPtr;
- int *m_keyArrayPtr;
- float m_convexEpsilon;
- float m_planarEpsilon;
- float m_equalVertexThreshold;
- float m_edgeDistanceThreshold;
- float m_zeroAreaThreshold;
- int m_nextSize;
- int m_hashTableSize;
- int m_numValues;
- int m_numKeys;
- char m_padding[4];
- };
-
-
-// -------------------------------------------------- //
- class b3GImpactMeshShapeData
- {
- public:
- b3CollisionShapeData m_collisionShapeData;
- b3StridingMeshInterfaceData m_meshInterface;
- b3Vector3FloatData m_localScaling;
- float m_collisionMargin;
- int m_gimpactSubType;
- };
-
-
-// -------------------------------------------------- //
- class b3ConvexHullShapeData
- {
- public:
- b3ConvexInternalShapeData m_convexInternalShapeData;
- b3Vector3FloatData *m_unscaledPointsFloatPtr;
- b3Vector3DoubleData *m_unscaledPointsDoublePtr;
- int m_numUnscaledPoints;
- char m_padding3[4];
- };
-
-
-// -------------------------------------------------- //
- class b3CollisionObjectDoubleData
- {
- public:
- void *m_broadphaseHandle;
- void *m_collisionShape;
- b3CollisionShapeData *m_rootCollisionShape;
- char *m_name;
- b3TransformDoubleData m_worldTransform;
- b3TransformDoubleData m_interpolationWorldTransform;
- b3Vector3DoubleData m_interpolationLinearVelocity;
- b3Vector3DoubleData m_interpolationAngularVelocity;
- b3Vector3DoubleData m_anisotropicFriction;
- double m_contactProcessingThreshold;
- double m_deactivationTime;
- double m_friction;
- double m_rollingFriction;
- double m_restitution;
- double m_hitFraction;
- double m_ccdSweptSphereRadius;
- double m_ccdMotionThreshold;
- int m_hasAnisotropicFriction;
- int m_collisionFlags;
- int m_islandTag1;
- int m_companionId;
- int m_activationState1;
- int m_internalType;
- int m_checkCollideWith;
- char m_padding[4];
- };
-
-
-// -------------------------------------------------- //
- class b3CollisionObjectFloatData
- {
- public:
- void *m_broadphaseHandle;
- void *m_collisionShape;
- b3CollisionShapeData *m_rootCollisionShape;
- char *m_name;
- b3TransformFloatData m_worldTransform;
- b3TransformFloatData m_interpolationWorldTransform;
- b3Vector3FloatData m_interpolationLinearVelocity;
- b3Vector3FloatData m_interpolationAngularVelocity;
- b3Vector3FloatData m_anisotropicFriction;
- float m_contactProcessingThreshold;
- float m_deactivationTime;
- float m_friction;
- float m_rollingFriction;
- float m_restitution;
- float m_hitFraction;
- float m_ccdSweptSphereRadius;
- float m_ccdMotionThreshold;
- int m_hasAnisotropicFriction;
- int m_collisionFlags;
- int m_islandTag1;
- int m_companionId;
- int m_activationState1;
- int m_internalType;
- int m_checkCollideWith;
- char m_padding[4];
- };
-
-
-
-// -------------------------------------------------- //
- class b3RigidBodyFloatData
- {
- public:
- b3CollisionObjectFloatData m_collisionObjectData;
- b3Matrix3x3FloatData m_invInertiaTensorWorld;
- b3Vector3FloatData m_linearVelocity;
- b3Vector3FloatData m_angularVelocity;
- b3Vector3FloatData m_angularFactor;
- b3Vector3FloatData m_linearFactor;
- b3Vector3FloatData m_gravity;
- b3Vector3FloatData m_gravity_acceleration;
- b3Vector3FloatData m_invInertiaLocal;
- b3Vector3FloatData m_totalForce;
- b3Vector3FloatData m_totalTorque;
- float m_inverseMass;
- float m_linearDamping;
- float m_angularDamping;
- float m_additionalDampingFactor;
- float m_additionalLinearDampingThresholdSqr;
- float m_additionalAngularDampingThresholdSqr;
- float m_additionalAngularDampingFactor;
- float m_linearSleepingThreshold;
- float m_angularSleepingThreshold;
- int m_additionalDamping;
- };
-
-
-// -------------------------------------------------- //
- class b3RigidBodyDoubleData
- {
- public:
- b3CollisionObjectDoubleData m_collisionObjectData;
- b3Matrix3x3DoubleData m_invInertiaTensorWorld;
- b3Vector3DoubleData m_linearVelocity;
- b3Vector3DoubleData m_angularVelocity;
- b3Vector3DoubleData m_angularFactor;
- b3Vector3DoubleData m_linearFactor;
- b3Vector3DoubleData m_gravity;
- b3Vector3DoubleData m_gravity_acceleration;
- b3Vector3DoubleData m_invInertiaLocal;
- b3Vector3DoubleData m_totalForce;
- b3Vector3DoubleData m_totalTorque;
- double m_inverseMass;
- double m_linearDamping;
- double m_angularDamping;
- double m_additionalDampingFactor;
- double m_additionalLinearDampingThresholdSqr;
- double m_additionalAngularDampingThresholdSqr;
- double m_additionalAngularDampingFactor;
- double m_linearSleepingThreshold;
- double m_angularSleepingThreshold;
- int m_additionalDamping;
- char m_padding[4];
- };
-
-
-// -------------------------------------------------- //
- class b3ConstraintInfo1
- {
- public:
- int m_numConstraintRows;
- int nub;
- };
-
-
-// -------------------------------------------------- //
- class b3TypedConstraintData
- {
- public:
- bInvalidHandle *m_rbA;
- bInvalidHandle *m_rbB;
- char *m_name;
- int m_objectType;
- int m_userConstraintType;
- int m_userConstraintId;
- int m_needsFeedback;
- float m_appliedImpulse;
- float m_dbgDrawSize;
- int m_disableCollisionsBetweenLinkedBodies;
- int m_overrideNumSolverIterations;
- float m_breakingImpulseThreshold;
- int m_isEnabled;
- };
-
-
-// -------------------------------------------------- //
- class b3Point2PointConstraintFloatData
- {
- public:
- b3TypedConstraintData m_typeConstraintData;
- b3Vector3FloatData m_pivotInA;
- b3Vector3FloatData m_pivotInB;
- };
-
-
-// -------------------------------------------------- //
- class b3Point2PointConstraintDoubleData
- {
- public:
- b3TypedConstraintData m_typeConstraintData;
- b3Vector3DoubleData m_pivotInA;
- b3Vector3DoubleData m_pivotInB;
- };
-
-
-// -------------------------------------------------- //
- class b3HingeConstraintDoubleData
- {
- public:
- b3TypedConstraintData m_typeConstraintData;
- b3TransformDoubleData m_rbAFrame;
- b3TransformDoubleData m_rbBFrame;
- int m_useReferenceFrameA;
- int m_angularOnly;
- int m_enableAngularMotor;
- float m_motorTargetVelocity;
- float m_maxMotorImpulse;
- float m_lowerLimit;
- float m_upperLimit;
- float m_limitSoftness;
- float m_biasFactor;
- float m_relaxationFactor;
- };
-
-
-// -------------------------------------------------- //
- class b3HingeConstraintFloatData
- {
- public:
- b3TypedConstraintData m_typeConstraintData;
- b3TransformFloatData m_rbAFrame;
- b3TransformFloatData m_rbBFrame;
- int m_useReferenceFrameA;
- int m_angularOnly;
- int m_enableAngularMotor;
- float m_motorTargetVelocity;
- float m_maxMotorImpulse;
- float m_lowerLimit;
- float m_upperLimit;
- float m_limitSoftness;
- float m_biasFactor;
- float m_relaxationFactor;
- };
-
-
-// -------------------------------------------------- //
- class b3ConeTwistConstraintData
- {
- public:
- b3TypedConstraintData m_typeConstraintData;
- b3TransformFloatData m_rbAFrame;
- b3TransformFloatData m_rbBFrame;
- float m_swingSpan1;
- float m_swingSpan2;
- float m_twistSpan;
- float m_limitSoftness;
- float m_biasFactor;
- float m_relaxationFactor;
- float m_damping;
- char m_pad[4];
- };
-
-
-// -------------------------------------------------- //
- class b3Generic6DofConstraintData
- {
- public:
- b3TypedConstraintData m_typeConstraintData;
- b3TransformFloatData m_rbAFrame;
- b3TransformFloatData m_rbBFrame;
- b3Vector3FloatData m_linearUpperLimit;
- b3Vector3FloatData m_linearLowerLimit;
- b3Vector3FloatData m_angularUpperLimit;
- b3Vector3FloatData m_angularLowerLimit;
- int m_useLinearReferenceFrameA;
- int m_useOffsetForConstraintFrame;
- };
-
-
-// -------------------------------------------------- //
- class b3Generic6DofSpringConstraintData
- {
- public:
- b3Generic6DofConstraintData m_6dofData;
- int m_springEnabled[6];
- float m_equilibriumPoint[6];
- float m_springStiffness[6];
- float m_springDamping[6];
- };
-
-
-// -------------------------------------------------- //
- class b3SliderConstraintData
- {
- public:
- b3TypedConstraintData m_typeConstraintData;
- b3TransformFloatData m_rbAFrame;
- b3TransformFloatData m_rbBFrame;
- float m_linearUpperLimit;
- float m_linearLowerLimit;
- float m_angularUpperLimit;
- float m_angularLowerLimit;
- int m_useLinearReferenceFrameA;
- int m_useOffsetForConstraintFrame;
- };
-
-
-// -------------------------------------------------- //
- class b3ContactSolverInfoDoubleData
- {
- public:
- double m_tau;
- double m_damping;
- double m_friction;
- double m_timeStep;
- double m_restitution;
- double m_maxErrorReduction;
- double m_sor;
- double m_erp;
- double m_erp2;
- double m_globalCfm;
- double m_splitImpulsePenetrationThreshold;
- double m_splitImpulseTurnErp;
- double m_linearSlop;
- double m_warmstartingFactor;
- double m_maxGyroscopicForce;
- double m_singleAxisRollingFrictionThreshold;
- int m_numIterations;
- int m_solverMode;
- int m_restingContactRestitutionThreshold;
- int m_minimumSolverBatchSize;
- int m_splitImpulse;
- char m_padding[4];
- };
-
-
-// -------------------------------------------------- //
- class b3ContactSolverInfoFloatData
- {
- public:
- float m_tau;
- float m_damping;
- float m_friction;
- float m_timeStep;
- float m_restitution;
- float m_maxErrorReduction;
- float m_sor;
- float m_erp;
- float m_erp2;
- float m_globalCfm;
- float m_splitImpulsePenetrationThreshold;
- float m_splitImpulseTurnErp;
- float m_linearSlop;
- float m_warmstartingFactor;
- float m_maxGyroscopicForce;
- float m_singleAxisRollingFrictionThreshold;
- int m_numIterations;
- int m_solverMode;
- int m_restingContactRestitutionThreshold;
- int m_minimumSolverBatchSize;
- int m_splitImpulse;
- char m_padding[4];
- };
-
-
- // -------------------------------------------------- //
- class b3DynamicsWorldDoubleData
- {
- public:
- b3ContactSolverInfoDoubleData m_solverInfo;
- b3Vector3DoubleData m_gravity;
- };
-
-
-// -------------------------------------------------- //
- class b3DynamicsWorldFloatData
- {
- public:
- b3ContactSolverInfoFloatData m_solverInfo;
- b3Vector3FloatData m_gravity;
- };
-
-
-
-// -------------------------------------------------- //
- class SoftBodyMaterialData
- {
- public:
- float m_linearStiffness;
- float m_angularStiffness;
- float m_volumeStiffness;
- int m_flags;
- };
-
-
-// -------------------------------------------------- //
- class SoftBodyNodeData
- {
- public:
- SoftBodyMaterialData *m_material;
- b3Vector3FloatData m_position;
- b3Vector3FloatData m_previousPosition;
- b3Vector3FloatData m_velocity;
- b3Vector3FloatData m_accumulatedForce;
- b3Vector3FloatData m_normal;
- float m_inverseMass;
- float m_area;
- int m_attach;
- int m_pad;
- };
-
-
-// -------------------------------------------------- //
- class SoftBodyLinkData
- {
- public:
- SoftBodyMaterialData *m_material;
- int m_nodeIndices[2];
- float m_restLength;
- int m_bbending;
- };
-
-
-// -------------------------------------------------- //
- class SoftBodyFaceData
- {
- public:
- b3Vector3FloatData m_normal;
- SoftBodyMaterialData *m_material;
- int m_nodeIndices[3];
- float m_restArea;
- };
-
-
-// -------------------------------------------------- //
- class SoftBodyTetraData
- {
- public:
- b3Vector3FloatData m_c0[4];
- SoftBodyMaterialData *m_material;
- int m_nodeIndices[4];
- float m_restVolume;
- float m_c1;
- float m_c2;
- int m_pad;
- };
-
-
-// -------------------------------------------------- //
- class SoftRigidAnchorData
- {
- public:
- b3Matrix3x3FloatData m_c0;
- b3Vector3FloatData m_c1;
- b3Vector3FloatData m_localFrame;
- bInvalidHandle *m_rigidBody;
- int m_nodeIndex;
- float m_c2;
- };
-
-
-// -------------------------------------------------- //
- class SoftBodyConfigData
- {
- public:
- int m_aeroModel;
- float m_baumgarte;
- float m_damping;
- float m_drag;
- float m_lift;
- float m_pressure;
- float m_volume;
- float m_dynamicFriction;
- float m_poseMatch;
- float m_rigidContactHardness;
- float m_kineticContactHardness;
- float m_softContactHardness;
- float m_anchorHardness;
- float m_softRigidClusterHardness;
- float m_softKineticClusterHardness;
- float m_softSoftClusterHardness;
- float m_softRigidClusterImpulseSplit;
- float m_softKineticClusterImpulseSplit;
- float m_softSoftClusterImpulseSplit;
- float m_maxVolume;
- float m_timeScale;
- int m_velocityIterations;
- int m_positionIterations;
- int m_driftIterations;
- int m_clusterIterations;
- int m_collisionFlags;
- };
-
-
-// -------------------------------------------------- //
- class SoftBodyPoseData
- {
- public:
- b3Matrix3x3FloatData m_rot;
- b3Matrix3x3FloatData m_scale;
- b3Matrix3x3FloatData m_aqq;
- b3Vector3FloatData m_com;
- b3Vector3FloatData *m_positions;
- float *m_weights;
- int m_numPositions;
- int m_numWeigts;
- int m_bvolume;
- int m_bframe;
- float m_restVolume;
- int m_pad;
- };
-
-
-// -------------------------------------------------- //
- class SoftBodyClusterData
- {
- public:
- b3TransformFloatData m_framexform;
- b3Matrix3x3FloatData m_locii;
- b3Matrix3x3FloatData m_invwi;
- b3Vector3FloatData m_com;
- b3Vector3FloatData m_vimpulses[2];
- b3Vector3FloatData m_dimpulses[2];
- b3Vector3FloatData m_lv;
- b3Vector3FloatData m_av;
- b3Vector3FloatData *m_framerefs;
- int *m_nodeIndices;
- float *m_masses;
- int m_numFrameRefs;
- int m_numNodes;
- int m_numMasses;
- float m_idmass;
- float m_imass;
- int m_nvimpulses;
- int m_ndimpulses;
- float m_ndamping;
- float m_ldamping;
- float m_adamping;
- float m_matching;
- float m_maxSelfCollisionImpulse;
- float m_selfCollisionImpulseFactor;
- int m_containsAnchor;
- int m_collide;
- int m_clusterIndex;
- };
-
-
-// -------------------------------------------------- //
- class b3SoftBodyJointData
- {
- public:
- void *m_bodyA;
- void *m_bodyB;
- b3Vector3FloatData m_refs[2];
- float m_cfm;
- float m_erp;
- float m_split;
- int m_delete;
- b3Vector3FloatData m_relPosition[2];
- int m_bodyAtype;
- int m_bodyBtype;
- int m_jointType;
- int m_pad;
- };
-
-
-// -------------------------------------------------- //
- class b3SoftBodyFloatData
- {
- public:
- b3CollisionObjectFloatData m_collisionObjectData;
- SoftBodyPoseData *m_pose;
- SoftBodyMaterialData **m_materials;
- SoftBodyNodeData *m_nodes;
- SoftBodyLinkData *m_links;
- SoftBodyFaceData *m_faces;
- SoftBodyTetraData *m_tetrahedra;
- SoftRigidAnchorData *m_anchors;
- SoftBodyClusterData *m_clusters;
- b3SoftBodyJointData *m_joints;
- int m_numMaterials;
- int m_numNodes;
- int m_numLinks;
- int m_numFaces;
- int m_numTetrahedra;
- int m_numAnchors;
- int m_numClusters;
- int m_numJoints;
- SoftBodyConfigData m_config;
- };
-
-
-}
-#endif//__BULLET2_H__ \ No newline at end of file
+} bInvalidHandle;
+
+class PointerArray;
+class b3PhysicsSystem;
+class ListBase;
+class b3Vector3FloatData;
+class b3Vector3DoubleData;
+class b3Matrix3x3FloatData;
+class b3Matrix3x3DoubleData;
+class b3TransformFloatData;
+class b3TransformDoubleData;
+class b3BvhSubtreeInfoData;
+class b3OptimizedBvhNodeFloatData;
+class b3OptimizedBvhNodeDoubleData;
+class b3QuantizedBvhNodeData;
+class b3QuantizedBvhFloatData;
+class b3QuantizedBvhDoubleData;
+class b3CollisionShapeData;
+class b3StaticPlaneShapeData;
+class b3ConvexInternalShapeData;
+class b3PositionAndRadius;
+class b3MultiSphereShapeData;
+class b3IntIndexData;
+class b3ShortIntIndexData;
+class b3ShortIntIndexTripletData;
+class b3CharIndexTripletData;
+class b3MeshPartData;
+class b3StridingMeshInterfaceData;
+class b3TriangleMeshShapeData;
+class b3ScaledTriangleMeshShapeData;
+class b3CompoundShapeChildData;
+class b3CompoundShapeData;
+class b3CylinderShapeData;
+class b3CapsuleShapeData;
+class b3TriangleInfoData;
+class b3TriangleInfoMapData;
+class b3GImpactMeshShapeData;
+class b3ConvexHullShapeData;
+class b3CollisionObjectDoubleData;
+class b3CollisionObjectFloatData;
+class b3DynamicsWorldDoubleData;
+class b3DynamicsWorldFloatData;
+class b3RigidBodyFloatData;
+class b3RigidBodyDoubleData;
+class b3ConstraintInfo1;
+class b3TypedConstraintData;
+class b3Point2PointConstraintFloatData;
+class b3Point2PointConstraintDoubleData;
+class b3HingeConstraintDoubleData;
+class b3HingeConstraintFloatData;
+class b3ConeTwistConstraintData;
+class b3Generic6DofConstraintData;
+class b3Generic6DofSpringConstraintData;
+class b3SliderConstraintData;
+class b3ContactSolverInfoDoubleData;
+class b3ContactSolverInfoFloatData;
+class SoftBodyMaterialData;
+class SoftBodyNodeData;
+class SoftBodyLinkData;
+class SoftBodyFaceData;
+class SoftBodyTetraData;
+class SoftRigidAnchorData;
+class SoftBodyConfigData;
+class SoftBodyPoseData;
+class SoftBodyClusterData;
+class b3SoftBodyJointData;
+class b3SoftBodyFloatData;
+// -------------------------------------------------- //
+class PointerArray
+{
+public:
+ int m_size;
+ int m_capacity;
+ void *m_data;
+};
+
+// -------------------------------------------------- //
+class b3PhysicsSystem
+{
+public:
+ PointerArray m_collisionShapes;
+ PointerArray m_collisionObjects;
+ PointerArray m_constraints;
+};
+
+// -------------------------------------------------- //
+class ListBase
+{
+public:
+ void *first;
+ void *last;
+};
+
+// -------------------------------------------------- //
+class b3Vector3FloatData
+{
+public:
+ float m_floats[4];
+};
+
+// -------------------------------------------------- //
+class b3Vector3DoubleData
+{
+public:
+ double m_floats[4];
+};
+
+// -------------------------------------------------- //
+class b3Matrix3x3FloatData
+{
+public:
+ b3Vector3FloatData m_el[3];
+};
+
+// -------------------------------------------------- //
+class b3Matrix3x3DoubleData
+{
+public:
+ b3Vector3DoubleData m_el[3];
+};
+
+// -------------------------------------------------- //
+class b3TransformFloatData
+{
+public:
+ b3Matrix3x3FloatData m_basis;
+ b3Vector3FloatData m_origin;
+};
+
+// -------------------------------------------------- //
+class b3TransformDoubleData
+{
+public:
+ b3Matrix3x3DoubleData m_basis;
+ b3Vector3DoubleData m_origin;
+};
+
+// -------------------------------------------------- //
+class b3BvhSubtreeInfoData
+{
+public:
+ int m_rootNodeIndex;
+ int m_subtreeSize;
+ short m_quantizedAabbMin[3];
+ short m_quantizedAabbMax[3];
+};
+
+// -------------------------------------------------- //
+class b3OptimizedBvhNodeFloatData
+{
+public:
+ b3Vector3FloatData m_aabbMinOrg;
+ b3Vector3FloatData m_aabbMaxOrg;
+ int m_escapeIndex;
+ int m_subPart;
+ int m_triangleIndex;
+ char m_pad[4];
+};
+
+// -------------------------------------------------- //
+class b3OptimizedBvhNodeDoubleData
+{
+public:
+ b3Vector3DoubleData m_aabbMinOrg;
+ b3Vector3DoubleData m_aabbMaxOrg;
+ int m_escapeIndex;
+ int m_subPart;
+ int m_triangleIndex;
+ char m_pad[4];
+};
+
+// -------------------------------------------------- //
+class b3QuantizedBvhNodeData
+{
+public:
+ short m_quantizedAabbMin[3];
+ short m_quantizedAabbMax[3];
+ int m_escapeIndexOrTriangleIndex;
+};
+
+// -------------------------------------------------- //
+class b3QuantizedBvhFloatData
+{
+public:
+ b3Vector3FloatData m_bvhAabbMin;
+ b3Vector3FloatData m_bvhAabbMax;
+ b3Vector3FloatData m_bvhQuantization;
+ int m_curNodeIndex;
+ int m_useQuantization;
+ int m_numContiguousLeafNodes;
+ int m_numQuantizedContiguousNodes;
+ b3OptimizedBvhNodeFloatData *m_contiguousNodesPtr;
+ b3QuantizedBvhNodeData *m_quantizedContiguousNodesPtr;
+ b3BvhSubtreeInfoData *m_subTreeInfoPtr;
+ int m_traversalMode;
+ int m_numSubtreeHeaders;
+};
+
+// -------------------------------------------------- //
+class b3QuantizedBvhDoubleData
+{
+public:
+ b3Vector3DoubleData m_bvhAabbMin;
+ b3Vector3DoubleData m_bvhAabbMax;
+ b3Vector3DoubleData m_bvhQuantization;
+ int m_curNodeIndex;
+ int m_useQuantization;
+ int m_numContiguousLeafNodes;
+ int m_numQuantizedContiguousNodes;
+ b3OptimizedBvhNodeDoubleData *m_contiguousNodesPtr;
+ b3QuantizedBvhNodeData *m_quantizedContiguousNodesPtr;
+ int m_traversalMode;
+ int m_numSubtreeHeaders;
+ b3BvhSubtreeInfoData *m_subTreeInfoPtr;
+};
+
+// -------------------------------------------------- //
+class b3CollisionShapeData
+{
+public:
+ char *m_name;
+ int m_shapeType;
+ char m_padding[4];
+};
+
+// -------------------------------------------------- //
+class b3StaticPlaneShapeData
+{
+public:
+ b3CollisionShapeData m_collisionShapeData;
+ b3Vector3FloatData m_localScaling;
+ b3Vector3FloatData m_planeNormal;
+ float m_planeConstant;
+ char m_pad[4];
+};
+
+// -------------------------------------------------- //
+class b3ConvexInternalShapeData
+{
+public:
+ b3CollisionShapeData m_collisionShapeData;
+ b3Vector3FloatData m_localScaling;
+ b3Vector3FloatData m_implicitShapeDimensions;
+ float m_collisionMargin;
+ int m_padding;
+};
+
+// -------------------------------------------------- //
+class b3PositionAndRadius
+{
+public:
+ b3Vector3FloatData m_pos;
+ float m_radius;
+};
+
+// -------------------------------------------------- //
+class b3MultiSphereShapeData
+{
+public:
+ b3ConvexInternalShapeData m_convexInternalShapeData;
+ b3PositionAndRadius *m_localPositionArrayPtr;
+ int m_localPositionArraySize;
+ char m_padding[4];
+};
+
+// -------------------------------------------------- //
+class b3IntIndexData
+{
+public:
+ int m_value;
+};
+
+// -------------------------------------------------- //
+class b3ShortIntIndexData
+{
+public:
+ short m_value;
+ char m_pad[2];
+};
+
+// -------------------------------------------------- //
+class b3ShortIntIndexTripletData
+{
+public:
+ short m_values[3];
+ char m_pad[2];
+};
+
+// -------------------------------------------------- //
+class b3CharIndexTripletData
+{
+public:
+ char m_values[3];
+ char m_pad;
+};
+
+// -------------------------------------------------- //
+class b3MeshPartData
+{
+public:
+ b3Vector3FloatData *m_vertices3f;
+ b3Vector3DoubleData *m_vertices3d;
+ b3IntIndexData *m_indices32;
+ b3ShortIntIndexTripletData *m_3indices16;
+ b3CharIndexTripletData *m_3indices8;
+ b3ShortIntIndexData *m_indices16;
+ int m_numTriangles;
+ int m_numVertices;
+};
+
+// -------------------------------------------------- //
+class b3StridingMeshInterfaceData
+{
+public:
+ b3MeshPartData *m_meshPartsPtr;
+ b3Vector3FloatData m_scaling;
+ int m_numMeshParts;
+ char m_padding[4];
+};
+
+// -------------------------------------------------- //
+class b3TriangleMeshShapeData
+{
+public:
+ b3CollisionShapeData m_collisionShapeData;
+ b3StridingMeshInterfaceData m_meshInterface;
+ b3QuantizedBvhFloatData *m_quantizedFloatBvh;
+ b3QuantizedBvhDoubleData *m_quantizedDoubleBvh;
+ b3TriangleInfoMapData *m_triangleInfoMap;
+ float m_collisionMargin;
+ char m_pad3[4];
+};
+
+// -------------------------------------------------- //
+class b3ScaledTriangleMeshShapeData
+{
+public:
+ b3TriangleMeshShapeData m_trimeshShapeData;
+ b3Vector3FloatData m_localScaling;
+};
+
+// -------------------------------------------------- //
+class b3CompoundShapeChildData
+{
+public:
+ b3TransformFloatData m_transform;
+ b3CollisionShapeData *m_childShape;
+ int m_childShapeType;
+ float m_childMargin;
+};
+
+// -------------------------------------------------- //
+class b3CompoundShapeData
+{
+public:
+ b3CollisionShapeData m_collisionShapeData;
+ b3CompoundShapeChildData *m_childShapePtr;
+ int m_numChildShapes;
+ float m_collisionMargin;
+};
+
+// -------------------------------------------------- //
+class b3CylinderShapeData
+{
+public:
+ b3ConvexInternalShapeData m_convexInternalShapeData;
+ int m_upAxis;
+ char m_padding[4];
+};
+
+// -------------------------------------------------- //
+class b3CapsuleShapeData
+{
+public:
+ b3ConvexInternalShapeData m_convexInternalShapeData;
+ int m_upAxis;
+ char m_padding[4];
+};
+
+// -------------------------------------------------- //
+class b3TriangleInfoData
+{
+public:
+ int m_flags;
+ float m_edgeV0V1Angle;
+ float m_edgeV1V2Angle;
+ float m_edgeV2V0Angle;
+};
+
+// -------------------------------------------------- //
+class b3TriangleInfoMapData
+{
+public:
+ int *m_hashTablePtr;
+ int *m_nextPtr;
+ b3TriangleInfoData *m_valueArrayPtr;
+ int *m_keyArrayPtr;
+ float m_convexEpsilon;
+ float m_planarEpsilon;
+ float m_equalVertexThreshold;
+ float m_edgeDistanceThreshold;
+ float m_zeroAreaThreshold;
+ int m_nextSize;
+ int m_hashTableSize;
+ int m_numValues;
+ int m_numKeys;
+ char m_padding[4];
+};
+
+// -------------------------------------------------- //
+class b3GImpactMeshShapeData
+{
+public:
+ b3CollisionShapeData m_collisionShapeData;
+ b3StridingMeshInterfaceData m_meshInterface;
+ b3Vector3FloatData m_localScaling;
+ float m_collisionMargin;
+ int m_gimpactSubType;
+};
+
+// -------------------------------------------------- //
+class b3ConvexHullShapeData
+{
+public:
+ b3ConvexInternalShapeData m_convexInternalShapeData;
+ b3Vector3FloatData *m_unscaledPointsFloatPtr;
+ b3Vector3DoubleData *m_unscaledPointsDoublePtr;
+ int m_numUnscaledPoints;
+ char m_padding3[4];
+};
+
+// -------------------------------------------------- //
+class b3CollisionObjectDoubleData
+{
+public:
+ void *m_broadphaseHandle;
+ void *m_collisionShape;
+ b3CollisionShapeData *m_rootCollisionShape;
+ char *m_name;
+ b3TransformDoubleData m_worldTransform;
+ b3TransformDoubleData m_interpolationWorldTransform;
+ b3Vector3DoubleData m_interpolationLinearVelocity;
+ b3Vector3DoubleData m_interpolationAngularVelocity;
+ b3Vector3DoubleData m_anisotropicFriction;
+ double m_contactProcessingThreshold;
+ double m_deactivationTime;
+ double m_friction;
+ double m_rollingFriction;
+ double m_restitution;
+ double m_hitFraction;
+ double m_ccdSweptSphereRadius;
+ double m_ccdMotionThreshold;
+ int m_hasAnisotropicFriction;
+ int m_collisionFlags;
+ int m_islandTag1;
+ int m_companionId;
+ int m_activationState1;
+ int m_internalType;
+ int m_checkCollideWith;
+ char m_padding[4];
+};
+
+// -------------------------------------------------- //
+class b3CollisionObjectFloatData
+{
+public:
+ void *m_broadphaseHandle;
+ void *m_collisionShape;
+ b3CollisionShapeData *m_rootCollisionShape;
+ char *m_name;
+ b3TransformFloatData m_worldTransform;
+ b3TransformFloatData m_interpolationWorldTransform;
+ b3Vector3FloatData m_interpolationLinearVelocity;
+ b3Vector3FloatData m_interpolationAngularVelocity;
+ b3Vector3FloatData m_anisotropicFriction;
+ float m_contactProcessingThreshold;
+ float m_deactivationTime;
+ float m_friction;
+ float m_rollingFriction;
+ float m_restitution;
+ float m_hitFraction;
+ float m_ccdSweptSphereRadius;
+ float m_ccdMotionThreshold;
+ int m_hasAnisotropicFriction;
+ int m_collisionFlags;
+ int m_islandTag1;
+ int m_companionId;
+ int m_activationState1;
+ int m_internalType;
+ int m_checkCollideWith;
+ char m_padding[4];
+};
+
+// -------------------------------------------------- //
+class b3RigidBodyFloatData
+{
+public:
+ b3CollisionObjectFloatData m_collisionObjectData;
+ b3Matrix3x3FloatData m_invInertiaTensorWorld;
+ b3Vector3FloatData m_linearVelocity;
+ b3Vector3FloatData m_angularVelocity;
+ b3Vector3FloatData m_angularFactor;
+ b3Vector3FloatData m_linearFactor;
+ b3Vector3FloatData m_gravity;
+ b3Vector3FloatData m_gravity_acceleration;
+ b3Vector3FloatData m_invInertiaLocal;
+ b3Vector3FloatData m_totalForce;
+ b3Vector3FloatData m_totalTorque;
+ float m_inverseMass;
+ float m_linearDamping;
+ float m_angularDamping;
+ float m_additionalDampingFactor;
+ float m_additionalLinearDampingThresholdSqr;
+ float m_additionalAngularDampingThresholdSqr;
+ float m_additionalAngularDampingFactor;
+ float m_linearSleepingThreshold;
+ float m_angularSleepingThreshold;
+ int m_additionalDamping;
+};
+
+// -------------------------------------------------- //
+class b3RigidBodyDoubleData
+{
+public:
+ b3CollisionObjectDoubleData m_collisionObjectData;
+ b3Matrix3x3DoubleData m_invInertiaTensorWorld;
+ b3Vector3DoubleData m_linearVelocity;
+ b3Vector3DoubleData m_angularVelocity;
+ b3Vector3DoubleData m_angularFactor;
+ b3Vector3DoubleData m_linearFactor;
+ b3Vector3DoubleData m_gravity;
+ b3Vector3DoubleData m_gravity_acceleration;
+ b3Vector3DoubleData m_invInertiaLocal;
+ b3Vector3DoubleData m_totalForce;
+ b3Vector3DoubleData m_totalTorque;
+ double m_inverseMass;
+ double m_linearDamping;
+ double m_angularDamping;
+ double m_additionalDampingFactor;
+ double m_additionalLinearDampingThresholdSqr;
+ double m_additionalAngularDampingThresholdSqr;
+ double m_additionalAngularDampingFactor;
+ double m_linearSleepingThreshold;
+ double m_angularSleepingThreshold;
+ int m_additionalDamping;
+ char m_padding[4];
+};
+
+// -------------------------------------------------- //
+class b3ConstraintInfo1
+{
+public:
+ int m_numConstraintRows;
+ int nub;
+};
+
+// -------------------------------------------------- //
+class b3TypedConstraintData
+{
+public:
+ bInvalidHandle *m_rbA;
+ bInvalidHandle *m_rbB;
+ char *m_name;
+ int m_objectType;
+ int m_userConstraintType;
+ int m_userConstraintId;
+ int m_needsFeedback;
+ float m_appliedImpulse;
+ float m_dbgDrawSize;
+ int m_disableCollisionsBetweenLinkedBodies;
+ int m_overrideNumSolverIterations;
+ float m_breakingImpulseThreshold;
+ int m_isEnabled;
+};
+
+// -------------------------------------------------- //
+class b3Point2PointConstraintFloatData
+{
+public:
+ b3TypedConstraintData m_typeConstraintData;
+ b3Vector3FloatData m_pivotInA;
+ b3Vector3FloatData m_pivotInB;
+};
+
+// -------------------------------------------------- //
+class b3Point2PointConstraintDoubleData
+{
+public:
+ b3TypedConstraintData m_typeConstraintData;
+ b3Vector3DoubleData m_pivotInA;
+ b3Vector3DoubleData m_pivotInB;
+};
+
+// -------------------------------------------------- //
+class b3HingeConstraintDoubleData
+{
+public:
+ b3TypedConstraintData m_typeConstraintData;
+ b3TransformDoubleData m_rbAFrame;
+ b3TransformDoubleData m_rbBFrame;
+ int m_useReferenceFrameA;
+ int m_angularOnly;
+ int m_enableAngularMotor;
+ float m_motorTargetVelocity;
+ float m_maxMotorImpulse;
+ float m_lowerLimit;
+ float m_upperLimit;
+ float m_limitSoftness;
+ float m_biasFactor;
+ float m_relaxationFactor;
+};
+
+// -------------------------------------------------- //
+class b3HingeConstraintFloatData
+{
+public:
+ b3TypedConstraintData m_typeConstraintData;
+ b3TransformFloatData m_rbAFrame;
+ b3TransformFloatData m_rbBFrame;
+ int m_useReferenceFrameA;
+ int m_angularOnly;
+ int m_enableAngularMotor;
+ float m_motorTargetVelocity;
+ float m_maxMotorImpulse;
+ float m_lowerLimit;
+ float m_upperLimit;
+ float m_limitSoftness;
+ float m_biasFactor;
+ float m_relaxationFactor;
+};
+
+// -------------------------------------------------- //
+class b3ConeTwistConstraintData
+{
+public:
+ b3TypedConstraintData m_typeConstraintData;
+ b3TransformFloatData m_rbAFrame;
+ b3TransformFloatData m_rbBFrame;
+ float m_swingSpan1;
+ float m_swingSpan2;
+ float m_twistSpan;
+ float m_limitSoftness;
+ float m_biasFactor;
+ float m_relaxationFactor;
+ float m_damping;
+ char m_pad[4];
+};
+
+// -------------------------------------------------- //
+class b3Generic6DofConstraintData
+{
+public:
+ b3TypedConstraintData m_typeConstraintData;
+ b3TransformFloatData m_rbAFrame;
+ b3TransformFloatData m_rbBFrame;
+ b3Vector3FloatData m_linearUpperLimit;
+ b3Vector3FloatData m_linearLowerLimit;
+ b3Vector3FloatData m_angularUpperLimit;
+ b3Vector3FloatData m_angularLowerLimit;
+ int m_useLinearReferenceFrameA;
+ int m_useOffsetForConstraintFrame;
+};
+
+// -------------------------------------------------- //
+class b3Generic6DofSpringConstraintData
+{
+public:
+ b3Generic6DofConstraintData m_6dofData;
+ int m_springEnabled[6];
+ float m_equilibriumPoint[6];
+ float m_springStiffness[6];
+ float m_springDamping[6];
+};
+
+// -------------------------------------------------- //
+class b3SliderConstraintData
+{
+public:
+ b3TypedConstraintData m_typeConstraintData;
+ b3TransformFloatData m_rbAFrame;
+ b3TransformFloatData m_rbBFrame;
+ float m_linearUpperLimit;
+ float m_linearLowerLimit;
+ float m_angularUpperLimit;
+ float m_angularLowerLimit;
+ int m_useLinearReferenceFrameA;
+ int m_useOffsetForConstraintFrame;
+};
+
+// -------------------------------------------------- //
+class b3ContactSolverInfoDoubleData
+{
+public:
+ double m_tau;
+ double m_damping;
+ double m_friction;
+ double m_timeStep;
+ double m_restitution;
+ double m_maxErrorReduction;
+ double m_sor;
+ double m_erp;
+ double m_erp2;
+ double m_globalCfm;
+ double m_splitImpulsePenetrationThreshold;
+ double m_splitImpulseTurnErp;
+ double m_linearSlop;
+ double m_warmstartingFactor;
+ double m_maxGyroscopicForce;
+ double m_singleAxisRollingFrictionThreshold;
+ int m_numIterations;
+ int m_solverMode;
+ int m_restingContactRestitutionThreshold;
+ int m_minimumSolverBatchSize;
+ int m_splitImpulse;
+ char m_padding[4];
+};
+
+// -------------------------------------------------- //
+class b3ContactSolverInfoFloatData
+{
+public:
+ float m_tau;
+ float m_damping;
+ float m_friction;
+ float m_timeStep;
+ float m_restitution;
+ float m_maxErrorReduction;
+ float m_sor;
+ float m_erp;
+ float m_erp2;
+ float m_globalCfm;
+ float m_splitImpulsePenetrationThreshold;
+ float m_splitImpulseTurnErp;
+ float m_linearSlop;
+ float m_warmstartingFactor;
+ float m_maxGyroscopicForce;
+ float m_singleAxisRollingFrictionThreshold;
+ int m_numIterations;
+ int m_solverMode;
+ int m_restingContactRestitutionThreshold;
+ int m_minimumSolverBatchSize;
+ int m_splitImpulse;
+ char m_padding[4];
+};
+
+// -------------------------------------------------- //
+class b3DynamicsWorldDoubleData
+{
+public:
+ b3ContactSolverInfoDoubleData m_solverInfo;
+ b3Vector3DoubleData m_gravity;
+};
+
+// -------------------------------------------------- //
+class b3DynamicsWorldFloatData
+{
+public:
+ b3ContactSolverInfoFloatData m_solverInfo;
+ b3Vector3FloatData m_gravity;
+};
+
+// -------------------------------------------------- //
+class SoftBodyMaterialData
+{
+public:
+ float m_linearStiffness;
+ float m_angularStiffness;
+ float m_volumeStiffness;
+ int m_flags;
+};
+
+// -------------------------------------------------- //
+class SoftBodyNodeData
+{
+public:
+ SoftBodyMaterialData *m_material;
+ b3Vector3FloatData m_position;
+ b3Vector3FloatData m_previousPosition;
+ b3Vector3FloatData m_velocity;
+ b3Vector3FloatData m_accumulatedForce;
+ b3Vector3FloatData m_normal;
+ float m_inverseMass;
+ float m_area;
+ int m_attach;
+ int m_pad;
+};
+
+// -------------------------------------------------- //
+class SoftBodyLinkData
+{
+public:
+ SoftBodyMaterialData *m_material;
+ int m_nodeIndices[2];
+ float m_restLength;
+ int m_bbending;
+};
+
+// -------------------------------------------------- //
+class SoftBodyFaceData
+{
+public:
+ b3Vector3FloatData m_normal;
+ SoftBodyMaterialData *m_material;
+ int m_nodeIndices[3];
+ float m_restArea;
+};
+
+// -------------------------------------------------- //
+class SoftBodyTetraData
+{
+public:
+ b3Vector3FloatData m_c0[4];
+ SoftBodyMaterialData *m_material;
+ int m_nodeIndices[4];
+ float m_restVolume;
+ float m_c1;
+ float m_c2;
+ int m_pad;
+};
+
+// -------------------------------------------------- //
+class SoftRigidAnchorData
+{
+public:
+ b3Matrix3x3FloatData m_c0;
+ b3Vector3FloatData m_c1;
+ b3Vector3FloatData m_localFrame;
+ bInvalidHandle *m_rigidBody;
+ int m_nodeIndex;
+ float m_c2;
+};
+
+// -------------------------------------------------- //
+class SoftBodyConfigData
+{
+public:
+ int m_aeroModel;
+ float m_baumgarte;
+ float m_damping;
+ float m_drag;
+ float m_lift;
+ float m_pressure;
+ float m_volume;
+ float m_dynamicFriction;
+ float m_poseMatch;
+ float m_rigidContactHardness;
+ float m_kineticContactHardness;
+ float m_softContactHardness;
+ float m_anchorHardness;
+ float m_softRigidClusterHardness;
+ float m_softKineticClusterHardness;
+ float m_softSoftClusterHardness;
+ float m_softRigidClusterImpulseSplit;
+ float m_softKineticClusterImpulseSplit;
+ float m_softSoftClusterImpulseSplit;
+ float m_maxVolume;
+ float m_timeScale;
+ int m_velocityIterations;
+ int m_positionIterations;
+ int m_driftIterations;
+ int m_clusterIterations;
+ int m_collisionFlags;
+};
+
+// -------------------------------------------------- //
+class SoftBodyPoseData
+{
+public:
+ b3Matrix3x3FloatData m_rot;
+ b3Matrix3x3FloatData m_scale;
+ b3Matrix3x3FloatData m_aqq;
+ b3Vector3FloatData m_com;
+ b3Vector3FloatData *m_positions;
+ float *m_weights;
+ int m_numPositions;
+ int m_numWeigts;
+ int m_bvolume;
+ int m_bframe;
+ float m_restVolume;
+ int m_pad;
+};
+
+// -------------------------------------------------- //
+class SoftBodyClusterData
+{
+public:
+ b3TransformFloatData m_framexform;
+ b3Matrix3x3FloatData m_locii;
+ b3Matrix3x3FloatData m_invwi;
+ b3Vector3FloatData m_com;
+ b3Vector3FloatData m_vimpulses[2];
+ b3Vector3FloatData m_dimpulses[2];
+ b3Vector3FloatData m_lv;
+ b3Vector3FloatData m_av;
+ b3Vector3FloatData *m_framerefs;
+ int *m_nodeIndices;
+ float *m_masses;
+ int m_numFrameRefs;
+ int m_numNodes;
+ int m_numMasses;
+ float m_idmass;
+ float m_imass;
+ int m_nvimpulses;
+ int m_ndimpulses;
+ float m_ndamping;
+ float m_ldamping;
+ float m_adamping;
+ float m_matching;
+ float m_maxSelfCollisionImpulse;
+ float m_selfCollisionImpulseFactor;
+ int m_containsAnchor;
+ int m_collide;
+ int m_clusterIndex;
+};
+
+// -------------------------------------------------- //
+class b3SoftBodyJointData
+{
+public:
+ void *m_bodyA;
+ void *m_bodyB;
+ b3Vector3FloatData m_refs[2];
+ float m_cfm;
+ float m_erp;
+ float m_split;
+ int m_delete;
+ b3Vector3FloatData m_relPosition[2];
+ int m_bodyAtype;
+ int m_bodyBtype;
+ int m_jointType;
+ int m_pad;
+};
+
+// -------------------------------------------------- //
+class b3SoftBodyFloatData
+{
+public:
+ b3CollisionObjectFloatData m_collisionObjectData;
+ SoftBodyPoseData *m_pose;
+ SoftBodyMaterialData **m_materials;
+ SoftBodyNodeData *m_nodes;
+ SoftBodyLinkData *m_links;
+ SoftBodyFaceData *m_faces;
+ SoftBodyTetraData *m_tetrahedra;
+ SoftRigidAnchorData *m_anchors;
+ SoftBodyClusterData *m_clusters;
+ b3SoftBodyJointData *m_joints;
+ int m_numMaterials;
+ int m_numNodes;
+ int m_numLinks;
+ int m_numFaces;
+ int m_numTetrahedra;
+ int m_numAnchors;
+ int m_numClusters;
+ int m_numJoints;
+ SoftBodyConfigData m_config;
+};
+
+} // namespace Bullet3SerializeBullet2
+#endif //__BULLET2_H__ \ No newline at end of file
diff --git a/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3BulletFile.cpp b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3BulletFile.cpp
index c3ceb8388c..d2a7163670 100644
--- a/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3BulletFile.cpp
+++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3BulletFile.cpp
@@ -17,12 +17,11 @@ subject to the following restrictions:
#include "b3Defines.h"
#include "b3DNA.h"
-#if !defined( __CELLOS_LV2__) && !defined(__MWERKS__)
+#if !defined(__CELLOS_LV2__) && !defined(__MWERKS__)
#include <memory.h>
#endif
#include <string.h>
-
// 32 && 64 bit versions
#ifdef B3_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES
#ifdef _WIN64
@@ -31,130 +30,116 @@ extern int b3s_bulletDNAlen64;
#else
extern char b3s_bulletDNAstr[];
extern int b3s_bulletDNAlen;
-#endif //_WIN64
-#else//B3_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES
+#endif //_WIN64
+#else //B3_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES
extern char b3s_bulletDNAstr64[];
extern int b3s_bulletDNAlen64;
extern char b3s_bulletDNAstr[];
extern int b3s_bulletDNAlen;
-#endif //B3_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES
+#endif //B3_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES
using namespace bParse;
b3BulletFile::b3BulletFile()
-:bFile("", "BULLET ")
+ : bFile("", "BULLET ")
{
- mMemoryDNA = new bDNA(); //this memory gets released in the bFile::~bFile destructor,@todo not consistent with the rule 'who allocates it, has to deallocate it"
+ mMemoryDNA = new bDNA(); //this memory gets released in the bFile::~bFile destructor,@todo not consistent with the rule 'who allocates it, has to deallocate it"
m_DnaCopy = 0;
-
#ifdef B3_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES
#ifdef _WIN64
- m_DnaCopy = (char*)b3AlignedAlloc(b3s_bulletDNAlen64,16);
- memcpy(m_DnaCopy,b3s_bulletDNAstr64,b3s_bulletDNAlen64);
- mMemoryDNA->init(m_DnaCopy,b3s_bulletDNAlen64);
-#else//_WIN64
- m_DnaCopy = (char*)b3AlignedAlloc(b3s_bulletDNAlen,16);
- memcpy(m_DnaCopy,b3s_bulletDNAstr,b3s_bulletDNAlen);
- mMemoryDNA->init(m_DnaCopy,b3s_bulletDNAlen);
-#endif//_WIN64
-#else//B3_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES
+ m_DnaCopy = (char*)b3AlignedAlloc(b3s_bulletDNAlen64, 16);
+ memcpy(m_DnaCopy, b3s_bulletDNAstr64, b3s_bulletDNAlen64);
+ mMemoryDNA->init(m_DnaCopy, b3s_bulletDNAlen64);
+#else //_WIN64
+ m_DnaCopy = (char*)b3AlignedAlloc(b3s_bulletDNAlen, 16);
+ memcpy(m_DnaCopy, b3s_bulletDNAstr, b3s_bulletDNAlen);
+ mMemoryDNA->init(m_DnaCopy, b3s_bulletDNAlen);
+#endif //_WIN64
+#else //B3_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES
if (VOID_IS_8)
{
- m_DnaCopy = (char*) b3AlignedAlloc(b3s_bulletDNAlen64,16);
- memcpy(m_DnaCopy,b3s_bulletDNAstr64,b3s_bulletDNAlen64);
- mMemoryDNA->init(m_DnaCopy,b3s_bulletDNAlen64);
+ m_DnaCopy = (char*)b3AlignedAlloc(b3s_bulletDNAlen64, 16);
+ memcpy(m_DnaCopy, b3s_bulletDNAstr64, b3s_bulletDNAlen64);
+ mMemoryDNA->init(m_DnaCopy, b3s_bulletDNAlen64);
}
else
{
- m_DnaCopy =(char*) b3AlignedAlloc(b3s_bulletDNAlen,16);
- memcpy(m_DnaCopy,b3s_bulletDNAstr,b3s_bulletDNAlen);
- mMemoryDNA->init(m_DnaCopy,b3s_bulletDNAlen);
+ m_DnaCopy = (char*)b3AlignedAlloc(b3s_bulletDNAlen, 16);
+ memcpy(m_DnaCopy, b3s_bulletDNAstr, b3s_bulletDNAlen);
+ mMemoryDNA->init(m_DnaCopy, b3s_bulletDNAlen);
}
-#endif//B3_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES
+#endif //B3_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES
}
-
-
b3BulletFile::b3BulletFile(const char* fileName)
-:bFile(fileName, "BULLET ")
+ : bFile(fileName, "BULLET ")
{
m_DnaCopy = 0;
}
-
-
-b3BulletFile::b3BulletFile(char *memoryBuffer, int len)
-:bFile(memoryBuffer,len, "BULLET ")
+b3BulletFile::b3BulletFile(char* memoryBuffer, int len)
+ : bFile(memoryBuffer, len, "BULLET ")
{
m_DnaCopy = 0;
}
-
b3BulletFile::~b3BulletFile()
{
if (m_DnaCopy)
b3AlignedFree(m_DnaCopy);
-
while (m_dataBlocks.size())
{
- char* dataBlock = m_dataBlocks[m_dataBlocks.size()-1];
+ char* dataBlock = m_dataBlocks[m_dataBlocks.size() - 1];
delete[] dataBlock;
m_dataBlocks.pop_back();
}
-
}
-
-
// ----------------------------------------------------- //
void b3BulletFile::parseData()
{
-// printf ("Building datablocks");
-// printf ("Chunk size = %d",CHUNK_HEADER_LEN);
-// printf ("File chunk size = %d",ChunkUtils::getOffset(mFlags));
+ // printf ("Building datablocks");
+ // printf ("Chunk size = %d",CHUNK_HEADER_LEN);
+ // printf ("File chunk size = %d",ChunkUtils::getOffset(mFlags));
- const bool brokenDNA = (mFlags&FD_BROKEN_DNA)!=0;
+ const bool brokenDNA = (mFlags & FD_BROKEN_DNA) != 0;
//const bool swap = (mFlags&FD_ENDIAN_SWAP)!=0;
-
mDataStart = 12;
- char *dataPtr = mFileBuffer+mDataStart;
+ char* dataPtr = mFileBuffer + mDataStart;
bChunkInd dataChunk;
dataChunk.code = 0;
-
//dataPtr += ChunkUtils::getNextBlock(&dataChunk, dataPtr, mFlags);
int seek = getNextBlock(&dataChunk, dataPtr, mFlags);
-
-
- if (mFlags &FD_ENDIAN_SWAP)
+
+ if (mFlags & FD_ENDIAN_SWAP)
swapLen(dataPtr);
//dataPtr += ChunkUtils::getOffset(mFlags);
- char *dataPtrHead = 0;
+ char* dataPtrHead = 0;
while (dataChunk.code != B3_DNA1)
{
- if (!brokenDNA || (dataChunk.code != B3_QUANTIZED_BVH_CODE) )
+ if (!brokenDNA || (dataChunk.code != B3_QUANTIZED_BVH_CODE))
{
-
// one behind
if (dataChunk.code == B3_SDNA) break;
//if (dataChunk.code == DNA1) break;
// same as (BHEAD+DATA dependency)
- dataPtrHead = dataPtr+ChunkUtils::getOffset(mFlags);
- if (dataChunk.dna_nr>=0)
+ dataPtrHead = dataPtr + ChunkUtils::getOffset(mFlags);
+ if (dataChunk.dna_nr >= 0)
{
- char *id = readStruct(dataPtrHead, dataChunk);
+ char* id = readStruct(dataPtrHead, dataChunk);
// lookup maps
if (id)
@@ -171,96 +156,91 @@ void b3BulletFile::parseData()
if (dataChunk.code == B3_SOFTBODY_CODE)
{
- m_softBodies.push_back((bStructHandle*) id);
+ m_softBodies.push_back((bStructHandle*)id);
}
-
+
if (dataChunk.code == B3_RIGIDBODY_CODE)
{
- m_rigidBodies.push_back((bStructHandle*) id);
+ m_rigidBodies.push_back((bStructHandle*)id);
}
if (dataChunk.code == B3_DYNAMICSWORLD_CODE)
{
- m_dynamicsWorldInfo.push_back((bStructHandle*) id);
+ m_dynamicsWorldInfo.push_back((bStructHandle*)id);
}
if (dataChunk.code == B3_CONSTRAINT_CODE)
{
- m_constraints.push_back((bStructHandle*) id);
+ m_constraints.push_back((bStructHandle*)id);
}
if (dataChunk.code == B3_QUANTIZED_BVH_CODE)
{
- m_bvhs.push_back((bStructHandle*) id);
+ m_bvhs.push_back((bStructHandle*)id);
}
if (dataChunk.code == B3_TRIANLGE_INFO_MAP)
{
- m_triangleInfoMaps.push_back((bStructHandle*) id);
+ m_triangleInfoMaps.push_back((bStructHandle*)id);
}
if (dataChunk.code == B3_COLLISIONOBJECT_CODE)
{
- m_collisionObjects.push_back((bStructHandle*) id);
+ m_collisionObjects.push_back((bStructHandle*)id);
}
if (dataChunk.code == B3_SHAPE_CODE)
{
- m_collisionShapes.push_back((bStructHandle*) id);
+ m_collisionShapes.push_back((bStructHandle*)id);
}
- // if (dataChunk.code == GLOB)
- // {
- // m_glob = (bStructHandle*) id;
- // }
- } else
+ // if (dataChunk.code == GLOB)
+ // {
+ // m_glob = (bStructHandle*) id;
+ // }
+ }
+ else
{
//printf("unknown chunk\n");
mLibPointers.insert(dataChunk.oldPtr, (bStructHandle*)dataPtrHead);
}
- } else
+ }
+ else
{
printf("skipping B3_QUANTIZED_BVH_CODE due to broken DNA\n");
}
-
dataPtr += seek;
- seek = getNextBlock(&dataChunk, dataPtr, mFlags);
- if (mFlags &FD_ENDIAN_SWAP)
+ seek = getNextBlock(&dataChunk, dataPtr, mFlags);
+ if (mFlags & FD_ENDIAN_SWAP)
swapLen(dataPtr);
if (seek < 0)
break;
}
-
}
-void b3BulletFile::addDataBlock(char* dataBlock)
+void b3BulletFile::addDataBlock(char* dataBlock)
{
m_dataBlocks.push_back(dataBlock);
-
}
-
-
-
-void b3BulletFile::writeDNA(FILE* fp)
+void b3BulletFile::writeDNA(FILE* fp)
{
-
bChunkInd dataChunk;
dataChunk.code = B3_DNA1;
dataChunk.dna_nr = 0;
dataChunk.nr = 1;
-#ifdef B3_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES
+#ifdef B3_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES
if (VOID_IS_8)
{
#ifdef _WIN64
dataChunk.len = b3s_bulletDNAlen64;
dataChunk.oldPtr = b3s_bulletDNAstr64;
- fwrite(&dataChunk,sizeof(bChunkInd),1,fp);
- fwrite(b3s_bulletDNAstr64, b3s_bulletDNAlen64,1,fp);
+ fwrite(&dataChunk, sizeof(bChunkInd), 1, fp);
+ fwrite(b3s_bulletDNAstr64, b3s_bulletDNAlen64, 1, fp);
#else
b3Assert(0);
#endif
@@ -270,43 +250,42 @@ void b3BulletFile::writeDNA(FILE* fp)
#ifndef _WIN64
dataChunk.len = b3s_bulletDNAlen;
dataChunk.oldPtr = b3s_bulletDNAstr;
- fwrite(&dataChunk,sizeof(bChunkInd),1,fp);
- fwrite(b3s_bulletDNAstr, b3s_bulletDNAlen,1,fp);
-#else//_WIN64
+ fwrite(&dataChunk, sizeof(bChunkInd), 1, fp);
+ fwrite(b3s_bulletDNAstr, b3s_bulletDNAlen, 1, fp);
+#else //_WIN64
b3Assert(0);
-#endif//_WIN64
+#endif //_WIN64
}
-#else//B3_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES
+#else //B3_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES
if (VOID_IS_8)
{
dataChunk.len = b3s_bulletDNAlen64;
dataChunk.oldPtr = b3s_bulletDNAstr64;
- fwrite(&dataChunk,sizeof(bChunkInd),1,fp);
- fwrite(b3s_bulletDNAstr64, b3s_bulletDNAlen64,1,fp);
+ fwrite(&dataChunk, sizeof(bChunkInd), 1, fp);
+ fwrite(b3s_bulletDNAstr64, b3s_bulletDNAlen64, 1, fp);
}
else
{
dataChunk.len = b3s_bulletDNAlen;
dataChunk.oldPtr = b3s_bulletDNAstr;
- fwrite(&dataChunk,sizeof(bChunkInd),1,fp);
- fwrite(b3s_bulletDNAstr, b3s_bulletDNAlen,1,fp);
+ fwrite(&dataChunk, sizeof(bChunkInd), 1, fp);
+ fwrite(b3s_bulletDNAstr, b3s_bulletDNAlen, 1, fp);
}
-#endif//B3_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES
+#endif //B3_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES
}
-
-void b3BulletFile::parse(int verboseMode)
+void b3BulletFile::parse(int verboseMode)
{
#ifdef B3_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES
if (VOID_IS_8)
{
#ifdef _WIN64
-
+
if (m_DnaCopy)
delete m_DnaCopy;
- m_DnaCopy = (char*)b3AlignedAlloc(b3s_bulletDNAlen64,16);
- memcpy(m_DnaCopy,b3s_bulletDNAstr64,b3s_bulletDNAlen64);
- parseInternal(verboseMode,(char*)b3s_bulletDNAstr64,b3s_bulletDNAlen64);
+ m_DnaCopy = (char*)b3AlignedAlloc(b3s_bulletDNAlen64, 16);
+ memcpy(m_DnaCopy, b3s_bulletDNAstr64, b3s_bulletDNAlen64);
+ parseInternal(verboseMode, (char*)b3s_bulletDNAstr64, b3s_bulletDNAlen64);
#else
b3Assert(0);
#endif
@@ -317,93 +296,91 @@ void b3BulletFile::parse(int verboseMode)
if (m_DnaCopy)
delete m_DnaCopy;
- m_DnaCopy = (char*)b3AlignedAlloc(b3s_bulletDNAlen,16);
- memcpy(m_DnaCopy,b3s_bulletDNAstr,b3s_bulletDNAlen);
- parseInternal(verboseMode,m_DnaCopy,b3s_bulletDNAlen);
+ m_DnaCopy = (char*)b3AlignedAlloc(b3s_bulletDNAlen, 16);
+ memcpy(m_DnaCopy, b3s_bulletDNAstr, b3s_bulletDNAlen);
+ parseInternal(verboseMode, m_DnaCopy, b3s_bulletDNAlen);
#else
b3Assert(0);
#endif
}
-#else//B3_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES
+#else //B3_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES
if (VOID_IS_8)
{
if (m_DnaCopy)
delete m_DnaCopy;
- m_DnaCopy = (char*)b3AlignedAlloc(b3s_bulletDNAlen64,16);
- memcpy(m_DnaCopy,b3s_bulletDNAstr64,b3s_bulletDNAlen64);
- parseInternal(verboseMode,m_DnaCopy,b3s_bulletDNAlen64);
+ m_DnaCopy = (char*)b3AlignedAlloc(b3s_bulletDNAlen64, 16);
+ memcpy(m_DnaCopy, b3s_bulletDNAstr64, b3s_bulletDNAlen64);
+ parseInternal(verboseMode, m_DnaCopy, b3s_bulletDNAlen64);
}
else
{
if (m_DnaCopy)
delete m_DnaCopy;
- m_DnaCopy = (char*)b3AlignedAlloc(b3s_bulletDNAlen,16);
- memcpy(m_DnaCopy,b3s_bulletDNAstr,b3s_bulletDNAlen);
- parseInternal(verboseMode,m_DnaCopy,b3s_bulletDNAlen);
+ m_DnaCopy = (char*)b3AlignedAlloc(b3s_bulletDNAlen, 16);
+ memcpy(m_DnaCopy, b3s_bulletDNAstr, b3s_bulletDNAlen);
+ parseInternal(verboseMode, m_DnaCopy, b3s_bulletDNAlen);
}
-#endif//B3_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES
-
+#endif //B3_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES
+
//the parsing will convert to cpu endian
- mFlags &=~FD_ENDIAN_SWAP;
+ mFlags &= ~FD_ENDIAN_SWAP;
- int littleEndian= 1;
- littleEndian= ((char*)&littleEndian)[0];
-
- mFileBuffer[8] = littleEndian?'v':'V';
-
+ int littleEndian = 1;
+ littleEndian = ((char*)&littleEndian)[0];
+
+ mFileBuffer[8] = littleEndian ? 'v' : 'V';
}
// experimental
-int b3BulletFile::write(const char* fileName, bool fixupPointers)
+int b3BulletFile::write(const char* fileName, bool fixupPointers)
{
- FILE *fp = fopen(fileName, "wb");
+ FILE* fp = fopen(fileName, "wb");
if (fp)
{
- char header[B3_SIZEOFBLENDERHEADER] ;
+ char header[B3_SIZEOFBLENDERHEADER];
memcpy(header, m_headerString, 7);
- int endian= 1;
- endian= ((char*)&endian)[0];
+ int endian = 1;
+ endian = ((char*)&endian)[0];
if (endian)
{
header[7] = '_';
- } else
+ }
+ else
{
header[7] = '-';
}
if (VOID_IS_8)
{
- header[8]='V';
- } else
+ header[8] = 'V';
+ }
+ else
{
- header[8]='v';
+ header[8] = 'v';
}
header[9] = '2';
header[10] = '7';
header[11] = '5';
-
- fwrite(header,B3_SIZEOFBLENDERHEADER,1,fp);
+
+ fwrite(header, B3_SIZEOFBLENDERHEADER, 1, fp);
writeChunks(fp, fixupPointers);
writeDNA(fp);
fclose(fp);
-
- } else
+ }
+ else
{
- printf("Error: cannot open file %s for writing\n",fileName);
+ printf("Error: cannot open file %s for writing\n", fileName);
return 0;
}
return 1;
}
-
-
-void b3BulletFile::addStruct(const char* structType,void* data, int len, void* oldPtr, int code)
+void b3BulletFile::addStruct(const char* structType, void* data, int len, void* oldPtr, int code)
{
-
bParse::bChunkInd dataChunk;
dataChunk.code = code;
dataChunk.nr = 1;
@@ -412,11 +389,11 @@ void b3BulletFile::addStruct(const char* structType,void* data, int len, void* o
dataChunk.oldPtr = oldPtr;
///Perform structure size validation
- short* structInfo= mMemoryDNA->getStruct(dataChunk.dna_nr);
+ short* structInfo = mMemoryDNA->getStruct(dataChunk.dna_nr);
int elemBytes;
- elemBytes= mMemoryDNA->getLength(structInfo[0]);
-// int elemBytes = mMemoryDNA->getElementSize(structInfo[0],structInfo[1]);
- assert(len==elemBytes);
+ elemBytes = mMemoryDNA->getLength(structInfo[0]);
+ // int elemBytes = mMemoryDNA->getElementSize(structInfo[0],structInfo[1]);
+ assert(len == elemBytes);
mLibPointers.insert(dataChunk.oldPtr, (bStructHandle*)data);
m_chunks.push_back(dataChunk);
diff --git a/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3BulletFile.h b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3BulletFile.h
index fb1b9b0dde..ede1d378ae 100644
--- a/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3BulletFile.h
+++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3BulletFile.h
@@ -16,68 +16,59 @@ subject to the following restrictions:
#ifndef B3_BULLET_FILE_H
#define B3_BULLET_FILE_H
-
#include "b3File.h"
#include "Bullet3Common/b3AlignedObjectArray.h"
#include "b3Defines.h"
#include "Bullet3Serialize/Bullet2FileLoader/b3Serializer.h"
+namespace bParse
+{
+// ----------------------------------------------------- //
+class b3BulletFile : public bFile
+{
+protected:
+ char* m_DnaCopy;
+public:
+ b3AlignedObjectArray<bStructHandle*> m_softBodies;
-namespace bParse {
-
- // ----------------------------------------------------- //
- class b3BulletFile : public bFile
- {
-
-
- protected:
-
- char* m_DnaCopy;
-
- public:
-
- b3AlignedObjectArray<bStructHandle*> m_softBodies;
-
- b3AlignedObjectArray<bStructHandle*> m_rigidBodies;
-
- b3AlignedObjectArray<bStructHandle*> m_collisionObjects;
+ b3AlignedObjectArray<bStructHandle*> m_rigidBodies;
- b3AlignedObjectArray<bStructHandle*> m_collisionShapes;
+ b3AlignedObjectArray<bStructHandle*> m_collisionObjects;
- b3AlignedObjectArray<bStructHandle*> m_constraints;
+ b3AlignedObjectArray<bStructHandle*> m_collisionShapes;
- b3AlignedObjectArray<bStructHandle*> m_bvhs;
+ b3AlignedObjectArray<bStructHandle*> m_constraints;
- b3AlignedObjectArray<bStructHandle*> m_triangleInfoMaps;
+ b3AlignedObjectArray<bStructHandle*> m_bvhs;
- b3AlignedObjectArray<bStructHandle*> m_dynamicsWorldInfo;
+ b3AlignedObjectArray<bStructHandle*> m_triangleInfoMaps;
- b3AlignedObjectArray<char*> m_dataBlocks;
- b3BulletFile();
+ b3AlignedObjectArray<bStructHandle*> m_dynamicsWorldInfo;
- b3BulletFile(const char* fileName);
+ b3AlignedObjectArray<char*> m_dataBlocks;
+ b3BulletFile();
- b3BulletFile(char *memoryBuffer, int len);
+ b3BulletFile(const char* fileName);
- virtual ~b3BulletFile();
+ b3BulletFile(char* memoryBuffer, int len);
- virtual void addDataBlock(char* dataBlock);
-
+ virtual ~b3BulletFile();
- // experimental
- virtual int write(const char* fileName, bool fixupPointers=false);
+ virtual void addDataBlock(char* dataBlock);
- virtual void parse(int verboseMode);
+ // experimental
+ virtual int write(const char* fileName, bool fixupPointers = false);
- virtual void parseData();
+ virtual void parse(int verboseMode);
- virtual void writeDNA(FILE* fp);
+ virtual void parseData();
- void addStruct(const char* structType,void* data, int len, void* oldPtr, int code);
+ virtual void writeDNA(FILE* fp);
- };
+ void addStruct(const char* structType, void* data, int len, void* oldPtr, int code);
};
+}; // namespace bParse
-#endif //B3_BULLET_FILE_H
+#endif //B3_BULLET_FILE_H
diff --git a/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Chunk.cpp b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Chunk.cpp
index c0e1bb708c..ff75ff8cc4 100644
--- a/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Chunk.cpp
+++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Chunk.cpp
@@ -17,15 +17,13 @@ subject to the following restrictions:
#include "b3Defines.h"
#include "b3File.h"
-#if !defined( __CELLOS_LV2__) && !defined(__MWERKS__)
+#if !defined(__CELLOS_LV2__) && !defined(__MWERKS__)
#include <memory.h>
#endif
#include <string.h>
-
using namespace bParse;
-
// ----------------------------------------------------- //
short ChunkUtils::swapShort(short sht)
{
@@ -57,19 +55,15 @@ int ChunkUtils::getOffset(int flags)
if (VOID_IS_8)
{
- if (flags &FD_BITS_VARIES)
+ if (flags & FD_BITS_VARIES)
res = sizeof(bChunkPtr4);
}
else
{
- if (flags &FD_BITS_VARIES)
+ if (flags & FD_BITS_VARIES)
res = sizeof(bChunkPtr8);
}
return res;
}
-
-
-
-
//eof
diff --git a/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Chunk.h b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Chunk.h
index 03ecb6b4fa..c9d0f37d9e 100644
--- a/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Chunk.h
+++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Chunk.h
@@ -16,77 +16,69 @@ subject to the following restrictions:
#ifndef __BCHUNK_H__
#define __BCHUNK_H__
-#if defined (_WIN32) && ! defined (__MINGW32__)
- #define b3Long64 __int64
-#elif defined (__MINGW32__)
- #include <stdint.h>
- #define b3Long64 int64_t
+#if defined(_WIN32) && !defined(__MINGW32__)
+#define b3Long64 __int64
+#elif defined(__MINGW32__)
+#include <stdint.h>
+#define b3Long64 int64_t
#else
- #define b3Long64 long long
+#define b3Long64 long long
#endif
-
-namespace bParse {
-
-
- // ----------------------------------------------------- //
- class bChunkPtr4
- {
- public:
- bChunkPtr4(){}
- int code;
- int len;
- union
- {
- int m_uniqueInt;
- };
- int dna_nr;
- int nr;
- };
-
- // ----------------------------------------------------- //
- class bChunkPtr8
- {
- public:
- bChunkPtr8(){}
- int code, len;
- union
- {
- b3Long64 oldPrev;
- int m_uniqueInts[2];
- };
- int dna_nr, nr;
- };
-
- // ----------------------------------------------------- //
- class bChunkInd
- {
- public:
- bChunkInd(){}
- int code, len;
- void *oldPtr;
- int dna_nr, nr;
+namespace bParse
+{
+// ----------------------------------------------------- //
+class bChunkPtr4
+{
+public:
+ bChunkPtr4() {}
+ int code;
+ int len;
+ union {
+ int m_uniqueInt;
};
-
-
- // ----------------------------------------------------- //
- class ChunkUtils
- {
- public:
-
- // file chunk offset
- static int getOffset(int flags);
-
- // endian utils
- static short swapShort(short sht);
- static int swapInt(int inte);
- static b3Long64 swapLong64(b3Long64 lng);
-
+ int dna_nr;
+ int nr;
+};
+
+// ----------------------------------------------------- //
+class bChunkPtr8
+{
+public:
+ bChunkPtr8() {}
+ int code, len;
+ union {
+ b3Long64 oldPrev;
+ int m_uniqueInts[2];
};
-
-
- const int CHUNK_HEADER_LEN = ((sizeof(bChunkInd)));
- const bool VOID_IS_8 = ((sizeof(void*)==8));
-}
-
-#endif//__BCHUNK_H__
+ int dna_nr, nr;
+};
+
+// ----------------------------------------------------- //
+class bChunkInd
+{
+public:
+ bChunkInd() {}
+ int code, len;
+ void *oldPtr;
+ int dna_nr, nr;
+};
+
+// ----------------------------------------------------- //
+class ChunkUtils
+{
+public:
+ // file chunk offset
+ static int getOffset(int flags);
+
+ // endian utils
+ static short swapShort(short sht);
+ static int swapInt(int inte);
+ static b3Long64 swapLong64(b3Long64 lng);
+};
+
+const int CHUNK_HEADER_LEN = ((sizeof(bChunkInd)));
+const bool VOID_IS_8 = ((sizeof(void *) == 8));
+} // namespace bParse
+
+#endif //__BCHUNK_H__
diff --git a/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Common.h b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Common.h
index 2792d84033..5884fad4d6 100644
--- a/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Common.h
+++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Common.h
@@ -16,24 +16,25 @@ subject to the following restrictions:
#ifndef __BCOMMON_H__
#define __BCOMMON_H__
-
#include <assert.h>
//#include "bLog.h"
#include "Bullet3Common/b3AlignedObjectArray.h"
#include "Bullet3Common/b3HashMap.h"
-namespace bParse {
-
- class bMain;
- class bFileData;
- class bFile;
- class bDNA;
-
- // delete void* undefined
- typedef struct bStructHandle {int unused;}bStructHandle;
- typedef b3AlignedObjectArray<bStructHandle*> bListBasePtr;
- typedef b3HashMap<b3HashPtr, bStructHandle*> bPtrMap;
-}
-
-
-#endif//__BCOMMON_H__
+namespace bParse
+{
+class bMain;
+class bFileData;
+class bFile;
+class bDNA;
+
+// delete void* undefined
+typedef struct bStructHandle
+{
+ int unused;
+} bStructHandle;
+typedef b3AlignedObjectArray<bStructHandle*> bListBasePtr;
+typedef b3HashMap<b3HashPtr, bStructHandle*> bPtrMap;
+} // namespace bParse
+
+#endif //__BCOMMON_H__
diff --git a/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3DNA.cpp b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3DNA.cpp
index 0fe5056922..09c8f23859 100644
--- a/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3DNA.cpp
+++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3DNA.cpp
@@ -23,13 +23,11 @@ subject to the following restrictions:
//this define will force traversal of structures, to check backward (and forward) compatibility
//#define TEST_BACKWARD_FORWARD_COMPATIBILITY
-
using namespace bParse;
-
// ----------------------------------------------------- //
bDNA::bDNA()
- : mPtrLen(0)
+ : mPtrLen(0)
{
// --
}
@@ -43,7 +41,7 @@ bDNA::~bDNA()
// ----------------------------------------------------- //
bool bDNA::lessThan(bDNA *file)
{
- return ( m_Names.size() < file->m_Names.size());
+ return (m_Names.size() < file->m_Names.size());
}
// ----------------------------------------------------- //
@@ -53,36 +51,31 @@ char *bDNA::getName(int ind)
return m_Names[ind].m_name;
}
-
// ----------------------------------------------------- //
char *bDNA::getType(int ind)
{
- assert(ind<= (int)mTypes.size());
+ assert(ind <= (int)mTypes.size());
return mTypes[ind];
}
-
// ----------------------------------------------------- //
short *bDNA::getStruct(int ind)
{
- assert(ind <= (int)mStructs.size());
+ assert(ind <= (int)mStructs.size());
return mStructs[ind];
}
-
// ----------------------------------------------------- //
short bDNA::getLength(int ind)
{
- assert(ind <= (int)mTlens.size());
+ assert(ind <= (int)mTlens.size());
return mTlens[ind];
}
-
// ----------------------------------------------------- //
int bDNA::getReverseType(short type)
{
-
- int* intPtr = mStructReverse.find(type);
+ int *intPtr = mStructReverse.find(type);
if (intPtr)
return *intPtr;
@@ -92,12 +85,11 @@ int bDNA::getReverseType(short type)
// ----------------------------------------------------- //
int bDNA::getReverseType(const char *type)
{
-
b3HashString key(type);
- int* valuePtr = mTypeLookup.find(key);
+ int *valuePtr = mTypeLookup.find(key);
if (valuePtr)
return *valuePtr;
-
+
return -1;
}
@@ -110,22 +102,22 @@ int bDNA::getNumStructs()
// ----------------------------------------------------- //
bool bDNA::flagNotEqual(int dna_nr)
{
- assert(dna_nr <= (int)mCMPFlags.size());
+ assert(dna_nr <= (int)mCMPFlags.size());
return mCMPFlags[dna_nr] == FDF_STRUCT_NEQU;
}
// ----------------------------------------------------- //
bool bDNA::flagEqual(int dna_nr)
{
- assert(dna_nr <= (int)mCMPFlags.size());
+ assert(dna_nr <= (int)mCMPFlags.size());
int flag = mCMPFlags[dna_nr];
- return flag == FDF_STRUCT_EQU;
+ return flag == FDF_STRUCT_EQU;
}
// ----------------------------------------------------- //
bool bDNA::flagNone(int dna_nr)
{
- assert(dna_nr <= (int)mCMPFlags.size());
+ assert(dna_nr <= (int)mCMPFlags.size());
return mCMPFlags[dna_nr] == FDF_NONE;
}
@@ -143,15 +135,15 @@ void bDNA::initRecurseCmpFlags(int iter)
short *oldStrc = mStructs[iter];
short type = oldStrc[0];
- for (int i=0; i<(int)mStructs.size(); i++)
+ for (int i = 0; i < (int)mStructs.size(); i++)
{
- if (i != iter && mCMPFlags[i] == FDF_STRUCT_EQU )
+ if (i != iter && mCMPFlags[i] == FDF_STRUCT_EQU)
{
short *curStruct = mStructs[i];
int eleLen = curStruct[1];
- curStruct+=2;
+ curStruct += 2;
- for (int j=0; j<eleLen; j++, curStruct+=2)
+ for (int j = 0; j < eleLen; j++, curStruct += 2)
{
if (curStruct[0] == type)
{
@@ -171,18 +163,14 @@ void bDNA::initRecurseCmpFlags(int iter)
// ----------------------------------------------------- //
void bDNA::initCmpFlags(bDNA *memDNA)
{
-
- // compare the file to memory
+ // compare the file to memory
// this ptr should be the file data
-
- assert(!(m_Names.size() == 0));// && "SDNA empty!");
+ assert(!(m_Names.size() == 0)); // && "SDNA empty!");
mCMPFlags.resize(mStructs.size(), FDF_NONE);
-
-
int i;
- for ( i=0; i<(int)mStructs.size(); i++)
+ for (i = 0; i < (int)mStructs.size(); i++)
{
short *oldStruct = mStructs[i];
@@ -196,7 +184,7 @@ void bDNA::initCmpFlags(bDNA *memDNA)
//#define SLOW_FORWARD_COMPATIBLE 1
#ifdef SLOW_FORWARD_COMPATIBLE
- char* typeName = mTypes[oldLookup];
+ char *typeName = mTypes[oldLookup];
int newLookup = memDNA->getReverseType(typeName);
if (newLookup == -1)
{
@@ -210,71 +198,61 @@ void bDNA::initCmpFlags(bDNA *memDNA)
if (oldLookup < memDNA->mStructs.size())
{
short *curStruct = memDNA->mStructs[oldLookup];
-#endif
-
-
+#endif
- // rebuild...
- mCMPFlags[i] = FDF_STRUCT_NEQU;
+ // rebuild...
+ mCMPFlags[i] = FDF_STRUCT_NEQU;
#ifndef TEST_BACKWARD_FORWARD_COMPATIBILITY
- if (curStruct[1] == oldStruct[1])
+ if (curStruct[1] == oldStruct[1])
+ {
+ // type len same ...
+ if (mTlens[oldStruct[0]] == memDNA->mTlens[curStruct[0]])
{
- // type len same ...
- if (mTlens[oldStruct[0]] == memDNA->mTlens[curStruct[0]])
- {
- bool isSame = true;
- int elementLength = oldStruct[1];
-
+ bool isSame = true;
+ int elementLength = oldStruct[1];
- curStruct+=2;
- oldStruct+=2;
+ curStruct += 2;
+ oldStruct += 2;
+ for (int j = 0; j < elementLength; j++, curStruct += 2, oldStruct += 2)
+ {
+ // type the same
+ //const char* typeFileDNA = mTypes[oldStruct[0]];
+ //const char* typeMemDNA = mTypes[curStruct[0]];
+ if (strcmp(mTypes[oldStruct[0]], memDNA->mTypes[curStruct[0]]) != 0)
+ {
+ isSame = false;
+ break;
+ }
- for (int j=0; j<elementLength; j++, curStruct+=2, oldStruct+=2)
+ // name the same
+ if (strcmp(m_Names[oldStruct[1]].m_name, memDNA->m_Names[curStruct[1]].m_name) != 0)
{
- // type the same
- //const char* typeFileDNA = mTypes[oldStruct[0]];
- //const char* typeMemDNA = mTypes[curStruct[0]];
- if (strcmp(mTypes[oldStruct[0]], memDNA->mTypes[curStruct[0]])!=0)
- {
- isSame=false;
- break;
- }
-
- // name the same
- if (strcmp(m_Names[oldStruct[1]].m_name, memDNA->m_Names[curStruct[1]].m_name)!=0)
- {
- isSame=false;
- break;
- }
+ isSame = false;
+ break;
}
- // flag valid ==
- if (isSame)
- mCMPFlags[i] = FDF_STRUCT_EQU;
}
+ // flag valid ==
+ if (isSame)
+ mCMPFlags[i] = FDF_STRUCT_EQU;
}
-#endif
}
- }
-
-
-
-
-
- // recurse in
- for ( i=0; i<(int)mStructs.size(); i++)
- {
- if (mCMPFlags[i] == FDF_STRUCT_NEQU)
- initRecurseCmpFlags(i);
+#endif
}
}
+// recurse in
+for (i = 0; i < (int)mStructs.size(); i++)
+{
+ if (mCMPFlags[i] == FDF_STRUCT_NEQU)
+ initRecurseCmpFlags(i);
+}
+}
-
-
-static int name_is_array(char* name, int* dim1, int* dim2) {
+static int name_is_array(char *name, int *dim1, int *dim2)
+{
int len = strlen(name);
/*fprintf(stderr,"[%s]",name);*/
/*if (len >= 1) {
@@ -284,58 +262,77 @@ static int name_is_array(char* name, int* dim1, int* dim2) {
return 0;*/
char *bp;
int num;
- if (dim1) {
+ if (dim1)
+ {
*dim1 = 1;
}
- if (dim2) {
+ if (dim2)
+ {
*dim2 = 1;
}
bp = strchr(name, '[');
- if (!bp) {
+ if (!bp)
+ {
return 0;
}
num = 0;
- while (++bp < name+len-1) {
+ while (++bp < name + len - 1)
+ {
const char c = *bp;
- if (c == ']') {
+ if (c == ']')
+ {
break;
}
- if (c <= '9' && c >= '0') {
+ if (c <= '9' && c >= '0')
+ {
num *= 10;
num += (c - '0');
- } else {
+ }
+ else
+ {
printf("array parse error.\n");
return 0;
}
}
- if (dim2) {
+ if (dim2)
+ {
*dim2 = num;
}
/* find second dim, if any. */
bp = strchr(bp, '[');
- if (!bp) {
+ if (!bp)
+ {
return 1; /* at least we got the first dim. */
}
num = 0;
- while (++bp < name+len-1) {
+ while (++bp < name + len - 1)
+ {
const char c = *bp;
- if (c == ']') {
+ if (c == ']')
+ {
break;
}
- if (c <= '9' && c >= '0') {
+ if (c <= '9' && c >= '0')
+ {
num *= 10;
num += (c - '0');
- } else {
+ }
+ else
+ {
printf("array2 parse error.\n");
return 1;
}
}
- if (dim1) {
- if (dim2) {
+ if (dim1)
+ {
+ if (dim2)
+ {
*dim1 = *dim2;
*dim2 = num;
- } else {
+ }
+ else
+ {
*dim1 = num;
}
}
@@ -343,14 +340,15 @@ static int name_is_array(char* name, int* dim1, int* dim2) {
return 1;
}
-
// ----------------------------------------------------- //
void bDNA::init(char *data, int len, bool swap)
{
- int *intPtr=0;short *shtPtr=0;
- char *cp = 0;int dataLen =0;
+ int *intPtr = 0;
+ short *shtPtr = 0;
+ char *cp = 0;
+ int dataLen = 0;
//long nr=0;
- intPtr = (int*)data;
+ intPtr = (int *)data;
/*
SDNA (4 bytes) (magic number)
@@ -360,38 +358,35 @@ void bDNA::init(char *data, int len, bool swap)
<string>
*/
- if (strncmp(data, "SDNA", 4)==0)
+ if (strncmp(data, "SDNA", 4) == 0)
{
// skip ++ NAME
- intPtr++; intPtr++;
+ intPtr++;
+ intPtr++;
}
-
-
// Parse names
- if (swap)
+ if (swap)
{
*intPtr = ChunkUtils::swapInt(*intPtr);
}
dataLen = *intPtr;
intPtr++;
- cp = (char*)intPtr;
+ cp = (char *)intPtr;
int i;
- for ( i=0; i<dataLen; i++)
+ for (i = 0; i < dataLen; i++)
{
bNameInfo info;
info.m_name = cp;
info.m_isPointer = (info.m_name[0] == '*') || (info.m_name[1] == '*');
- name_is_array(info.m_name,&info.m_dim0,&info.m_dim1);
+ name_is_array(info.m_name, &info.m_dim0, &info.m_dim1);
m_Names.push_back(info);
- while (*cp)cp++;
+ while (*cp) cp++;
cp++;
}
-
- cp = b3AlignPointer(cp,4);
-
+ cp = b3AlignPointer(cp, 4);
/*
TYPE (4 bytes)
@@ -400,26 +395,26 @@ void bDNA::init(char *data, int len, bool swap)
<string>
*/
- intPtr = (int*)cp;
- assert(strncmp(cp, "TYPE", 4)==0); intPtr++;
+ intPtr = (int *)cp;
+ assert(strncmp(cp, "TYPE", 4) == 0);
+ intPtr++;
- if (swap)
+ if (swap)
{
*intPtr = ChunkUtils::swapInt(*intPtr);
}
dataLen = *intPtr;
intPtr++;
- cp = (char*)intPtr;
- for ( i=0; i<dataLen; i++)
+ cp = (char *)intPtr;
+ for (i = 0; i < dataLen; i++)
{
mTypes.push_back(cp);
- while (*cp)cp++;
+ while (*cp) cp++;
cp++;
}
-
- cp = b3AlignPointer(cp,4);
+ cp = b3AlignPointer(cp, 4);
/*
TLEN (4 bytes)
@@ -428,13 +423,14 @@ void bDNA::init(char *data, int len, bool swap)
*/
// Parse type lens
- intPtr = (int*)cp;
- assert(strncmp(cp, "TLEN", 4)==0); intPtr++;
+ intPtr = (int *)cp;
+ assert(strncmp(cp, "TLEN", 4) == 0);
+ intPtr++;
dataLen = (int)mTypes.size();
- shtPtr = (short*)intPtr;
- for ( i=0; i<dataLen; i++, shtPtr++)
+ shtPtr = (short *)intPtr;
+ for (i = 0; i < dataLen; i++, shtPtr++)
{
if (swap)
shtPtr[0] = ChunkUtils::swapShort(shtPtr[0]);
@@ -454,94 +450,89 @@ void bDNA::init(char *data, int len, bool swap)
<namenr>
*/
- intPtr = (int*)shtPtr;
- cp = (char*)intPtr;
- assert(strncmp(cp, "STRC", 4)==0); intPtr++;
+ intPtr = (int *)shtPtr;
+ cp = (char *)intPtr;
+ assert(strncmp(cp, "STRC", 4) == 0);
+ intPtr++;
- if (swap)
+ if (swap)
{
*intPtr = ChunkUtils::swapInt(*intPtr);
}
dataLen = *intPtr;
intPtr++;
-
- shtPtr = (short*)intPtr;
- for ( i=0; i<dataLen; i++)
+ shtPtr = (short *)intPtr;
+ for (i = 0; i < dataLen; i++)
{
- mStructs.push_back (shtPtr);
+ mStructs.push_back(shtPtr);
if (swap)
{
- shtPtr[0]= ChunkUtils::swapShort(shtPtr[0]);
- shtPtr[1]= ChunkUtils::swapShort(shtPtr[1]);
+ shtPtr[0] = ChunkUtils::swapShort(shtPtr[0]);
+ shtPtr[1] = ChunkUtils::swapShort(shtPtr[1]);
int len = shtPtr[1];
- shtPtr+= 2;
+ shtPtr += 2;
- for (int a=0; a<len; a++, shtPtr+=2)
+ for (int a = 0; a < len; a++, shtPtr += 2)
{
- shtPtr[0]= ChunkUtils::swapShort(shtPtr[0]);
- shtPtr[1]= ChunkUtils::swapShort(shtPtr[1]);
+ shtPtr[0] = ChunkUtils::swapShort(shtPtr[0]);
+ shtPtr[1] = ChunkUtils::swapShort(shtPtr[1]);
}
}
else
- shtPtr+= (2*shtPtr[1])+2;
+ shtPtr += (2 * shtPtr[1]) + 2;
}
-
// build reverse lookups
- for ( i=0; i<(int)mStructs.size(); i++)
+ for (i = 0; i < (int)mStructs.size(); i++)
{
short *strc = mStructs.at(i);
- if (!mPtrLen && strcmp(mTypes[strc[0]],"ListBase")==0)
+ if (!mPtrLen && strcmp(mTypes[strc[0]], "ListBase") == 0)
{
- mPtrLen = mTlens[strc[0]]/2;
+ mPtrLen = mTlens[strc[0]] / 2;
}
mStructReverse.insert(strc[0], i);
- mTypeLookup.insert(b3HashString(mTypes[strc[0]]),i);
+ mTypeLookup.insert(b3HashString(mTypes[strc[0]]), i);
}
}
-
// ----------------------------------------------------- //
-int bDNA::getArraySize(char* string)
+int bDNA::getArraySize(char *string)
{
int ret = 1;
int len = strlen(string);
-
- char* next = 0;
- for (int i=0; i<len; i++)
+ char *next = 0;
+ for (int i = 0; i < len; i++)
{
char c = string[i];
if (c == '[')
- next = &string[i+1];
- else if (c==']')
+ next = &string[i + 1];
+ else if (c == ']')
if (next)
ret *= atoi(next);
}
-// print (string << ' ' << ret);
+ // print (string << ' ' << ret);
return ret;
}
-
void bDNA::dumpTypeDefinitions()
{
int i;
int numTypes = mTypes.size();
-
- for (i=0;i<numTypes;i++)
- {
+ for (i = 0; i < numTypes; i++)
+ {
}
- for ( i=0; i<(int)mStructs.size(); i++)
+ for (i = 0; i < (int)mStructs.size(); i++)
{
- int totalBytes=0;
+ int totalBytes = 0;
short *oldStruct = mStructs[i];
int oldLookup = getReverseType(oldStruct[0]);
@@ -551,44 +542,46 @@ void bDNA::dumpTypeDefinitions()
continue;
}
- short* newStruct = mStructs[oldLookup];
- char* typeName = mTypes[newStruct[0]];
- printf("%3d: %s ",i,typeName);
-
+ short *newStruct = mStructs[oldLookup];
+ char *typeName = mTypes[newStruct[0]];
+ printf("%3d: %s ", i, typeName);
+
//char *name = mNames[oldStruct[1]];
int len = oldStruct[1];
- printf(" (%d fields) ",len);
- oldStruct+=2;
+ printf(" (%d fields) ", len);
+ oldStruct += 2;
printf("{");
int j;
- for (j=0; j<len; ++j,oldStruct+=2) {
- const char* name = m_Names[oldStruct[1]].m_name;
- printf("%s %s", mTypes[oldStruct[0]],name);
- int elemNumBytes= 0;
+ for (j = 0; j < len; ++j, oldStruct += 2)
+ {
+ const char *name = m_Names[oldStruct[1]].m_name;
+ printf("%s %s", mTypes[oldStruct[0]], name);
+ int elemNumBytes = 0;
int arrayDimensions = getArraySizeNew(oldStruct[1]);
if (m_Names[oldStruct[1]].m_isPointer)
{
elemNumBytes = VOID_IS_8 ? 8 : 4;
- } else
+ }
+ else
{
elemNumBytes = getLength(oldStruct[0]);
}
- printf(" /* %d bytes */",elemNumBytes*arrayDimensions);
-
- if (j == len-1) {
+ printf(" /* %d bytes */", elemNumBytes * arrayDimensions);
+
+ if (j == len - 1)
+ {
printf(";}");
- } else {
+ }
+ else
+ {
printf("; ");
}
- totalBytes+=elemNumBytes*arrayDimensions;
+ totalBytes += elemNumBytes * arrayDimensions;
}
- printf("\ntotalBytes=%d\n\n",totalBytes);
-
+ printf("\ntotalBytes=%d\n\n", totalBytes);
}
-
-
#if 0
/* dump out display of types and their sizes */
@@ -618,12 +611,6 @@ void bDNA::dumpTypeDefinitions()
}
}
#endif
-
}
-
-
-
//eof
-
-
diff --git a/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3DNA.h b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3DNA.h
index 6e60087cce..ca6004d960 100644
--- a/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3DNA.h
+++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3DNA.h
@@ -16,95 +16,86 @@ subject to the following restrictions:
#ifndef __BDNA_H__
#define __BDNA_H__
-
#include "b3Common.h"
-namespace bParse {
-
- struct bNameInfo
+namespace bParse
+{
+struct bNameInfo
+{
+ char *m_name;
+ bool m_isPointer;
+ int m_dim0;
+ int m_dim1;
+};
+
+class bDNA
+{
+public:
+ bDNA();
+ ~bDNA();
+
+ void init(char *data, int len, bool swap = false);
+
+ int getArraySize(char *str);
+ int getArraySizeNew(short name)
{
- char* m_name;
- bool m_isPointer;
- int m_dim0;
- int m_dim1;
- };
-
- class bDNA
+ const bNameInfo &nameInfo = m_Names[name];
+ return nameInfo.m_dim0 * nameInfo.m_dim1;
+ }
+ int getElementSize(short type, short name)
{
- public:
- bDNA();
- ~bDNA();
-
- void init(char *data, int len, bool swap=false);
-
- int getArraySize(char* str);
- int getArraySizeNew(short name)
- {
- const bNameInfo& nameInfo = m_Names[name];
- return nameInfo.m_dim0*nameInfo.m_dim1;
- }
- int getElementSize(short type, short name)
- {
- const bNameInfo& nameInfo = m_Names[name];
- int size = nameInfo.m_isPointer ? mPtrLen*nameInfo.m_dim0*nameInfo.m_dim1 : mTlens[type]*nameInfo.m_dim0*nameInfo.m_dim1;
- return size;
- }
-
- int getNumNames() const
- {
- return m_Names.size();
- }
-
- char *getName(int ind);
- char *getType(int ind);
- short *getStruct(int ind);
- short getLength(int ind);
- int getReverseType(short type);
- int getReverseType(const char *type);
-
-
- int getNumStructs();
-
- //
- bool lessThan(bDNA* other);
-
- void initCmpFlags(bDNA *memDNA);
- bool flagNotEqual(int dna_nr);
- bool flagEqual(int dna_nr);
- bool flagNone(int dna_nr);
+ const bNameInfo &nameInfo = m_Names[name];
+ int size = nameInfo.m_isPointer ? mPtrLen * nameInfo.m_dim0 * nameInfo.m_dim1 : mTlens[type] * nameInfo.m_dim0 * nameInfo.m_dim1;
+ return size;
+ }
+ int getNumNames() const
+ {
+ return m_Names.size();
+ }
- int getPointerSize();
+ char *getName(int ind);
+ char *getType(int ind);
+ short *getStruct(int ind);
+ short getLength(int ind);
+ int getReverseType(short type);
+ int getReverseType(const char *type);
- void dumpTypeDefinitions();
+ int getNumStructs();
-
- private:
- enum FileDNAFlags
- {
- FDF_NONE=0,
- FDF_STRUCT_NEQU,
- FDF_STRUCT_EQU
- };
+ //
+ bool lessThan(bDNA *other);
- void initRecurseCmpFlags(int i);
+ void initCmpFlags(bDNA *memDNA);
+ bool flagNotEqual(int dna_nr);
+ bool flagEqual(int dna_nr);
+ bool flagNone(int dna_nr);
- b3AlignedObjectArray<int> mCMPFlags;
+ int getPointerSize();
- b3AlignedObjectArray<bNameInfo> m_Names;
- b3AlignedObjectArray<char*> mTypes;
- b3AlignedObjectArray<short*> mStructs;
- b3AlignedObjectArray<short> mTlens;
- b3HashMap<b3HashInt, int> mStructReverse;
- b3HashMap<b3HashString,int> mTypeLookup;
+ void dumpTypeDefinitions();
- int mPtrLen;
-
+private:
+ enum FileDNAFlags
+ {
+ FDF_NONE = 0,
+ FDF_STRUCT_NEQU,
+ FDF_STRUCT_EQU
+ };
+ void initRecurseCmpFlags(int i);
+ b3AlignedObjectArray<int> mCMPFlags;
- };
-}
+ b3AlignedObjectArray<bNameInfo> m_Names;
+ b3AlignedObjectArray<char *> mTypes;
+ b3AlignedObjectArray<short *> mStructs;
+ b3AlignedObjectArray<short> mTlens;
+ b3HashMap<b3HashInt, int> mStructReverse;
+ b3HashMap<b3HashString, int> mTypeLookup;
+ int mPtrLen;
+};
+} // namespace bParse
-#endif//__BDNA_H__
+#endif //__BDNA_H__
diff --git a/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Defines.h b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Defines.h
index 8f28d3c441..0524c94db1 100644
--- a/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Defines.h
+++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Defines.h
@@ -19,118 +19,131 @@
#ifndef __B_DEFINES_H__
#define __B_DEFINES_H__
-
// MISC defines, see BKE_global.h, BKE_utildefines.h
#define B3_SIZEOFBLENDERHEADER 12
-
// ------------------------------------------------------------
-#if defined(__sgi) || defined (__sparc) || defined (__sparc__) || defined (__PPC__) || defined (__ppc__) || defined (__BIG_ENDIAN__)
-# define B3_MAKE_ID(a,b,c,d) ( (int)(a)<<24 | (int)(b)<<16 | (c)<<8 | (d) )
+#if defined(__sgi) || defined(__sparc) || defined(__sparc__) || defined(__PPC__) || defined(__ppc__) || defined(__BIG_ENDIAN__)
+#define B3_MAKE_ID(a, b, c, d) ((int)(a) << 24 | (int)(b) << 16 | (c) << 8 | (d))
#else
-# define B3_MAKE_ID(a,b,c,d) ( (int)(d)<<24 | (int)(c)<<16 | (b)<<8 | (a) )
+#define B3_MAKE_ID(a, b, c, d) ((int)(d) << 24 | (int)(c) << 16 | (b) << 8 | (a))
#endif
-
// ------------------------------------------------------------
-#if defined(__sgi) || defined(__sparc) || defined(__sparc__) || defined (__PPC__) || defined (__ppc__) || defined (__BIG_ENDIAN__)
-# define B3_MAKE_ID2(c, d) ( (c)<<8 | (d) )
+#if defined(__sgi) || defined(__sparc) || defined(__sparc__) || defined(__PPC__) || defined(__ppc__) || defined(__BIG_ENDIAN__)
+#define B3_MAKE_ID2(c, d) ((c) << 8 | (d))
#else
-# define B3_MAKE_ID2(c, d) ( (d)<<8 | (c) )
+#define B3_MAKE_ID2(c, d) ((d) << 8 | (c))
#endif
// ------------------------------------------------------------
-#define B3_ID_SCE B3_MAKE_ID2('S', 'C')
-#define B3_ID_LI B3_MAKE_ID2('L', 'I')
-#define B3_ID_OB B3_MAKE_ID2('O', 'B')
-#define B3_ID_ME B3_MAKE_ID2('M', 'E')
-#define B3_ID_CU B3_MAKE_ID2('C', 'U')
-#define B3_ID_MB B3_MAKE_ID2('M', 'B')
-#define B3_ID_MA B3_MAKE_ID2('M', 'A')
-#define B3_ID_TE B3_MAKE_ID2('T', 'E')
-#define B3_ID_IM B3_MAKE_ID2('I', 'M')
-#define B3_ID_IK B3_MAKE_ID2('I', 'K')
-#define B3_ID_WV B3_MAKE_ID2('W', 'V')
-#define B3_ID_LT B3_MAKE_ID2('L', 'T')
-#define B3_ID_SE B3_MAKE_ID2('S', 'E')
-#define B3_ID_LF B3_MAKE_ID2('L', 'F')
-#define B3_ID_LA B3_MAKE_ID2('L', 'A')
-#define B3_ID_CA B3_MAKE_ID2('C', 'A')
-#define B3_ID_IP B3_MAKE_ID2('I', 'P')
-#define B3_ID_KE B3_MAKE_ID2('K', 'E')
-#define B3_ID_WO B3_MAKE_ID2('W', 'O')
-#define B3_ID_SCR B3_MAKE_ID2('S', 'R')
-#define B3_ID_VF B3_MAKE_ID2('V', 'F')
-#define B3_ID_TXT B3_MAKE_ID2('T', 'X')
-#define B3_ID_SO B3_MAKE_ID2('S', 'O')
-#define B3_ID_SAMPLE B3_MAKE_ID2('S', 'A')
-#define B3_ID_GR B3_MAKE_ID2('G', 'R')
-#define B3_ID_ID B3_MAKE_ID2('I', 'D')
-#define B3_ID_AR B3_MAKE_ID2('A', 'R')
-#define B3_ID_AC B3_MAKE_ID2('A', 'C')
-#define B3_ID_SCRIPT B3_MAKE_ID2('P', 'Y')
-#define B3_ID_FLUIDSIM B3_MAKE_ID2('F', 'S')
-#define B3_ID_NT B3_MAKE_ID2('N', 'T')
-#define B3_ID_BR B3_MAKE_ID2('B', 'R')
-
-
-#define B3_ID_SEQ B3_MAKE_ID2('S', 'Q')
-#define B3_ID_CO B3_MAKE_ID2('C', 'O')
-#define B3_ID_PO B3_MAKE_ID2('A', 'C')
-#define B3_ID_NLA B3_MAKE_ID2('N', 'L')
-
-#define B3_ID_VS B3_MAKE_ID2('V', 'S')
-#define B3_ID_VN B3_MAKE_ID2('V', 'N')
-
+#define B3_ID_SCE B3_MAKE_ID2('S', 'C')
+#define B3_ID_LI B3_MAKE_ID2('L', 'I')
+#define B3_ID_OB B3_MAKE_ID2('O', 'B')
+#define B3_ID_ME B3_MAKE_ID2('M', 'E')
+#define B3_ID_CU B3_MAKE_ID2('C', 'U')
+#define B3_ID_MB B3_MAKE_ID2('M', 'B')
+#define B3_ID_MA B3_MAKE_ID2('M', 'A')
+#define B3_ID_TE B3_MAKE_ID2('T', 'E')
+#define B3_ID_IM B3_MAKE_ID2('I', 'M')
+#define B3_ID_IK B3_MAKE_ID2('I', 'K')
+#define B3_ID_WV B3_MAKE_ID2('W', 'V')
+#define B3_ID_LT B3_MAKE_ID2('L', 'T')
+#define B3_ID_SE B3_MAKE_ID2('S', 'E')
+#define B3_ID_LF B3_MAKE_ID2('L', 'F')
+#define B3_ID_LA B3_MAKE_ID2('L', 'A')
+#define B3_ID_CA B3_MAKE_ID2('C', 'A')
+#define B3_ID_IP B3_MAKE_ID2('I', 'P')
+#define B3_ID_KE B3_MAKE_ID2('K', 'E')
+#define B3_ID_WO B3_MAKE_ID2('W', 'O')
+#define B3_ID_SCR B3_MAKE_ID2('S', 'R')
+#define B3_ID_VF B3_MAKE_ID2('V', 'F')
+#define B3_ID_TXT B3_MAKE_ID2('T', 'X')
+#define B3_ID_SO B3_MAKE_ID2('S', 'O')
+#define B3_ID_SAMPLE B3_MAKE_ID2('S', 'A')
+#define B3_ID_GR B3_MAKE_ID2('G', 'R')
+#define B3_ID_ID B3_MAKE_ID2('I', 'D')
+#define B3_ID_AR B3_MAKE_ID2('A', 'R')
+#define B3_ID_AC B3_MAKE_ID2('A', 'C')
+#define B3_ID_SCRIPT B3_MAKE_ID2('P', 'Y')
+#define B3_ID_FLUIDSIM B3_MAKE_ID2('F', 'S')
+#define B3_ID_NT B3_MAKE_ID2('N', 'T')
+#define B3_ID_BR B3_MAKE_ID2('B', 'R')
+
+#define B3_ID_SEQ B3_MAKE_ID2('S', 'Q')
+#define B3_ID_CO B3_MAKE_ID2('C', 'O')
+#define B3_ID_PO B3_MAKE_ID2('A', 'C')
+#define B3_ID_NLA B3_MAKE_ID2('N', 'L')
+
+#define B3_ID_VS B3_MAKE_ID2('V', 'S')
+#define B3_ID_VN B3_MAKE_ID2('V', 'N')
// ------------------------------------------------------------
-#define B3_FORM B3_MAKE_ID('F','O','R','M')
-#define B3_DDG1 B3_MAKE_ID('3','D','G','1')
-#define B3_DDG2 B3_MAKE_ID('3','D','G','2')
-#define B3_DDG3 B3_MAKE_ID('3','D','G','3')
-#define B3_DDG4 B3_MAKE_ID('3','D','G','4')
-#define B3_GOUR B3_MAKE_ID('G','O','U','R')
-#define B3_BLEN B3_MAKE_ID('B','L','E','N')
-#define B3_DER_ B3_MAKE_ID('D','E','R','_')
-#define B3_V100 B3_MAKE_ID('V','1','0','0')
-#define B3_DATA B3_MAKE_ID('D','A','T','A')
-#define B3_GLOB B3_MAKE_ID('G','L','O','B')
-#define B3_IMAG B3_MAKE_ID('I','M','A','G')
-#define B3_TEST B3_MAKE_ID('T','E','S','T')
-#define B3_USER B3_MAKE_ID('U','S','E','R')
-
+#define B3_FORM B3_MAKE_ID('F', 'O', 'R', 'M')
+#define B3_DDG1 B3_MAKE_ID('3', 'D', 'G', '1')
+#define B3_DDG2 B3_MAKE_ID('3', 'D', 'G', '2')
+#define B3_DDG3 B3_MAKE_ID('3', 'D', 'G', '3')
+#define B3_DDG4 B3_MAKE_ID('3', 'D', 'G', '4')
+#define B3_GOUR B3_MAKE_ID('G', 'O', 'U', 'R')
+#define B3_BLEN B3_MAKE_ID('B', 'L', 'E', 'N')
+#define B3_DER_ B3_MAKE_ID('D', 'E', 'R', '_')
+#define B3_V100 B3_MAKE_ID('V', '1', '0', '0')
+#define B3_DATA B3_MAKE_ID('D', 'A', 'T', 'A')
+#define B3_GLOB B3_MAKE_ID('G', 'L', 'O', 'B')
+#define B3_IMAG B3_MAKE_ID('I', 'M', 'A', 'G')
+#define B3_TEST B3_MAKE_ID('T', 'E', 'S', 'T')
+#define B3_USER B3_MAKE_ID('U', 'S', 'E', 'R')
// ------------------------------------------------------------
-#define B3_DNA1 B3_MAKE_ID('D','N','A','1')
-#define B3_REND B3_MAKE_ID('R','E','N','D')
-#define B3_ENDB B3_MAKE_ID('E','N','D','B')
-#define B3_NAME B3_MAKE_ID('N','A','M','E')
-#define B3_SDNA B3_MAKE_ID('S','D','N','A')
-#define B3_TYPE B3_MAKE_ID('T','Y','P','E')
-#define B3_TLEN B3_MAKE_ID('T','L','E','N')
-#define B3_STRC B3_MAKE_ID('S','T','R','C')
-
+#define B3_DNA1 B3_MAKE_ID('D', 'N', 'A', '1')
+#define B3_REND B3_MAKE_ID('R', 'E', 'N', 'D')
+#define B3_ENDB B3_MAKE_ID('E', 'N', 'D', 'B')
+#define B3_NAME B3_MAKE_ID('N', 'A', 'M', 'E')
+#define B3_SDNA B3_MAKE_ID('S', 'D', 'N', 'A')
+#define B3_TYPE B3_MAKE_ID('T', 'Y', 'P', 'E')
+#define B3_TLEN B3_MAKE_ID('T', 'L', 'E', 'N')
+#define B3_STRC B3_MAKE_ID('S', 'T', 'R', 'C')
// ------------------------------------------------------------
-#define B3_SWITCH_INT(a) { \
- char s_i, *p_i; \
- p_i= (char *)&(a); \
- s_i=p_i[0]; p_i[0]=p_i[3]; p_i[3]=s_i; \
- s_i=p_i[1]; p_i[1]=p_i[2]; p_i[2]=s_i; }
+#define B3_SWITCH_INT(a) \
+ { \
+ char s_i, *p_i; \
+ p_i = (char *)&(a); \
+ s_i = p_i[0]; \
+ p_i[0] = p_i[3]; \
+ p_i[3] = s_i; \
+ s_i = p_i[1]; \
+ p_i[1] = p_i[2]; \
+ p_i[2] = s_i; \
+ }
// ------------------------------------------------------------
-#define B3_SWITCH_SHORT(a) { \
- char s_i, *p_i; \
- p_i= (char *)&(a); \
- s_i=p_i[0]; p_i[0]=p_i[1]; p_i[1]=s_i; }
+#define B3_SWITCH_SHORT(a) \
+ { \
+ char s_i, *p_i; \
+ p_i = (char *)&(a); \
+ s_i = p_i[0]; \
+ p_i[0] = p_i[1]; \
+ p_i[1] = s_i; \
+ }
// ------------------------------------------------------------
-#define B3_SWITCH_LONGINT(a) { \
- char s_i, *p_i; \
- p_i= (char *)&(a); \
- s_i=p_i[0]; p_i[0]=p_i[7]; p_i[7]=s_i; \
- s_i=p_i[1]; p_i[1]=p_i[6]; p_i[6]=s_i; \
- s_i=p_i[2]; p_i[2]=p_i[5]; p_i[5]=s_i; \
- s_i=p_i[3]; p_i[3]=p_i[4]; p_i[4]=s_i; }
-
-#endif//__B_DEFINES_H__
+#define B3_SWITCH_LONGINT(a) \
+ { \
+ char s_i, *p_i; \
+ p_i = (char *)&(a); \
+ s_i = p_i[0]; \
+ p_i[0] = p_i[7]; \
+ p_i[7] = s_i; \
+ s_i = p_i[1]; \
+ p_i[1] = p_i[6]; \
+ p_i[6] = s_i; \
+ s_i = p_i[2]; \
+ p_i[2] = p_i[5]; \
+ p_i[5] = s_i; \
+ s_i = p_i[3]; \
+ p_i[3] = p_i[4]; \
+ p_i[4] = s_i; \
+ }
+
+#endif //__B_DEFINES_H__
diff --git a/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3File.cpp b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3File.cpp
index 432f7fc2b4..145de62db3 100644
--- a/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3File.cpp
+++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3File.cpp
@@ -29,39 +29,38 @@ subject to the following restrictions:
using namespace bParse;
#define MAX_STRLEN 1024
-const char* getCleanName(const char* memName, char* buffer)
+const char *getCleanName(const char *memName, char *buffer)
{
int slen = strlen(memName);
- assert(slen<MAX_STRLEN);
- slen=b3Min(slen,MAX_STRLEN);
- for (int i=0;i<slen;i++)
+ assert(slen < MAX_STRLEN);
+ slen = b3Min(slen, MAX_STRLEN);
+ for (int i = 0; i < slen; i++)
{
- if (memName[i]==']'||memName[i]=='[')
+ if (memName[i] == ']' || memName[i] == '[')
{
- buffer[i] = 0;//'_';
- } else
+ buffer[i] = 0; //'_';
+ }
+ else
{
buffer[i] = memName[i];
}
}
- buffer[slen]=0;
+ buffer[slen] = 0;
return buffer;
}
-
-
// ----------------------------------------------------- //
bFile::bFile(const char *filename, const char headerString[7])
- : mOwnsBuffer(true),
- mFileBuffer(0),
- mFileLen(0),
- mVersion(0),
- mDataStart(0),
- mFileDNA(0),
- mMemoryDNA(0),
- mFlags(FD_INVALID)
+ : mOwnsBuffer(true),
+ mFileBuffer(0),
+ mFileLen(0),
+ mVersion(0),
+ mDataStart(0),
+ mFileDNA(0),
+ mMemoryDNA(0),
+ mFlags(FD_INVALID)
{
- for (int i=0;i<7;i++)
+ for (int i = 0; i < 7; i++)
{
m_headerString[i] = headerString[i];
}
@@ -73,7 +72,7 @@ bFile::bFile(const char *filename, const char headerString[7])
mFileLen = ftell(fp);
fseek(fp, 0L, SEEK_SET);
- mFileBuffer = (char*)malloc(mFileLen+1);
+ mFileBuffer = (char *)malloc(mFileLen + 1);
int bytesRead;
bytesRead = fread(mFileBuffer, mFileLen, 1, fp);
@@ -81,22 +80,21 @@ bFile::bFile(const char *filename, const char headerString[7])
//
parseHeader();
-
}
}
// ----------------------------------------------------- //
-bFile::bFile( char *memoryBuffer, int len, const char headerString[7])
-: mOwnsBuffer(false),
- mFileBuffer(0),
- mFileLen(0),
- mVersion(0),
- mDataStart(0),
- mFileDNA(0),
- mMemoryDNA(0),
- mFlags(FD_INVALID)
+bFile::bFile(char *memoryBuffer, int len, const char headerString[7])
+ : mOwnsBuffer(false),
+ mFileBuffer(0),
+ mFileLen(0),
+ mVersion(0),
+ mDataStart(0),
+ mFileDNA(0),
+ mMemoryDNA(0),
+ mFlags(FD_INVALID)
{
- for (int i=0;i<7;i++)
+ for (int i = 0; i < 7; i++)
{
m_headerString[i] = headerString[i];
}
@@ -104,10 +102,8 @@ bFile::bFile( char *memoryBuffer, int len, const char headerString[7])
mFileLen = len;
parseHeader();
-
}
-
// ----------------------------------------------------- //
bFile::~bFile()
{
@@ -117,15 +113,10 @@ bFile::~bFile()
mFileBuffer = 0;
}
-
delete mMemoryDNA;
delete mFileDNA;
}
-
-
-
-
// ----------------------------------------------------- //
void bFile::parseHeader()
{
@@ -133,11 +124,11 @@ void bFile::parseHeader()
return;
char *blenderBuf = mFileBuffer;
- char header[B3_SIZEOFBLENDERHEADER+1] ;
+ char header[B3_SIZEOFBLENDERHEADER + 1];
memcpy(header, blenderBuf, B3_SIZEOFBLENDERHEADER);
- header[B3_SIZEOFBLENDERHEADER]='\0';
+ header[B3_SIZEOFBLENDERHEADER] = '\0';
- if (strncmp(header, m_headerString, 6)!=0)
+ if (strncmp(header, m_headerString, 6) != 0)
{
memcpy(header, m_headerString, B3_SIZEOFBLENDERHEADER);
return;
@@ -148,35 +139,34 @@ void bFile::parseHeader()
mFlags |= FD_DOUBLE_PRECISION;
}
- char *ver = header+9;
+ char *ver = header + 9;
mVersion = atoi(ver);
if (mVersion <= 241)
{
//printf("Warning, %d not fully tested : <= 242\n", mVersion);
}
- int littleEndian= 1;
- littleEndian= ((char*)&littleEndian)[0];
+ int littleEndian = 1;
+ littleEndian = ((char *)&littleEndian)[0];
// swap ptr sizes...
- if (header[7]=='-')
+ if (header[7] == '-')
{
mFlags |= FD_FILE_64;
if (!VOID_IS_8)
mFlags |= FD_BITS_VARIES;
}
- else if (VOID_IS_8) mFlags |= FD_BITS_VARIES;
+ else if (VOID_IS_8)
+ mFlags |= FD_BITS_VARIES;
// swap endian...
- if (header[8]=='V')
+ if (header[8] == 'V')
{
- if (littleEndian ==1)
+ if (littleEndian == 1)
mFlags |= FD_ENDIAN_SWAP;
}
- else
- if (littleEndian==0)
- mFlags |= FD_ENDIAN_SWAP;
-
+ else if (littleEndian == 0)
+ mFlags |= FD_ENDIAN_SWAP;
mFlags |= FD_OK;
}
@@ -184,13 +174,13 @@ void bFile::parseHeader()
// ----------------------------------------------------- //
bool bFile::ok()
{
- return (mFlags &FD_OK)!=0;
+ return (mFlags & FD_OK) != 0;
}
// ----------------------------------------------------- //
-void bFile::parseInternal(int verboseMode, char* memDna,int memDnaLength)
+void bFile::parseInternal(int verboseMode, char *memDna, int memDnaLength)
{
- if ( (mFlags &FD_OK) ==0)
+ if ((mFlags & FD_OK) == 0)
return;
char *blenderData = mFileBuffer;
@@ -198,38 +188,40 @@ void bFile::parseInternal(int verboseMode, char* memDna,int memDnaLength)
dna.oldPtr = 0;
char *tempBuffer = blenderData;
- for (int i=0; i<mFileLen; i++)
+ for (int i = 0; i < mFileLen; i++)
{
// looking for the data's starting position
// and the start of SDNA decls
- if (!mDataStart && strncmp(tempBuffer, "REND", 4)==0)
+ if (!mDataStart && strncmp(tempBuffer, "REND", 4) == 0)
mDataStart = i;
- if (strncmp(tempBuffer, "DNA1", 4)==0)
+ if (strncmp(tempBuffer, "DNA1", 4) == 0)
{
// read the DNA1 block and extract SDNA
if (getNextBlock(&dna, tempBuffer, mFlags) > 0)
{
- if (strncmp((tempBuffer + ChunkUtils::getOffset(mFlags)), "SDNANAME", 8) ==0)
+ if (strncmp((tempBuffer + ChunkUtils::getOffset(mFlags)), "SDNANAME", 8) == 0)
dna.oldPtr = (tempBuffer + ChunkUtils::getOffset(mFlags));
- else dna.oldPtr = 0;
+ else
+ dna.oldPtr = 0;
}
- else dna.oldPtr = 0;
+ else
+ dna.oldPtr = 0;
}
// Some Bullet files are missing the DNA1 block
// In Blender it's DNA1 + ChunkUtils::getOffset() + SDNA + NAME
// In Bullet tests its SDNA + NAME
- else if (strncmp(tempBuffer, "SDNANAME", 8) ==0)
+ else if (strncmp(tempBuffer, "SDNANAME", 8) == 0)
{
dna.oldPtr = blenderData + i;
- dna.len = mFileLen-i;
+ dna.len = mFileLen - i;
// Also no REND block, so exit now.
- if (mVersion==276) break;
+ if (mVersion == 276) break;
}
- if (mDataStart && dna.oldPtr) break;
+ if (mDataStart && dna.oldPtr) break;
tempBuffer++;
}
if (!dna.oldPtr || !dna.len)
@@ -239,43 +231,35 @@ void bFile::parseInternal(int verboseMode, char* memDna,int memDnaLength)
return;
}
-
mFileDNA = new bDNA();
-
///mFileDNA->init will convert part of DNA file endianness to current CPU endianness if necessary
- mFileDNA->init((char*)dna.oldPtr, dna.len, (mFlags & FD_ENDIAN_SWAP)!=0);
-
+ mFileDNA->init((char *)dna.oldPtr, dna.len, (mFlags & FD_ENDIAN_SWAP) != 0);
- if (mVersion==276)
+ if (mVersion == 276)
{
int i;
- for (i=0;i<mFileDNA->getNumNames();i++)
+ for (i = 0; i < mFileDNA->getNumNames(); i++)
{
- if (strcmp(mFileDNA->getName(i),"int")==0)
+ if (strcmp(mFileDNA->getName(i), "int") == 0)
{
mFlags |= FD_BROKEN_DNA;
}
}
- if ((mFlags&FD_BROKEN_DNA)!=0)
+ if ((mFlags & FD_BROKEN_DNA) != 0)
{
//printf("warning: fixing some broken DNA version\n");
}
}
-
-
if (verboseMode & FD_VERBOSE_DUMP_DNA_TYPE_DEFINITIONS)
mFileDNA->dumpTypeDefinitions();
mMemoryDNA = new bDNA();
- int littleEndian= 1;
- littleEndian= ((char*)&littleEndian)[0];
-
- mMemoryDNA->init(memDna,memDnaLength,littleEndian==0);
-
-
+ int littleEndian = 1;
+ littleEndian = ((char *)&littleEndian)[0];
+ mMemoryDNA->init(memDna, memDnaLength, littleEndian == 0);
///@todo we need a better version check, add version/sub version info from FileGlobal into memory DNA/header files
if (mMemoryDNA->getNumNames() != mFileDNA->getNumNames())
@@ -290,7 +274,6 @@ void bFile::parseInternal(int verboseMode, char* memDna,int memDnaLength)
//printf ("Warning, file DNA is newer than built in.");
}
-
mFileDNA->initCmpFlags(mMemoryDNA);
parseData();
@@ -298,102 +281,95 @@ void bFile::parseInternal(int verboseMode, char* memDna,int memDnaLength)
resolvePointers(verboseMode);
updateOldPointers();
-
-
}
-
-
// ----------------------------------------------------- //
-void bFile::swap(char *head, bChunkInd& dataChunk, bool ignoreEndianFlag)
+void bFile::swap(char *head, bChunkInd &dataChunk, bool ignoreEndianFlag)
{
char *data = head;
short *strc = mFileDNA->getStruct(dataChunk.dna_nr);
-
-
const char s[] = "SoftBodyMaterialData";
int szs = sizeof(s);
- if (strncmp((char*)&dataChunk.code,"ARAY",4)==0)
+ if (strncmp((char *)&dataChunk.code, "ARAY", 4) == 0)
{
short *oldStruct = mFileDNA->getStruct(dataChunk.dna_nr);
char *oldType = mFileDNA->getType(oldStruct[0]);
- if (strncmp(oldType,s,szs)==0)
+ if (strncmp(oldType, s, szs) == 0)
{
return;
}
}
-
int len = mFileDNA->getLength(strc[0]);
- for (int i=0; i<dataChunk.nr; i++)
+ for (int i = 0; i < dataChunk.nr; i++)
{
- swapStruct(dataChunk.dna_nr, data,ignoreEndianFlag);
- data+=len;
+ swapStruct(dataChunk.dna_nr, data, ignoreEndianFlag);
+ data += len;
}
}
void bFile::swapLen(char *dataPtr)
{
- const bool VOID_IS_8 = ((sizeof(void*)==8));
+ const bool VOID_IS_8 = ((sizeof(void *) == 8));
if (VOID_IS_8)
{
- if (mFlags &FD_BITS_VARIES)
+ if (mFlags & FD_BITS_VARIES)
{
- bChunkPtr4*c = (bChunkPtr4*) dataPtr;
- if ((c->code & 0xFFFF)==0)
- c->code >>=16;
+ bChunkPtr4 *c = (bChunkPtr4 *)dataPtr;
+ if ((c->code & 0xFFFF) == 0)
+ c->code >>= 16;
B3_SWITCH_INT(c->len);
B3_SWITCH_INT(c->dna_nr);
B3_SWITCH_INT(c->nr);
- } else
+ }
+ else
{
- bChunkPtr8* c = (bChunkPtr8*) dataPtr;
- if ((c->code & 0xFFFF)==0)
- c->code >>=16;
+ bChunkPtr8 *c = (bChunkPtr8 *)dataPtr;
+ if ((c->code & 0xFFFF) == 0)
+ c->code >>= 16;
B3_SWITCH_INT(c->len);
B3_SWITCH_INT(c->dna_nr);
B3_SWITCH_INT(c->nr);
-
}
- } else
+ }
+ else
{
- if (mFlags &FD_BITS_VARIES)
+ if (mFlags & FD_BITS_VARIES)
{
- bChunkPtr8*c = (bChunkPtr8*) dataPtr;
- if ((c->code & 0xFFFF)==0)
- c->code >>=16;
+ bChunkPtr8 *c = (bChunkPtr8 *)dataPtr;
+ if ((c->code & 0xFFFF) == 0)
+ c->code >>= 16;
B3_SWITCH_INT(c->len);
B3_SWITCH_INT(c->dna_nr);
B3_SWITCH_INT(c->nr);
-
- } else
+ }
+ else
{
- bChunkPtr4* c = (bChunkPtr4*) dataPtr;
- if ((c->code & 0xFFFF)==0)
- c->code >>=16;
+ bChunkPtr4 *c = (bChunkPtr4 *)dataPtr;
+ if ((c->code & 0xFFFF) == 0)
+ c->code >>= 16;
B3_SWITCH_INT(c->len);
B3_SWITCH_INT(c->dna_nr);
B3_SWITCH_INT(c->nr);
-
}
}
-
}
-
-void bFile::swapDNA(char* ptr)
+void bFile::swapDNA(char *ptr)
{
- bool swap = ((mFlags & FD_ENDIAN_SWAP)!=0);
-
- char* data = &ptr[20];
-// void bDNA::init(char *data, int len, bool swap)
- int *intPtr=0;short *shtPtr=0;
- char *cp = 0;int dataLen =0;
+ bool swap = ((mFlags & FD_ENDIAN_SWAP) != 0);
+
+ char *data = &ptr[20];
+ // void bDNA::init(char *data, int len, bool swap)
+ int *intPtr = 0;
+ short *shtPtr = 0;
+ char *cp = 0;
+ int dataLen = 0;
//long nr=0;
- intPtr = (int*)data;
+ intPtr = (int *)data;
/*
SDNA (4 bytes) (magic number)
@@ -403,14 +379,13 @@ void bFile::swapDNA(char* ptr)
<string>
*/
- if (strncmp(data, "SDNA", 4)==0)
+ if (strncmp(data, "SDNA", 4) == 0)
{
// skip ++ NAME
- intPtr++; intPtr++;
+ intPtr++;
+ intPtr++;
}
-
-
// Parse names
if (swap)
dataLen = ChunkUtils::swapInt(*intPtr);
@@ -420,16 +395,15 @@ void bFile::swapDNA(char* ptr)
*intPtr = ChunkUtils::swapInt(*intPtr);
intPtr++;
- cp = (char*)intPtr;
+ cp = (char *)intPtr;
int i;
- for ( i=0; i<dataLen; i++)
+ for (i = 0; i < dataLen; i++)
{
- while (*cp)cp++;
+ while (*cp) cp++;
cp++;
}
-
- cp = b3AlignPointer(cp,4);
+ cp = b3AlignPointer(cp, 4);
/*
TYPE (4 bytes)
@@ -438,8 +412,9 @@ void bFile::swapDNA(char* ptr)
<string>
*/
- intPtr = (int*)cp;
- assert(strncmp(cp, "TYPE", 4)==0); intPtr++;
+ intPtr = (int *)cp;
+ assert(strncmp(cp, "TYPE", 4) == 0);
+ intPtr++;
if (swap)
dataLen = ChunkUtils::swapInt(*intPtr);
@@ -450,14 +425,14 @@ void bFile::swapDNA(char* ptr)
intPtr++;
- cp = (char*)intPtr;
- for ( i=0; i<dataLen; i++)
+ cp = (char *)intPtr;
+ for (i = 0; i < dataLen; i++)
{
- while (*cp)cp++;
+ while (*cp) cp++;
cp++;
}
- cp = b3AlignPointer(cp,4);
+ cp = b3AlignPointer(cp, 4);
/*
TLEN (4 bytes)
@@ -466,15 +441,15 @@ void bFile::swapDNA(char* ptr)
*/
// Parse type lens
- intPtr = (int*)cp;
- assert(strncmp(cp, "TLEN", 4)==0); intPtr++;
-
+ intPtr = (int *)cp;
+ assert(strncmp(cp, "TLEN", 4) == 0);
+ intPtr++;
- shtPtr = (short*)intPtr;
- for ( i=0; i<dataLen; i++, shtPtr++)
+ shtPtr = (short *)intPtr;
+ for (i = 0; i < dataLen; i++, shtPtr++)
{
//??????if (swap)
- shtPtr[0] = ChunkUtils::swapShort(shtPtr[0]);
+ shtPtr[0] = ChunkUtils::swapShort(shtPtr[0]);
}
if (dataLen & 1)
@@ -491,9 +466,9 @@ void bFile::swapDNA(char* ptr)
<namenr>
*/
- intPtr = (int*)shtPtr;
- cp = (char*)intPtr;
- assert(strncmp(cp, "STRC", 4)==0);
+ intPtr = (int *)shtPtr;
+ cp = (char *)intPtr;
+ assert(strncmp(cp, "STRC", 4) == 0);
intPtr++;
if (swap)
@@ -505,66 +480,56 @@ void bFile::swapDNA(char* ptr)
intPtr++;
-
- shtPtr = (short*)intPtr;
- for ( i=0; i<dataLen; i++)
+ shtPtr = (short *)intPtr;
+ for (i = 0; i < dataLen; i++)
{
-
//if (swap)
{
int len = shtPtr[1];
- shtPtr[0]= ChunkUtils::swapShort(shtPtr[0]);
- shtPtr[1]= ChunkUtils::swapShort(shtPtr[1]);
+ shtPtr[0] = ChunkUtils::swapShort(shtPtr[0]);
+ shtPtr[1] = ChunkUtils::swapShort(shtPtr[1]);
- shtPtr+= 2;
+ shtPtr += 2;
- for (int a=0; a<len; a++, shtPtr+=2)
+ for (int a = 0; a < len; a++, shtPtr += 2)
{
- shtPtr[0]= ChunkUtils::swapShort(shtPtr[0]);
- shtPtr[1]= ChunkUtils::swapShort(shtPtr[1]);
+ shtPtr[0] = ChunkUtils::swapShort(shtPtr[0]);
+ shtPtr[1] = ChunkUtils::swapShort(shtPtr[1]);
}
}
-// else
-// shtPtr+= (2*shtPtr[1])+2;
+ // else
+ // shtPtr+= (2*shtPtr[1])+2;
}
-
}
-void bFile::writeFile(const char* fileName)
+void bFile::writeFile(const char *fileName)
{
- FILE* f = fopen(fileName,"wb");
- fwrite(mFileBuffer,1,mFileLen,f);
+ FILE *f = fopen(fileName, "wb");
+ fwrite(mFileBuffer, 1, mFileLen, f);
fclose(f);
}
void bFile::preSwap()
{
-
//const bool brokenDNA = (mFlags&FD_BROKEN_DNA)!=0;
//FD_ENDIAN_SWAP
//byte 8 determines the endianness of the file, little (v) versus big (V)
- int littleEndian= 1;
- littleEndian= ((char*)&littleEndian)[0];
-
+ int littleEndian = 1;
+ littleEndian = ((char *)&littleEndian)[0];
- if (mFileBuffer[8]=='V')
+ if (mFileBuffer[8] == 'V')
{
- mFileBuffer[8]='v';
+ mFileBuffer[8] = 'v';
}
else
{
- mFileBuffer[8]='V';
+ mFileBuffer[8] = 'V';
}
-
-
-
-
-
mDataStart = 12;
- char *dataPtr = mFileBuffer+mDataStart;
+ char *dataPtr = mFileBuffer + mDataStart;
bChunkInd dataChunk;
dataChunk.code = 0;
@@ -579,21 +544,22 @@ void bFile::preSwap()
while (1)
{
// one behind
- if (dataChunk.code == B3_SDNA || dataChunk.code==B3_DNA1 || dataChunk.code == B3_TYPE || dataChunk.code == B3_TLEN || dataChunk.code==B3_STRC)
+ if (dataChunk.code == B3_SDNA || dataChunk.code == B3_DNA1 || dataChunk.code == B3_TYPE || dataChunk.code == B3_TLEN || dataChunk.code == B3_STRC)
{
-
swapDNA(dataPtr);
break;
- } else
+ }
+ else
{
//if (dataChunk.code == DNA1) break;
- dataPtrHead = dataPtr+ChunkUtils::getOffset(mFlags);
+ dataPtrHead = dataPtr + ChunkUtils::getOffset(mFlags);
swapLen(dataPtr);
- if (dataChunk.dna_nr>=0)
+ if (dataChunk.dna_nr >= 0)
{
- swap(dataPtrHead, dataChunk,ignoreEndianFlag);
- } else
+ swap(dataPtrHead, dataChunk, ignoreEndianFlag);
+ }
+ else
{
//printf("unknown chunk\n");
}
@@ -602,7 +568,7 @@ void bFile::preSwap()
// next please!
dataPtr += seek;
- seek = getNextBlock(&dataChunk, dataPtr, mFlags);
+ seek = getNextBlock(&dataChunk, dataPtr, mFlags);
if (seek < 0)
break;
}
@@ -610,56 +576,50 @@ void bFile::preSwap()
if (mFlags & FD_ENDIAN_SWAP)
{
mFlags &= ~FD_ENDIAN_SWAP;
- } else
+ }
+ else
{
mFlags |= FD_ENDIAN_SWAP;
}
-
-
-
}
-
// ----------------------------------------------------- //
-char* bFile::readStruct(char *head, bChunkInd& dataChunk)
+char *bFile::readStruct(char *head, bChunkInd &dataChunk)
{
bool ignoreEndianFlag = false;
if (mFlags & FD_ENDIAN_SWAP)
swap(head, dataChunk, ignoreEndianFlag);
-
-
if (!mFileDNA->flagEqual(dataChunk.dna_nr))
{
// Ouch! need to rebuild the struct
- short *oldStruct,*curStruct;
+ short *oldStruct, *curStruct;
char *oldType, *newType;
int oldLen, curLen, reverseOld;
-
oldStruct = mFileDNA->getStruct(dataChunk.dna_nr);
oldType = mFileDNA->getType(oldStruct[0]);
oldLen = mFileDNA->getLength(oldStruct[0]);
- if ((mFlags&FD_BROKEN_DNA)!=0)
+ if ((mFlags & FD_BROKEN_DNA) != 0)
{
- if ((strcmp(oldType,"b3QuantizedBvhNodeData")==0)&&oldLen==20)
+ if ((strcmp(oldType, "b3QuantizedBvhNodeData") == 0) && oldLen == 20)
{
return 0;
}
- if ((strcmp(oldType,"b3ShortIntIndexData")==0))
+ if ((strcmp(oldType, "b3ShortIntIndexData") == 0))
{
int allocLen = 2;
- char *dataAlloc = new char[(dataChunk.nr*allocLen)+1];
- memset(dataAlloc, 0, (dataChunk.nr*allocLen)+1);
- short* dest = (short*) dataAlloc;
- const short* src = (short*) head;
- for (int i=0;i<dataChunk.nr;i++)
+ char *dataAlloc = new char[(dataChunk.nr * allocLen) + 1];
+ memset(dataAlloc, 0, (dataChunk.nr * allocLen) + 1);
+ short *dest = (short *)dataAlloc;
+ const short *src = (short *)head;
+ for (int i = 0; i < dataChunk.nr; i++)
{
dest[i] = src[i];
- if (mFlags &FD_ENDIAN_SWAP)
+ if (mFlags & FD_ENDIAN_SWAP)
{
B3_SWITCH_SHORT(dest[i]);
}
@@ -669,14 +629,12 @@ char* bFile::readStruct(char *head, bChunkInd& dataChunk)
}
}
-
-
///don't try to convert Link block data, just memcpy it. Other data can be converted.
- if (strcmp("Link",oldType)!=0)
+ if (strcmp("Link", oldType) != 0)
{
reverseOld = mMemoryDNA->getReverseType(oldType);
- if ((reverseOld!=-1))
+ if ((reverseOld != -1))
{
// make sure it's here
//assert(reverseOld!= -1 && "getReverseType() returned -1, struct required!");
@@ -686,39 +644,38 @@ char* bFile::readStruct(char *head, bChunkInd& dataChunk)
newType = mMemoryDNA->getType(curStruct[0]);
curLen = mMemoryDNA->getLength(curStruct[0]);
-
-
// make sure it's the same
- assert((strcmp(oldType, newType)==0) && "internal error, struct mismatch!");
-
+ assert((strcmp(oldType, newType) == 0) && "internal error, struct mismatch!");
// numBlocks * length
- int allocLen = (curLen);
- char *dataAlloc = new char[(dataChunk.nr*allocLen)+1];
- memset(dataAlloc, 0, (dataChunk.nr*allocLen));
+ int allocLen = (curLen);
+ char *dataAlloc = new char[(dataChunk.nr * allocLen) + 1];
+ memset(dataAlloc, 0, (dataChunk.nr * allocLen));
// track allocated
addDataBlock(dataAlloc);
char *cur = dataAlloc;
char *old = head;
- for (int block=0; block<dataChunk.nr; block++)
+ for (int block = 0; block < dataChunk.nr; block++)
{
bool fixupPointers = true;
parseStruct(cur, old, dataChunk.dna_nr, reverseOld, fixupPointers);
- mLibPointers.insert(old,(bStructHandle*)cur);
+ mLibPointers.insert(old, (bStructHandle *)cur);
cur += curLen;
old += oldLen;
}
return dataAlloc;
}
- } else
+ }
+ else
{
//printf("Link found\n");
}
- } else
+ }
+ else
{
//#define DEBUG_EQUAL_STRUCTS
#ifdef DEBUG_EQUAL_STRUCTS
@@ -726,24 +683,20 @@ char* bFile::readStruct(char *head, bChunkInd& dataChunk)
char *oldType;
oldStruct = mFileDNA->getStruct(dataChunk.dna_nr);
oldType = mFileDNA->getType(oldStruct[0]);
- printf("%s equal structure, just memcpy\n",oldType);
-#endif //
+ printf("%s equal structure, just memcpy\n", oldType);
+#endif //
}
-
- char *dataAlloc = new char[(dataChunk.len)+1];
- memset(dataAlloc, 0, dataChunk.len+1);
-
+ char *dataAlloc = new char[(dataChunk.len) + 1];
+ memset(dataAlloc, 0, dataChunk.len + 1);
// track allocated
addDataBlock(dataAlloc);
memcpy(dataAlloc, head, dataChunk.len);
return dataAlloc;
-
}
-
// ----------------------------------------------------- //
void bFile::parseStruct(char *strcPtr, char *dtPtr, int old_dna, int new_dna, bool fixupPointers)
{
@@ -751,7 +704,7 @@ void bFile::parseStruct(char *strcPtr, char *dtPtr, int old_dna, int new_dna, bo
if (new_dna == -1) return;
//disable this, because we need to fixup pointers/ListBase
- if (0)//mFileDNA->flagEqual(old_dna))
+ if (0) //mFileDNA->flagEqual(old_dna))
{
short *strc = mFileDNA->getStruct(old_dna);
int len = mFileDNA->getLength(strc[0]);
@@ -766,31 +719,29 @@ void bFile::parseStruct(char *strcPtr, char *dtPtr, int old_dna, int new_dna, bo
int elementLength, size, revType, old_nr, new_nr, fpLen;
short firstStructType;
-
// File to memory lookup
memoryStruct = mMemoryDNA->getStruct(new_dna);
fileStruct = mFileDNA->getStruct(old_dna);
firstStruct = fileStruct;
-
filePtrOld = fileStruct;
firstStructType = mMemoryDNA->getStruct(0)[0];
// Get number of elements
elementLength = memoryStruct[1];
- memoryStruct+=2;
+ memoryStruct += 2;
- cpc = strcPtr; cpo = 0;
- for (int ele=0; ele<elementLength; ele++, memoryStruct+=2)
+ cpc = strcPtr;
+ cpo = 0;
+ for (int ele = 0; ele < elementLength; ele++, memoryStruct += 2)
{
memType = mMemoryDNA->getType(memoryStruct[0]);
memName = mMemoryDNA->getName(memoryStruct[1]);
-
size = mMemoryDNA->getElementSize(memoryStruct[0], memoryStruct[1]);
revType = mMemoryDNA->getReverseType(memoryStruct[0]);
- if (revType != -1 && memoryStruct[0]>=firstStructType && memName[0] != '*')
+ if (revType != -1 && memoryStruct[0] >= firstStructType && memName[0] != '*')
{
cpo = getFileElement(firstStruct, memName, memType, dtPtr, &filePtrOld);
if (cpo)
@@ -799,94 +750,92 @@ void bFile::parseStruct(char *strcPtr, char *dtPtr, int old_dna, int new_dna, bo
old_nr = mFileDNA->getReverseType(memType);
new_nr = revType;
fpLen = mFileDNA->getElementSize(filePtrOld[0], filePtrOld[1]);
- if (arrayLen==1)
+ if (arrayLen == 1)
{
- parseStruct(cpc, cpo, old_nr, new_nr,fixupPointers);
- } else
+ parseStruct(cpc, cpo, old_nr, new_nr, fixupPointers);
+ }
+ else
{
- char* tmpCpc = cpc;
- char* tmpCpo = cpo;
+ char *tmpCpc = cpc;
+ char *tmpCpo = cpo;
- for (int i=0;i<arrayLen;i++)
+ for (int i = 0; i < arrayLen; i++)
{
- parseStruct(tmpCpc, tmpCpo, old_nr, new_nr,fixupPointers);
- tmpCpc += size/arrayLen;
- tmpCpo += fpLen/arrayLen;
+ parseStruct(tmpCpc, tmpCpo, old_nr, new_nr, fixupPointers);
+ tmpCpc += size / arrayLen;
+ tmpCpo += fpLen / arrayLen;
}
}
- cpc+=size;
- cpo+=fpLen;
+ cpc += size;
+ cpo += fpLen;
}
else
- cpc+=size;
+ cpc += size;
}
else
{
- getMatchingFileDNA(fileStruct, memName, memType, cpc, dtPtr,fixupPointers);
- cpc+=size;
+ getMatchingFileDNA(fileStruct, memName, memType, cpc, dtPtr, fixupPointers);
+ cpc += size;
}
-
}
}
-
// ----------------------------------------------------- //
static void getElement(int arrayLen, const char *cur, const char *old, char *oldPtr, char *curData)
{
-#define b3GetEle(value, current, type, cast, size, ptr)\
- if (strcmp(current, type)==0)\
- {\
- value = (*(cast*)ptr);\
- ptr += size;\
+#define b3GetEle(value, current, type, cast, size, ptr) \
+ if (strcmp(current, type) == 0) \
+ { \
+ value = (*(cast *)ptr); \
+ ptr += size; \
}
-#define b3SetEle(value, current, type, cast, size, ptr)\
- if (strcmp(current, type)==0)\
- {\
- (*(cast*)ptr) = (cast)value;\
- ptr += size;\
+#define b3SetEle(value, current, type, cast, size, ptr) \
+ if (strcmp(current, type) == 0) \
+ { \
+ (*(cast *)ptr) = (cast)value; \
+ ptr += size; \
}
double value = 0.0;
- for (int i=0; i<arrayLen; i++)
+ for (int i = 0; i < arrayLen; i++)
{
- b3GetEle(value, old, "char", char, sizeof(char), oldPtr);
- b3SetEle(value, cur, "char", char, sizeof(char), curData);
- b3GetEle(value, old, "short", short, sizeof(short), oldPtr);
- b3SetEle(value, cur, "short", short, sizeof(short), curData);
- b3GetEle(value, old, "ushort", unsigned short, sizeof(unsigned short), oldPtr);
- b3SetEle(value, cur, "ushort", unsigned short, sizeof(unsigned short), curData);
- b3GetEle(value, old, "int", int, sizeof(int), oldPtr);
- b3SetEle(value, cur, "int", int, sizeof(int), curData);
- b3GetEle(value, old, "long", int, sizeof(int), oldPtr);
- b3SetEle(value, cur, "long", int, sizeof(int), curData);
- b3GetEle(value, old, "float", float, sizeof(float), oldPtr);
- b3SetEle(value, cur, "float", float, sizeof(float), curData);
+ b3GetEle(value, old, "char", char, sizeof(char), oldPtr);
+ b3SetEle(value, cur, "char", char, sizeof(char), curData);
+ b3GetEle(value, old, "short", short, sizeof(short), oldPtr);
+ b3SetEle(value, cur, "short", short, sizeof(short), curData);
+ b3GetEle(value, old, "ushort", unsigned short, sizeof(unsigned short), oldPtr);
+ b3SetEle(value, cur, "ushort", unsigned short, sizeof(unsigned short), curData);
+ b3GetEle(value, old, "int", int, sizeof(int), oldPtr);
+ b3SetEle(value, cur, "int", int, sizeof(int), curData);
+ b3GetEle(value, old, "long", int, sizeof(int), oldPtr);
+ b3SetEle(value, cur, "long", int, sizeof(int), curData);
+ b3GetEle(value, old, "float", float, sizeof(float), oldPtr);
+ b3SetEle(value, cur, "float", float, sizeof(float), curData);
b3GetEle(value, old, "double", double, sizeof(double), oldPtr);
b3SetEle(value, cur, "double", double, sizeof(double), curData);
}
}
-
// ----------------------------------------------------- //
-void bFile::swapData(char *data, short type, int arraySize,bool ignoreEndianFlag)
+void bFile::swapData(char *data, short type, int arraySize, bool ignoreEndianFlag)
{
- if (ignoreEndianFlag || (mFlags &FD_ENDIAN_SWAP))
+ if (ignoreEndianFlag || (mFlags & FD_ENDIAN_SWAP))
{
if (type == 2 || type == 3)
{
- short *sp = (short*)data;
- for (int i=0; i<arraySize; i++)
+ short *sp = (short *)data;
+ for (int i = 0; i < arraySize; i++)
{
sp[0] = ChunkUtils::swapShort(sp[0]);
sp++;
}
}
- if (type>3 && type <8)
+ if (type > 3 && type < 8)
{
char c;
char *cp = data;
- for (int i=0; i<arraySize; i++)
+ for (int i = 0; i < arraySize; i++)
{
c = cp[0];
cp[0] = cp[3];
@@ -894,14 +843,12 @@ void bFile::swapData(char *data, short type, int arraySize,bool ignoreEndianFlag
c = cp[1];
cp[1] = cp[2];
cp[2] = c;
- cp+=4;
+ cp += 4;
}
}
}
}
-
-
void bFile::safeSwapPtr(char *dst, const char *src)
{
int ptrFile = mFileDNA->getPointerSize();
@@ -910,84 +857,79 @@ void bFile::safeSwapPtr(char *dst, const char *src)
if (!src && !dst)
return;
-
if (ptrFile == ptrMem)
{
memcpy(dst, src, ptrMem);
}
- else if (ptrMem==4 && ptrFile==8)
+ else if (ptrMem == 4 && ptrFile == 8)
{
- b3PointerUid* oldPtr = (b3PointerUid*)src;
- b3PointerUid* newPtr = (b3PointerUid*)dst;
+ b3PointerUid *oldPtr = (b3PointerUid *)src;
+ b3PointerUid *newPtr = (b3PointerUid *)dst;
if (oldPtr->m_uniqueIds[0] == oldPtr->m_uniqueIds[1])
{
//Bullet stores the 32bit unique ID in both upper and lower part of 64bit pointers
//so it can be used to distinguish between .blend and .bullet
newPtr->m_uniqueIds[0] = oldPtr->m_uniqueIds[0];
- } else
+ }
+ else
{
//deal with pointers the Blender .blend style way, see
//readfile.c in the Blender source tree
- b3Long64 longValue = *((b3Long64*)src);
+ b3Long64 longValue = *((b3Long64 *)src);
//endian swap for 64bit pointer otherwise truncation will fail due to trailing zeros
if (mFlags & FD_ENDIAN_SWAP)
B3_SWITCH_LONGINT(longValue);
- *((int*)dst) = (int)(longValue>>3);
+ *((int *)dst) = (int)(longValue >> 3);
}
-
}
- else if (ptrMem==8 && ptrFile==4)
+ else if (ptrMem == 8 && ptrFile == 4)
{
- b3PointerUid* oldPtr = (b3PointerUid*)src;
- b3PointerUid* newPtr = (b3PointerUid*)dst;
+ b3PointerUid *oldPtr = (b3PointerUid *)src;
+ b3PointerUid *newPtr = (b3PointerUid *)dst;
if (oldPtr->m_uniqueIds[0] == oldPtr->m_uniqueIds[1])
{
newPtr->m_uniqueIds[0] = oldPtr->m_uniqueIds[0];
newPtr->m_uniqueIds[1] = 0;
- } else
+ }
+ else
{
- *((b3Long64*)dst)= *((int*)src);
+ *((b3Long64 *)dst) = *((int *)src);
}
}
else
{
- printf ("%d %d\n", ptrFile,ptrMem);
+ printf("%d %d\n", ptrFile, ptrMem);
assert(0 && "Invalid pointer len");
}
-
-
}
-
// ----------------------------------------------------- //
-void bFile::getMatchingFileDNA(short* dna_addr, const char* lookupName, const char* lookupType, char *strcData, char *data, bool fixupPointers)
+void bFile::getMatchingFileDNA(short *dna_addr, const char *lookupName, const char *lookupType, char *strcData, char *data, bool fixupPointers)
{
// find the matching memory dna data
// to the file being loaded. Fill the
// memory with the file data...
int len = dna_addr[1];
- dna_addr+=2;
+ dna_addr += 2;
- for (int i=0; i<len; i++, dna_addr+=2)
+ for (int i = 0; i < len; i++, dna_addr += 2)
{
- const char* type = mFileDNA->getType(dna_addr[0]);
- const char* name = mFileDNA->getName(dna_addr[1]);
-
-
+ const char *type = mFileDNA->getType(dna_addr[0]);
+ const char *name = mFileDNA->getName(dna_addr[1]);
int eleLen = mFileDNA->getElementSize(dna_addr[0], dna_addr[1]);
- if ((mFlags&FD_BROKEN_DNA)!=0)
+ if ((mFlags & FD_BROKEN_DNA) != 0)
{
- if ((strcmp(type,"short")==0)&&(strcmp(name,"int")==0))
+ if ((strcmp(type, "short") == 0) && (strcmp(name, "int") == 0))
{
eleLen = 0;
}
}
- if (strcmp(lookupName, name)==0)
+ if (strcmp(lookupName, name) == 0)
{
//int arrayLenold = mFileDNA->getArraySize((char*)name.c_str());
int arrayLen = mFileDNA->getArraySizeNew(dna_addr[1]);
@@ -998,7 +940,7 @@ void bFile::getMatchingFileDNA(short* dna_addr, const char* lookupName, const c
// cast pointers
int ptrFile = mFileDNA->getPointerSize();
int ptrMem = mMemoryDNA->getPointerSize();
- safeSwapPtr(strcData,data);
+ safeSwapPtr(strcData, data);
if (fixupPointers)
{
@@ -1007,11 +949,11 @@ void bFile::getMatchingFileDNA(short* dna_addr, const char* lookupName, const c
//void **sarray = (void**)strcData;
//void **darray = (void**)data;
- char *cpc, *cpo;
- cpc = (char*)strcData;
- cpo = (char*)data;
+ char *cpc, *cpo;
+ cpc = (char *)strcData;
+ cpo = (char *)data;
- for (int a=0; a<arrayLen; a++)
+ for (int a = 0; a < arrayLen; a++)
{
safeSwapPtr(cpc, cpo);
m_pointerFixupArray.push_back(cpc);
@@ -1029,12 +971,11 @@ void bFile::getMatchingFileDNA(short* dna_addr, const char* lookupName, const c
}
else
{
-// printf("skipped %s %s : %x\n",type.c_str(),name.c_str(),strcData);
+ // printf("skipped %s %s : %x\n",type.c_str(),name.c_str(),strcData);
}
-
}
- else if (strcmp(type, lookupType)==0)
+ else if (strcmp(type, lookupType) == 0)
memcpy(strcData, data, eleLen);
else
getElement(arrayLen, lookupType, type, data, strcData);
@@ -1042,27 +983,26 @@ void bFile::getMatchingFileDNA(short* dna_addr, const char* lookupName, const c
// --
return;
}
- data+=eleLen;
+ data += eleLen;
}
}
-
// ----------------------------------------------------- //
-char* bFile::getFileElement(short *firstStruct, char *lookupName, char *lookupType, char *data, short **foundPos)
+char *bFile::getFileElement(short *firstStruct, char *lookupName, char *lookupType, char *data, short **foundPos)
{
- short *old = firstStruct;//mFileDNA->getStruct(old_nr);
+ short *old = firstStruct; //mFileDNA->getStruct(old_nr);
int elementLength = old[1];
- old+=2;
+ old += 2;
- for (int i=0; i<elementLength; i++, old+=2)
+ for (int i = 0; i < elementLength; i++, old += 2)
{
- char* type = mFileDNA->getType(old[0]);
- char* name = mFileDNA->getName(old[1]);
+ char *type = mFileDNA->getType(old[0]);
+ char *name = mFileDNA->getName(old[1]);
int len = mFileDNA->getElementSize(old[0], old[1]);
- if (strcmp(lookupName, name)==0)
+ if (strcmp(lookupName, name) == 0)
{
- if (strcmp(type, lookupType)==0)
+ if (strcmp(type, lookupType) == 0)
{
if (foundPos)
*foundPos = old;
@@ -1070,46 +1010,46 @@ char* bFile::getFileElement(short *firstStruct, char *lookupName, char *lookupTy
}
return 0;
}
- data+=len;
+ data += len;
}
return 0;
}
-
// ----------------------------------------------------- //
-void bFile::swapStruct(int dna_nr, char *data,bool ignoreEndianFlag)
+void bFile::swapStruct(int dna_nr, char *data, bool ignoreEndianFlag)
{
if (dna_nr == -1) return;
short *strc = mFileDNA->getStruct(dna_nr);
//short *firstStrc = strc;
- int elementLen= strc[1];
- strc+=2;
+ int elementLen = strc[1];
+ strc += 2;
short first = mFileDNA->getStruct(0)[0];
char *buf = data;
- for (int i=0; i<elementLen; i++, strc+=2)
+ for (int i = 0; i < elementLen; i++, strc += 2)
{
char *type = mFileDNA->getType(strc[0]);
char *name = mFileDNA->getName(strc[1]);
int size = mFileDNA->getElementSize(strc[0], strc[1]);
- if (strc[0] >= first && name[0]!='*')
+ if (strc[0] >= first && name[0] != '*')
{
int old_nr = mFileDNA->getReverseType(type);
int arrayLen = mFileDNA->getArraySizeNew(strc[1]);
- if (arrayLen==1)
+ if (arrayLen == 1)
{
- swapStruct(old_nr,buf,ignoreEndianFlag);
- } else
+ swapStruct(old_nr, buf, ignoreEndianFlag);
+ }
+ else
{
- char* tmpBuf = buf;
- for (int i=0;i<arrayLen;i++)
+ char *tmpBuf = buf;
+ for (int i = 0; i < arrayLen; i++)
{
- swapStruct(old_nr,tmpBuf,ignoreEndianFlag);
- tmpBuf+=size/arrayLen;
+ swapStruct(old_nr, tmpBuf, ignoreEndianFlag);
+ tmpBuf += size / arrayLen;
}
}
}
@@ -1118,39 +1058,39 @@ void bFile::swapStruct(int dna_nr, char *data,bool ignoreEndianFlag)
//int arrayLenOld = mFileDNA->getArraySize(name);
int arrayLen = mFileDNA->getArraySizeNew(strc[1]);
//assert(arrayLenOld == arrayLen);
- swapData(buf, strc[0], arrayLen,ignoreEndianFlag);
+ swapData(buf, strc[0], arrayLen, ignoreEndianFlag);
}
- buf+=size;
+ buf += size;
}
}
void bFile::resolvePointersMismatch()
{
-// printf("resolvePointersStructMismatch\n");
+ // printf("resolvePointersStructMismatch\n");
int i;
- for (i=0;i< m_pointerFixupArray.size();i++)
+ for (i = 0; i < m_pointerFixupArray.size(); i++)
{
- char* cur = m_pointerFixupArray.at(i);
- void** ptrptr = (void**) cur;
- void* ptr = *ptrptr;
+ char *cur = m_pointerFixupArray.at(i);
+ void **ptrptr = (void **)cur;
+ void *ptr = *ptrptr;
ptr = findLibPointer(ptr);
if (ptr)
{
//printf("Fixup pointer!\n");
*(ptrptr) = ptr;
- } else
+ }
+ else
{
-// printf("pointer not found: %x\n",cur);
+ // printf("pointer not found: %x\n",cur);
}
}
-
- for (i=0; i<m_pointerPtrFixupArray.size(); i++)
+ for (i = 0; i < m_pointerPtrFixupArray.size(); i++)
{
- char* cur= m_pointerPtrFixupArray.at(i);
- void** ptrptr = (void**)cur;
+ char *cur = m_pointerPtrFixupArray.at(i);
+ void **ptrptr = (void **)cur;
bChunkInd *block = m_chunkPtrPtrMap.find(*ptrptr);
if (block)
@@ -1158,7 +1098,6 @@ void bFile::resolvePointersMismatch()
int ptrMem = mMemoryDNA->getPointerSize();
int ptrFile = mFileDNA->getPointerSize();
-
int blockLen = block->len / ptrFile;
void *onptr = findLibPointer(*ptrptr);
@@ -1168,16 +1107,16 @@ void bFile::resolvePointersMismatch()
addDataBlock(newPtr);
memset(newPtr, 0, blockLen * ptrMem);
- void **onarray = (void**)onptr;
- char *oldPtr = (char*)onarray;
+ void **onarray = (void **)onptr;
+ char *oldPtr = (char *)onarray;
int p = 0;
while (blockLen-- > 0)
{
b3PointerUid dp = {{0}};
- safeSwapPtr((char*)dp.m_uniqueIds, oldPtr);
+ safeSwapPtr((char *)dp.m_uniqueIds, oldPtr);
- void **tptr = (void**)(newPtr + p * ptrMem);
+ void **tptr = (void **)(newPtr + p * ptrMem);
*tptr = findLibPointer(dp.m_ptr);
oldPtr += ptrFile;
@@ -1190,70 +1129,63 @@ void bFile::resolvePointersMismatch()
}
}
-
///this loop only works fine if the Blender DNA structure of the file matches the headerfiles
-void bFile::resolvePointersChunk(const bChunkInd& dataChunk, int verboseMode)
+void bFile::resolvePointersChunk(const bChunkInd &dataChunk, int verboseMode)
{
- bParse::bDNA* fileDna = mFileDNA ? mFileDNA : mMemoryDNA;
+ bParse::bDNA *fileDna = mFileDNA ? mFileDNA : mMemoryDNA;
- short int* oldStruct = fileDna->getStruct(dataChunk.dna_nr);
+ short int *oldStruct = fileDna->getStruct(dataChunk.dna_nr);
short oldLen = fileDna->getLength(oldStruct[0]);
//char* structType = fileDna->getType(oldStruct[0]);
- char* cur = (char*)findLibPointer(dataChunk.oldPtr);
- for (int block=0; block<dataChunk.nr; block++)
+ char *cur = (char *)findLibPointer(dataChunk.oldPtr);
+ for (int block = 0; block < dataChunk.nr; block++)
{
- resolvePointersStructRecursive(cur,dataChunk.dna_nr, verboseMode,1);
+ resolvePointersStructRecursive(cur, dataChunk.dna_nr, verboseMode, 1);
cur += oldLen;
}
}
-
-int bFile::resolvePointersStructRecursive(char *strcPtr, int dna_nr, int verboseMode,int recursion)
+int bFile::resolvePointersStructRecursive(char *strcPtr, int dna_nr, int verboseMode, int recursion)
{
+ bParse::bDNA *fileDna = mFileDNA ? mFileDNA : mMemoryDNA;
- bParse::bDNA* fileDna = mFileDNA ? mFileDNA : mMemoryDNA;
+ char *memType;
+ char *memName;
+ short firstStructType = fileDna->getStruct(0)[0];
- char* memType;
- char* memName;
- short firstStructType = fileDna->getStruct(0)[0];
+ char *elemPtr = strcPtr;
-
- char* elemPtr= strcPtr;
-
- short int* oldStruct = fileDna->getStruct(dna_nr);
+ short int *oldStruct = fileDna->getStruct(dna_nr);
int elementLength = oldStruct[1];
- oldStruct+=2;
+ oldStruct += 2;
int totalSize = 0;
- for (int ele=0; ele<elementLength; ele++, oldStruct+=2)
+ for (int ele = 0; ele < elementLength; ele++, oldStruct += 2)
{
-
memType = fileDna->getType(oldStruct[0]);
memName = fileDna->getName(oldStruct[1]);
-
-
int arrayLen = fileDna->getArraySizeNew(oldStruct[1]);
if (memName[0] == '*')
{
if (arrayLen > 1)
{
- void **array= (void**)elemPtr;
- for (int a=0; a<arrayLen; a++)
+ void **array = (void **)elemPtr;
+ for (int a = 0; a < arrayLen; a++)
{
if (verboseMode & FD_VERBOSE_EXPORT_XML)
{
- for (int i=0;i<recursion;i++)
+ for (int i = 0; i < recursion; i++)
{
printf(" ");
}
//skip the *
- printf("<%s type=\"pointer\"> ",&memName[1]);
+ printf("<%s type=\"pointer\"> ", &memName[1]);
printf("%p ", array[a]);
- printf("</%s>\n",&memName[1]);
+ printf("</%s>\n", &memName[1]);
}
array[a] = findLibPointer(array[a]);
@@ -1261,266 +1193,259 @@ int bFile::resolvePointersStructRecursive(char *strcPtr, int dna_nr, int verbose
}
else
{
- void** ptrptr = (void**) elemPtr;
- void* ptr = *ptrptr;
+ void **ptrptr = (void **)elemPtr;
+ void *ptr = *ptrptr;
if (verboseMode & FD_VERBOSE_EXPORT_XML)
{
- for (int i=0;i<recursion;i++)
+ for (int i = 0; i < recursion; i++)
{
printf(" ");
}
- printf("<%s type=\"pointer\"> ",&memName[1]);
+ printf("<%s type=\"pointer\"> ", &memName[1]);
printf("%p ", ptr);
- printf("</%s>\n",&memName[1]);
+ printf("</%s>\n", &memName[1]);
}
ptr = findLibPointer(ptr);
if (ptr)
{
- // printf("Fixup pointer at 0x%x from 0x%x to 0x%x!\n",ptrptr,*ptrptr,ptr);
+ // printf("Fixup pointer at 0x%x from 0x%x to 0x%x!\n",ptrptr,*ptrptr,ptr);
*(ptrptr) = ptr;
if (memName[1] == '*' && ptrptr && *ptrptr)
{
// This will only work if the given **array is continuous
- void **array= (void**)*(ptrptr);
- void *np= array[0];
- int n=0;
+ void **array = (void **)*(ptrptr);
+ void *np = array[0];
+ int n = 0;
while (np)
{
- np= findLibPointer(array[n]);
- if (np) array[n]= np;
+ np = findLibPointer(array[n]);
+ if (np) array[n] = np;
n++;
}
}
- } else
+ }
+ else
{
- // printf("Cannot fixup pointer at 0x%x from 0x%x to 0x%x!\n",ptrptr,*ptrptr,ptr);
+ // printf("Cannot fixup pointer at 0x%x from 0x%x to 0x%x!\n",ptrptr,*ptrptr,ptr);
}
}
- } else
+ }
+ else
{
int revType = fileDna->getReverseType(oldStruct[0]);
- if (oldStruct[0]>=firstStructType) //revType != -1 &&
+ if (oldStruct[0] >= firstStructType) //revType != -1 &&
{
char cleanName[MAX_STRLEN];
- getCleanName(memName,cleanName);
+ getCleanName(memName, cleanName);
int arrayLen = fileDna->getArraySizeNew(oldStruct[1]);
int byteOffset = 0;
if (verboseMode & FD_VERBOSE_EXPORT_XML)
{
- for (int i=0;i<recursion;i++)
+ for (int i = 0; i < recursion; i++)
{
printf(" ");
}
- if (arrayLen>1)
+ if (arrayLen > 1)
{
- printf("<%s type=\"%s\" count=%d>\n",cleanName,memType, arrayLen);
- } else
+ printf("<%s type=\"%s\" count=%d>\n", cleanName, memType, arrayLen);
+ }
+ else
{
- printf("<%s type=\"%s\">\n",cleanName,memType);
+ printf("<%s type=\"%s\">\n", cleanName, memType);
}
}
- for (int i=0;i<arrayLen;i++)
+ for (int i = 0; i < arrayLen; i++)
{
- byteOffset += resolvePointersStructRecursive(elemPtr+byteOffset,revType, verboseMode,recursion+1);
+ byteOffset += resolvePointersStructRecursive(elemPtr + byteOffset, revType, verboseMode, recursion + 1);
}
if (verboseMode & FD_VERBOSE_EXPORT_XML)
{
- for (int i=0;i<recursion;i++)
+ for (int i = 0; i < recursion; i++)
{
printf(" ");
}
- printf("</%s>\n",cleanName);
+ printf("</%s>\n", cleanName);
}
- } else
+ }
+ else
{
//export a simple type
if (verboseMode & FD_VERBOSE_EXPORT_XML)
{
-
- if (arrayLen>MAX_ARRAY_LENGTH)
+ if (arrayLen > MAX_ARRAY_LENGTH)
{
printf("too long\n");
- } else
+ }
+ else
{
//printf("%s %s\n",memType,memName);
- bool isIntegerType = (strcmp(memType,"char")==0) || (strcmp(memType,"int")==0) || (strcmp(memType,"short")==0);
+ bool isIntegerType = (strcmp(memType, "char") == 0) || (strcmp(memType, "int") == 0) || (strcmp(memType, "short") == 0);
if (isIntegerType)
{
- const char* newtype="int";
+ const char *newtype = "int";
int dbarray[MAX_ARRAY_LENGTH];
- int* dbPtr = 0;
- char* tmp = elemPtr;
+ int *dbPtr = 0;
+ char *tmp = elemPtr;
dbPtr = &dbarray[0];
if (dbPtr)
{
char cleanName[MAX_STRLEN];
- getCleanName(memName,cleanName);
+ getCleanName(memName, cleanName);
int i;
- getElement(arrayLen, newtype,memType, tmp, (char*)dbPtr);
- for (i=0;i<recursion;i++)
+ getElement(arrayLen, newtype, memType, tmp, (char *)dbPtr);
+ for (i = 0; i < recursion; i++)
printf(" ");
- if (arrayLen==1)
- printf("<%s type=\"%s\">",cleanName,memType);
+ if (arrayLen == 1)
+ printf("<%s type=\"%s\">", cleanName, memType);
else
- printf("<%s type=\"%s\" count=%d>",cleanName,memType,arrayLen);
- for (i=0;i<arrayLen;i++)
- printf(" %d ",dbPtr[i]);
- printf("</%s>\n",cleanName);
+ printf("<%s type=\"%s\" count=%d>", cleanName, memType, arrayLen);
+ for (i = 0; i < arrayLen; i++)
+ printf(" %d ", dbPtr[i]);
+ printf("</%s>\n", cleanName);
}
- } else
+ }
+ else
{
- const char* newtype="double";
+ const char *newtype = "double";
double dbarray[MAX_ARRAY_LENGTH];
- double* dbPtr = 0;
- char* tmp = elemPtr;
+ double *dbPtr = 0;
+ char *tmp = elemPtr;
dbPtr = &dbarray[0];
if (dbPtr)
{
int i;
- getElement(arrayLen, newtype,memType, tmp, (char*)dbPtr);
- for (i=0;i<recursion;i++)
+ getElement(arrayLen, newtype, memType, tmp, (char *)dbPtr);
+ for (i = 0; i < recursion; i++)
printf(" ");
char cleanName[MAX_STRLEN];
- getCleanName(memName,cleanName);
+ getCleanName(memName, cleanName);
- if (arrayLen==1)
+ if (arrayLen == 1)
{
- printf("<%s type=\"%s\">",memName,memType);
+ printf("<%s type=\"%s\">", memName, memType);
}
else
{
- printf("<%s type=\"%s\" count=%d>",cleanName,memType,arrayLen);
+ printf("<%s type=\"%s\" count=%d>", cleanName, memType, arrayLen);
}
- for (i=0;i<arrayLen;i++)
- printf(" %f ",dbPtr[i]);
- printf("</%s>\n",cleanName);
+ for (i = 0; i < arrayLen; i++)
+ printf(" %f ", dbPtr[i]);
+ printf("</%s>\n", cleanName);
}
}
}
-
}
}
}
int size = fileDna->getElementSize(oldStruct[0], oldStruct[1]);
totalSize += size;
- elemPtr+=size;
-
+ elemPtr += size;
}
return totalSize;
}
-
///Resolve pointers replaces the original pointers in structures, and linked lists by the new in-memory structures
void bFile::resolvePointers(int verboseMode)
{
- bParse::bDNA* fileDna = mFileDNA ? mFileDNA : mMemoryDNA;
+ bParse::bDNA *fileDna = mFileDNA ? mFileDNA : mMemoryDNA;
//char *dataPtr = mFileBuffer+mDataStart;
- if (1) //mFlags & (FD_BITS_VARIES | FD_VERSION_VARIES))
+ if (1) //mFlags & (FD_BITS_VARIES | FD_VERSION_VARIES))
{
resolvePointersMismatch();
}
{
-
if (verboseMode & FD_VERBOSE_EXPORT_XML)
{
printf("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n");
int numitems = m_chunks.size();
printf("<bullet_physics version=%d itemcount = %d>\n", b3GetVersion(), numitems);
}
- for (int i=0;i<m_chunks.size();i++)
+ for (int i = 0; i < m_chunks.size(); i++)
{
- const bChunkInd& dataChunk = m_chunks.at(i);
+ const bChunkInd &dataChunk = m_chunks.at(i);
if (!mFileDNA || fileDna->flagEqual(dataChunk.dna_nr))
{
//dataChunk.len
- short int* oldStruct = fileDna->getStruct(dataChunk.dna_nr);
- char* oldType = fileDna->getType(oldStruct[0]);
+ short int *oldStruct = fileDna->getStruct(dataChunk.dna_nr);
+ char *oldType = fileDna->getType(oldStruct[0]);
if (verboseMode & FD_VERBOSE_EXPORT_XML)
- printf(" <%s pointer=%p>\n",oldType,dataChunk.oldPtr);
+ printf(" <%s pointer=%p>\n", oldType, dataChunk.oldPtr);
resolvePointersChunk(dataChunk, verboseMode);
if (verboseMode & FD_VERBOSE_EXPORT_XML)
- printf(" </%s>\n",oldType);
- } else
+ printf(" </%s>\n", oldType);
+ }
+ else
{
//printf("skipping mStruct\n");
}
}
- if (verboseMode & FD_VERBOSE_EXPORT_XML)
- {
- printf("</bullet_physics>\n");
- }
+ if (verboseMode & FD_VERBOSE_EXPORT_XML)
+ {
+ printf("</bullet_physics>\n");
+ }
}
-
-
}
-
// ----------------------------------------------------- //
-void* bFile::findLibPointer(void *ptr)
+void *bFile::findLibPointer(void *ptr)
{
-
- bStructHandle** ptrptr = getLibPointers().find(ptr);
+ bStructHandle **ptrptr = getLibPointers().find(ptr);
if (ptrptr)
return *ptrptr;
return 0;
}
-
-void bFile::updateOldPointers()
+void bFile::updateOldPointers()
{
int i;
- for (i=0;i<m_chunks.size();i++)
+ for (i = 0; i < m_chunks.size(); i++)
{
- bChunkInd& dataChunk = m_chunks[i];
+ bChunkInd &dataChunk = m_chunks[i];
dataChunk.oldPtr = findLibPointer(dataChunk.oldPtr);
}
}
-void bFile::dumpChunks(bParse::bDNA* dna)
+void bFile::dumpChunks(bParse::bDNA *dna)
{
int i;
- for (i=0;i<m_chunks.size();i++)
+ for (i = 0; i < m_chunks.size(); i++)
{
- bChunkInd& dataChunk = m_chunks[i];
- char* codeptr = (char*)&dataChunk.code;
- char codestr[5] = {codeptr[0],codeptr[1],codeptr[2],codeptr[3],0};
+ bChunkInd &dataChunk = m_chunks[i];
+ char *codeptr = (char *)&dataChunk.code;
+ char codestr[5] = {codeptr[0], codeptr[1], codeptr[2], codeptr[3], 0};
- short* newStruct = dna->getStruct(dataChunk.dna_nr);
- char* typeName = dna->getType(newStruct[0]);
- printf("%3d: %s ",i,typeName);
+ short *newStruct = dna->getStruct(dataChunk.dna_nr);
+ char *typeName = dna->getType(newStruct[0]);
+ printf("%3d: %s ", i, typeName);
- printf("code=%s ",codestr);
+ printf("code=%s ", codestr);
- printf("ptr=%p ",dataChunk.oldPtr);
- printf("len=%d ",dataChunk.len);
- printf("nr=%d ",dataChunk.nr);
- if (dataChunk.nr!=1)
+ printf("ptr=%p ", dataChunk.oldPtr);
+ printf("len=%d ", dataChunk.len);
+ printf("nr=%d ", dataChunk.nr);
+ if (dataChunk.nr != 1)
{
printf("not 1\n");
}
printf("\n");
-
-
-
-
}
#if 0
@@ -1536,20 +1461,18 @@ void bFile::dumpChunks(bParse::bDNA* dna)
printf("\n");
}
#endif
-
}
-
-void bFile::writeChunks(FILE* fp, bool fixupPointers)
+void bFile::writeChunks(FILE *fp, bool fixupPointers)
{
- bParse::bDNA* fileDna = mFileDNA ? mFileDNA : mMemoryDNA;
+ bParse::bDNA *fileDna = mFileDNA ? mFileDNA : mMemoryDNA;
- for (int i=0;i<m_chunks.size();i++)
+ for (int i = 0; i < m_chunks.size(); i++)
{
- bChunkInd& dataChunk = m_chunks.at(i);
+ bChunkInd &dataChunk = m_chunks.at(i);
// Ouch! need to rebuild the struct
- short *oldStruct,*curStruct;
+ short *oldStruct, *curStruct;
char *oldType, *newType;
int oldLen, curLen, reverseOld;
@@ -1559,8 +1482,7 @@ void bFile::writeChunks(FILE* fp, bool fixupPointers)
///don't try to convert Link block data, just memcpy it. Other data can be converted.
reverseOld = mMemoryDNA->getReverseType(oldType);
-
- if ((reverseOld!=-1))
+ if ((reverseOld != -1))
{
// make sure it's here
//assert(reverseOld!= -1 && "getReverseType() returned -1, struct required!");
@@ -1568,50 +1490,47 @@ void bFile::writeChunks(FILE* fp, bool fixupPointers)
curStruct = mMemoryDNA->getStruct(reverseOld);
newType = mMemoryDNA->getType(curStruct[0]);
// make sure it's the same
- assert((strcmp(oldType, newType)==0) && "internal error, struct mismatch!");
-
+ assert((strcmp(oldType, newType) == 0) && "internal error, struct mismatch!");
curLen = mMemoryDNA->getLength(curStruct[0]);
dataChunk.dna_nr = reverseOld;
- if (strcmp("Link",oldType)!=0)
+ if (strcmp("Link", oldType) != 0)
{
dataChunk.len = curLen * dataChunk.nr;
- } else
+ }
+ else
{
-// printf("keep length of link = %d\n",dataChunk.len);
+ // printf("keep length of link = %d\n",dataChunk.len);
}
//write the structure header
- fwrite(&dataChunk,sizeof(bChunkInd),1,fp);
-
+ fwrite(&dataChunk, sizeof(bChunkInd), 1, fp);
-
- short int* curStruct1;
+ short int *curStruct1;
curStruct1 = mMemoryDNA->getStruct(dataChunk.dna_nr);
assert(curStruct1 == curStruct);
- char* cur = fixupPointers ? (char*)findLibPointer(dataChunk.oldPtr) : (char*)dataChunk.oldPtr;
+ char *cur = fixupPointers ? (char *)findLibPointer(dataChunk.oldPtr) : (char *)dataChunk.oldPtr;
//write the actual contents of the structure(s)
- fwrite(cur,dataChunk.len,1,fp);
- } else
+ fwrite(cur, dataChunk.len, 1, fp);
+ }
+ else
{
printf("serious error, struct mismatch: don't write\n");
}
}
-
}
-
// ----------------------------------------------------- //
-int bFile::getNextBlock(bChunkInd *dataChunk, const char *dataPtr, const int flags)
+int bFile::getNextBlock(bChunkInd *dataChunk, const char *dataPtr, const int flags)
{
bool swap = false;
bool varies = false;
- if (flags &FD_ENDIAN_SWAP)
+ if (flags & FD_ENDIAN_SWAP)
swap = true;
- if (flags &FD_BITS_VARIES)
+ if (flags & FD_BITS_VARIES)
varies = true;
if (VOID_IS_8)
@@ -1621,27 +1540,25 @@ int bFile::getNextBlock(bChunkInd *dataChunk, const char *dataPtr, const int fl
bChunkPtr4 head;
memcpy(&head, dataPtr, sizeof(bChunkPtr4));
-
bChunkPtr8 chunk;
- chunk.code = head.code;
- chunk.len = head.len;
+ chunk.code = head.code;
+ chunk.len = head.len;
chunk.m_uniqueInts[0] = head.m_uniqueInt;
chunk.m_uniqueInts[1] = 0;
- chunk.dna_nr = head.dna_nr;
- chunk.nr = head.nr;
+ chunk.dna_nr = head.dna_nr;
+ chunk.nr = head.nr;
if (swap)
{
- if ((chunk.code & 0xFFFF)==0)
- chunk.code >>=16;
+ if ((chunk.code & 0xFFFF) == 0)
+ chunk.code >>= 16;
B3_SWITCH_INT(chunk.len);
B3_SWITCH_INT(chunk.dna_nr);
B3_SWITCH_INT(chunk.nr);
}
-
memcpy(dataChunk, &chunk, sizeof(bChunkInd));
}
else
@@ -1651,8 +1568,8 @@ int bFile::getNextBlock(bChunkInd *dataChunk, const char *dataPtr, const int fl
if (swap)
{
- if ((c.code & 0xFFFF)==0)
- c.code >>=16;
+ if ((c.code & 0xFFFF) == 0)
+ c.code >>= 16;
B3_SWITCH_INT(c.len);
B3_SWITCH_INT(c.dna_nr);
@@ -1669,31 +1586,30 @@ int bFile::getNextBlock(bChunkInd *dataChunk, const char *dataPtr, const int fl
bChunkPtr8 head;
memcpy(&head, dataPtr, sizeof(bChunkPtr8));
-
bChunkPtr4 chunk;
chunk.code = head.code;
chunk.len = head.len;
- if (head.m_uniqueInts[0]==head.m_uniqueInts[1])
+ if (head.m_uniqueInts[0] == head.m_uniqueInts[1])
{
chunk.m_uniqueInt = head.m_uniqueInts[0];
- } else
+ }
+ else
{
- b3Long64 oldPtr =0;
+ b3Long64 oldPtr = 0;
memcpy(&oldPtr, &head.m_uniqueInts[0], 8);
if (swap)
B3_SWITCH_LONGINT(oldPtr);
chunk.m_uniqueInt = (int)(oldPtr >> 3);
}
-
chunk.dna_nr = head.dna_nr;
chunk.nr = head.nr;
if (swap)
{
- if ((chunk.code & 0xFFFF)==0)
- chunk.code >>=16;
+ if ((chunk.code & 0xFFFF) == 0)
+ chunk.code >>= 16;
B3_SWITCH_INT(chunk.len);
B3_SWITCH_INT(chunk.dna_nr);
@@ -1709,8 +1625,8 @@ int bFile::getNextBlock(bChunkInd *dataChunk, const char *dataPtr, const int fl
if (swap)
{
- if ((c.code & 0xFFFF)==0)
- c.code >>=16;
+ if ((c.code & 0xFFFF) == 0)
+ c.code >>= 16;
B3_SWITCH_INT(c.len);
B3_SWITCH_INT(c.dna_nr);
@@ -1731,9 +1647,7 @@ int bFile::getNextBlock(bChunkInd *dataChunk, const char *dataPtr, const int fl
print (dataChunk->dna_nr);
print (dataChunk->nr);
#endif
- return (dataChunk->len+ChunkUtils::getOffset(flags));
+ return (dataChunk->len + ChunkUtils::getOffset(flags));
}
-
-
//eof
diff --git a/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3File.h b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3File.h
index 861056806d..bda229cfbd 100644
--- a/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3File.h
+++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3File.h
@@ -20,146 +20,139 @@ subject to the following restrictions:
#include "b3Chunk.h"
#include <stdio.h>
-namespace bParse {
-
- // ----------------------------------------------------- //
- enum bFileFlags
- {
- FD_INVALID =0,
- FD_OK =1,
- FD_VOID_IS_8 =2,
- FD_ENDIAN_SWAP =4,
- FD_FILE_64 =8,
- FD_BITS_VARIES =16,
- FD_VERSION_VARIES = 32,
- FD_DOUBLE_PRECISION =64,
- FD_BROKEN_DNA = 128
- };
-
- enum bFileVerboseMode
+namespace bParse
+{
+// ----------------------------------------------------- //
+enum bFileFlags
+{
+ FD_INVALID = 0,
+ FD_OK = 1,
+ FD_VOID_IS_8 = 2,
+ FD_ENDIAN_SWAP = 4,
+ FD_FILE_64 = 8,
+ FD_BITS_VARIES = 16,
+ FD_VERSION_VARIES = 32,
+ FD_DOUBLE_PRECISION = 64,
+ FD_BROKEN_DNA = 128
+};
+
+enum bFileVerboseMode
+{
+ FD_VERBOSE_EXPORT_XML = 1,
+ FD_VERBOSE_DUMP_DNA_TYPE_DEFINITIONS = 2,
+ FD_VERBOSE_DUMP_CHUNKS = 4,
+ FD_VERBOSE_DUMP_FILE_INFO = 8,
+};
+// ----------------------------------------------------- //
+class bFile
+{
+protected:
+ char m_headerString[7];
+
+ bool mOwnsBuffer;
+ char *mFileBuffer;
+ int mFileLen;
+ int mVersion;
+
+ bPtrMap mLibPointers;
+
+ int mDataStart;
+ bDNA *mFileDNA;
+ bDNA *mMemoryDNA;
+
+ b3AlignedObjectArray<char *> m_pointerFixupArray;
+ b3AlignedObjectArray<char *> m_pointerPtrFixupArray;
+
+ b3AlignedObjectArray<bChunkInd> m_chunks;
+ b3HashMap<b3HashPtr, bChunkInd> m_chunkPtrPtrMap;
+
+ //
+
+ bPtrMap mDataPointers;
+
+ int mFlags;
+
+ // ////////////////////////////////////////////////////////////////////////////
+
+ // buffer offset util
+ int getNextBlock(bChunkInd *dataChunk, const char *dataPtr, const int flags);
+ void safeSwapPtr(char *dst, const char *src);
+
+ virtual void parseHeader();
+
+ virtual void parseData() = 0;
+
+ void resolvePointersMismatch();
+ void resolvePointersChunk(const bChunkInd &dataChunk, int verboseMode);
+
+ int resolvePointersStructRecursive(char *strcPtr, int old_dna, int verboseMode, int recursion);
+ //void swapPtr(char *dst, char *src);
+
+ void parseStruct(char *strcPtr, char *dtPtr, int old_dna, int new_dna, bool fixupPointers);
+ void getMatchingFileDNA(short *old, const char *lookupName, const char *lookupType, char *strcData, char *data, bool fixupPointers);
+ char *getFileElement(short *firstStruct, char *lookupName, char *lookupType, char *data, short **foundPos);
+
+ void swap(char *head, class bChunkInd &ch, bool ignoreEndianFlag);
+ void swapData(char *data, short type, int arraySize, bool ignoreEndianFlag);
+ void swapStruct(int dna_nr, char *data, bool ignoreEndianFlag);
+ void swapLen(char *dataPtr);
+ void swapDNA(char *ptr);
+
+ char *readStruct(char *head, class bChunkInd &chunk);
+ char *getAsString(int code);
+
+ void parseInternal(int verboseMode, char *memDna, int memDnaLength);
+
+public:
+ bFile(const char *filename, const char headerString[7]);
+
+ //todo: make memoryBuffer const char
+ //bFile( const char *memoryBuffer, int len);
+ bFile(char *memoryBuffer, int len, const char headerString[7]);
+ virtual ~bFile();
+
+ bDNA *getFileDNA()
{
- FD_VERBOSE_EXPORT_XML = 1,
- FD_VERBOSE_DUMP_DNA_TYPE_DEFINITIONS = 2,
- FD_VERBOSE_DUMP_CHUNKS = 4,
- FD_VERBOSE_DUMP_FILE_INFO=8,
- };
- // ----------------------------------------------------- //
- class bFile
- {
- protected:
-
- char m_headerString[7];
-
- bool mOwnsBuffer;
- char* mFileBuffer;
- int mFileLen;
- int mVersion;
-
-
- bPtrMap mLibPointers;
-
- int mDataStart;
- bDNA* mFileDNA;
- bDNA* mMemoryDNA;
-
- b3AlignedObjectArray<char*> m_pointerFixupArray;
- b3AlignedObjectArray<char*> m_pointerPtrFixupArray;
-
- b3AlignedObjectArray<bChunkInd> m_chunks;
- b3HashMap<b3HashPtr, bChunkInd> m_chunkPtrPtrMap;
-
- //
-
- bPtrMap mDataPointers;
-
-
- int mFlags;
-
- // ////////////////////////////////////////////////////////////////////////////
-
- // buffer offset util
- int getNextBlock(bChunkInd *dataChunk, const char *dataPtr, const int flags);
- void safeSwapPtr(char *dst, const char *src);
-
- virtual void parseHeader();
-
- virtual void parseData() = 0;
-
- void resolvePointersMismatch();
- void resolvePointersChunk(const bChunkInd& dataChunk, int verboseMode);
+ return mFileDNA;
+ }
- int resolvePointersStructRecursive(char *strcPtr, int old_dna, int verboseMode, int recursion);
- //void swapPtr(char *dst, char *src);
+ virtual void addDataBlock(char *dataBlock) = 0;
- void parseStruct(char *strcPtr, char *dtPtr, int old_dna, int new_dna, bool fixupPointers);
- void getMatchingFileDNA(short* old, const char* lookupName, const char* lookupType, char *strcData, char *data, bool fixupPointers);
- char* getFileElement(short *firstStruct, char *lookupName, char *lookupType, char *data, short **foundPos);
-
-
- void swap(char *head, class bChunkInd& ch, bool ignoreEndianFlag);
- void swapData(char *data, short type, int arraySize, bool ignoreEndianFlag);
- void swapStruct(int dna_nr, char *data, bool ignoreEndianFlag);
- void swapLen(char *dataPtr);
- void swapDNA(char* ptr);
-
-
- char* readStruct(char *head, class bChunkInd& chunk);
- char *getAsString(int code);
-
- void parseInternal(int verboseMode, char* memDna,int memDnaLength);
-
- public:
- bFile(const char *filename, const char headerString[7]);
-
- //todo: make memoryBuffer const char
- //bFile( const char *memoryBuffer, int len);
- bFile( char *memoryBuffer, int len, const char headerString[7]);
- virtual ~bFile();
-
- bDNA* getFileDNA()
- {
- return mFileDNA;
- }
-
- virtual void addDataBlock(char* dataBlock) = 0;
-
- int getFlags() const
- {
- return mFlags;
- }
-
- bPtrMap& getLibPointers()
- {
- return mLibPointers;
- }
-
- void* findLibPointer(void *ptr);
+ int getFlags() const
+ {
+ return mFlags;
+ }
- bool ok();
+ bPtrMap &getLibPointers()
+ {
+ return mLibPointers;
+ }
- virtual void parse(int verboseMode) = 0;
+ void *findLibPointer(void *ptr);
- virtual int write(const char* fileName, bool fixupPointers=false) = 0;
+ bool ok();
- virtual void writeChunks(FILE* fp, bool fixupPointers );
+ virtual void parse(int verboseMode) = 0;
- virtual void writeDNA(FILE* fp) = 0;
+ virtual int write(const char *fileName, bool fixupPointers = false) = 0;
- void updateOldPointers();
- void resolvePointers(int verboseMode);
+ virtual void writeChunks(FILE *fp, bool fixupPointers);
- void dumpChunks(bDNA* dna);
-
- int getVersion() const
- {
- return mVersion;
- }
- //pre-swap the endianness, so that data loaded on a target with different endianness doesn't need to be swapped
- void preSwap();
- void writeFile(const char* fileName);
+ virtual void writeDNA(FILE *fp) = 0;
- };
-}
+ void updateOldPointers();
+ void resolvePointers(int verboseMode);
+ void dumpChunks(bDNA *dna);
-#endif//__BFILE_H__
+ int getVersion() const
+ {
+ return mVersion;
+ }
+ //pre-swap the endianness, so that data loaded on a target with different endianness doesn't need to be swapped
+ void preSwap();
+ void writeFile(const char *fileName);
+};
+} // namespace bParse
+
+#endif //__BFILE_H__
diff --git a/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Serializer.cpp b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Serializer.cpp
index c6a2a832ad..ea4a8e2007 100644
--- a/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Serializer.cpp
+++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Serializer.cpp
@@ -1,908 +1,18062 @@
-char b3s_bulletDNAstr[]= {
-char(83),char(68),char(78),char(65),char(78),char(65),char(77),char(69),char(63),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(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(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(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(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(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(100),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(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(116),char(97),
-char(117),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(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(84),char(89),char(80),char(69),char(76),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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(16),char(0),char(64),char(0),char(68),char(0),char(-48),char(1),char(0),char(1),
-char(-72),char(0),char(-104),char(0),char(104),char(0),char(88),char(0),char(-24),char(1),char(-96),char(3),char(8),char(0),char(52),char(0),char(0),char(0),char(84),char(0),
-char(116),char(0),char(92),char(1),char(-36),char(0),char(-44),char(0),char(-4),char(0),char(92),char(1),char(-52),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(-84),char(1),char(83),char(84),char(82),char(67),
-char(65),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(13),char(0),char(9),char(0),char(16),char(0),char(1),char(0),char(14),char(0),char(9),char(0),
-char(17),char(0),char(2),char(0),char(15),char(0),char(10),char(0),char(13),char(0),char(11),char(0),char(18),char(0),char(2),char(0),char(16),char(0),char(10),char(0),
-char(14),char(0),char(11),char(0),char(19),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(20),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(21),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(22),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(23),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(20),char(0),char(30),char(0),char(22),char(0),char(31),char(0),char(19),char(0),char(32),char(0),
-char(4),char(0),char(33),char(0),char(4),char(0),char(34),char(0),char(24),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(21),char(0),char(30),char(0),char(22),char(0),char(31),char(0),char(4),char(0),char(33),char(0),char(4),char(0),char(34),char(0),char(19),char(0),char(32),char(0),
-char(25),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(26),char(0),char(5),char(0),
-char(25),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(27),char(0),char(5),char(0),char(25),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(28),char(0),char(2),char(0),char(13),char(0),char(45),char(0),char(7),char(0),char(46),char(0),char(29),char(0),char(4),char(0),
-char(27),char(0),char(47),char(0),char(28),char(0),char(48),char(0),char(4),char(0),char(49),char(0),char(0),char(0),char(37),char(0),char(30),char(0),char(1),char(0),
-char(4),char(0),char(50),char(0),char(31),char(0),char(2),char(0),char(2),char(0),char(50),char(0),char(0),char(0),char(51),char(0),char(32),char(0),char(2),char(0),
-char(2),char(0),char(52),char(0),char(0),char(0),char(51),char(0),char(33),char(0),char(2),char(0),char(0),char(0),char(52),char(0),char(0),char(0),char(53),char(0),
-char(34),char(0),char(8),char(0),char(13),char(0),char(54),char(0),char(14),char(0),char(55),char(0),char(30),char(0),char(56),char(0),char(32),char(0),char(57),char(0),
-char(33),char(0),char(58),char(0),char(31),char(0),char(59),char(0),char(4),char(0),char(60),char(0),char(4),char(0),char(61),char(0),char(35),char(0),char(4),char(0),
-char(34),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(36),char(0),char(7),char(0),
-char(25),char(0),char(38),char(0),char(35),char(0),char(65),char(0),char(23),char(0),char(66),char(0),char(24),char(0),char(67),char(0),char(37),char(0),char(68),char(0),
-char(7),char(0),char(43),char(0),char(0),char(0),char(69),char(0),char(38),char(0),char(2),char(0),char(36),char(0),char(70),char(0),char(13),char(0),char(39),char(0),
-char(39),char(0),char(4),char(0),char(17),char(0),char(71),char(0),char(25),char(0),char(72),char(0),char(4),char(0),char(73),char(0),char(7),char(0),char(74),char(0),
-char(40),char(0),char(4),char(0),char(25),char(0),char(38),char(0),char(39),char(0),char(75),char(0),char(4),char(0),char(76),char(0),char(7),char(0),char(43),char(0),
-char(41),char(0),char(3),char(0),char(27),char(0),char(47),char(0),char(4),char(0),char(77),char(0),char(0),char(0),char(37),char(0),char(42),char(0),char(3),char(0),
-char(27),char(0),char(47),char(0),char(4),char(0),char(77),char(0),char(0),char(0),char(37),char(0),char(43),char(0),char(4),char(0),char(4),char(0),char(78),char(0),
-char(7),char(0),char(79),char(0),char(7),char(0),char(80),char(0),char(7),char(0),char(81),char(0),char(37),char(0),char(14),char(0),char(4),char(0),char(82),char(0),
-char(4),char(0),char(83),char(0),char(43),char(0),char(84),char(0),char(4),char(0),char(85),char(0),char(7),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(4),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(0),char(0),char(37),char(0),char(44),char(0),char(5),char(0),char(25),char(0),char(38),char(0),
-char(35),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(95),char(0),char(45),char(0),char(5),char(0),
-char(27),char(0),char(47),char(0),char(13),char(0),char(96),char(0),char(14),char(0),char(97),char(0),char(4),char(0),char(98),char(0),char(0),char(0),char(99),char(0),
-char(46),char(0),char(25),char(0),char(9),char(0),char(100),char(0),char(9),char(0),char(101),char(0),char(25),char(0),char(102),char(0),char(0),char(0),char(35),char(0),
-char(18),char(0),char(103),char(0),char(18),char(0),char(104),char(0),char(14),char(0),char(105),char(0),char(14),char(0),char(106),char(0),char(14),char(0),char(107),char(0),
-char(8),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(4),char(0),char(116),char(0),char(4),char(0),char(117),char(0),
-char(4),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(0),char(0),char(37),char(0),char(47),char(0),char(25),char(0),char(9),char(0),char(100),char(0),char(9),char(0),char(101),char(0),char(25),char(0),char(102),char(0),
-char(0),char(0),char(35),char(0),char(17),char(0),char(103),char(0),char(17),char(0),char(104),char(0),char(13),char(0),char(105),char(0),char(13),char(0),char(106),char(0),
-char(13),char(0),char(107),char(0),char(7),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(4),char(0),char(116),char(0),
-char(4),char(0),char(117),char(0),char(4),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(0),char(0),char(37),char(0),char(48),char(0),char(2),char(0),char(49),char(0),char(123),char(0),char(14),char(0),char(124),char(0),
-char(50),char(0),char(2),char(0),char(51),char(0),char(123),char(0),char(13),char(0),char(124),char(0),char(52),char(0),char(21),char(0),char(47),char(0),char(125),char(0),
-char(15),char(0),char(126),char(0),char(13),char(0),char(127),char(0),char(13),char(0),char(-128),char(0),char(13),char(0),char(-127),char(0),char(13),char(0),char(-126),char(0),
-char(13),char(0),char(124),char(0),char(13),char(0),char(-125),char(0),char(13),char(0),char(-124),char(0),char(13),char(0),char(-123),char(0),char(13),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(7),char(0),char(-116),char(0),char(7),char(0),char(-115),char(0),char(7),char(0),char(-114),char(0),char(7),char(0),char(-113),char(0),char(4),char(0),char(-112),char(0),
-char(53),char(0),char(22),char(0),char(46),char(0),char(125),char(0),char(16),char(0),char(126),char(0),char(14),char(0),char(127),char(0),char(14),char(0),char(-128),char(0),
-char(14),char(0),char(-127),char(0),char(14),char(0),char(-126),char(0),char(14),char(0),char(124),char(0),char(14),char(0),char(-125),char(0),char(14),char(0),char(-124),char(0),
-char(14),char(0),char(-123),char(0),char(14),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(8),char(0),char(-116),char(0),char(8),char(0),char(-115),char(0),char(8),char(0),char(-114),char(0),
-char(8),char(0),char(-113),char(0),char(4),char(0),char(-112),char(0),char(0),char(0),char(37),char(0),char(54),char(0),char(2),char(0),char(4),char(0),char(-111),char(0),
-char(4),char(0),char(-110),char(0),char(55),char(0),char(13),char(0),char(56),char(0),char(-109),char(0),char(56),char(0),char(-108),char(0),char(0),char(0),char(35),char(0),
-char(4),char(0),char(-107),char(0),char(4),char(0),char(-106),char(0),char(4),char(0),char(-105),char(0),char(4),char(0),char(-104),char(0),char(7),char(0),char(-103),char(0),
-char(7),char(0),char(-102),char(0),char(4),char(0),char(-101),char(0),char(4),char(0),char(-100),char(0),char(7),char(0),char(-99),char(0),char(4),char(0),char(-98),char(0),
-char(57),char(0),char(3),char(0),char(55),char(0),char(-97),char(0),char(13),char(0),char(-96),char(0),char(13),char(0),char(-95),char(0),char(58),char(0),char(3),char(0),
-char(55),char(0),char(-97),char(0),char(14),char(0),char(-96),char(0),char(14),char(0),char(-95),char(0),char(59),char(0),char(13),char(0),char(55),char(0),char(-97),char(0),
-char(18),char(0),char(-94),char(0),char(18),char(0),char(-93),char(0),char(4),char(0),char(-92),char(0),char(4),char(0),char(-91),char(0),char(4),char(0),char(-90),char(0),
-char(7),char(0),char(-89),char(0),char(7),char(0),char(-88),char(0),char(7),char(0),char(-87),char(0),char(7),char(0),char(-86),char(0),char(7),char(0),char(-85),char(0),
-char(7),char(0),char(-84),char(0),char(7),char(0),char(-83),char(0),char(60),char(0),char(13),char(0),char(55),char(0),char(-97),char(0),char(17),char(0),char(-94),char(0),
-char(17),char(0),char(-93),char(0),char(4),char(0),char(-92),char(0),char(4),char(0),char(-91),char(0),char(4),char(0),char(-90),char(0),char(7),char(0),char(-89),char(0),
-char(7),char(0),char(-88),char(0),char(7),char(0),char(-87),char(0),char(7),char(0),char(-86),char(0),char(7),char(0),char(-85),char(0),char(7),char(0),char(-84),char(0),
-char(7),char(0),char(-83),char(0),char(61),char(0),char(11),char(0),char(55),char(0),char(-97),char(0),char(17),char(0),char(-94),char(0),char(17),char(0),char(-93),char(0),
-char(7),char(0),char(-82),char(0),char(7),char(0),char(-81),char(0),char(7),char(0),char(-80),char(0),char(7),char(0),char(-85),char(0),char(7),char(0),char(-84),char(0),
-char(7),char(0),char(-83),char(0),char(7),char(0),char(-79),char(0),char(0),char(0),char(21),char(0),char(62),char(0),char(9),char(0),char(55),char(0),char(-97),char(0),
-char(17),char(0),char(-94),char(0),char(17),char(0),char(-93),char(0),char(13),char(0),char(-78),char(0),char(13),char(0),char(-77),char(0),char(13),char(0),char(-76),char(0),
-char(13),char(0),char(-75),char(0),char(4),char(0),char(-74),char(0),char(4),char(0),char(-73),char(0),char(63),char(0),char(5),char(0),char(62),char(0),char(-72),char(0),
-char(4),char(0),char(-71),char(0),char(7),char(0),char(-70),char(0),char(7),char(0),char(-69),char(0),char(7),char(0),char(-68),char(0),char(64),char(0),char(9),char(0),
-char(55),char(0),char(-97),char(0),char(17),char(0),char(-94),char(0),char(17),char(0),char(-93),char(0),char(7),char(0),char(-78),char(0),char(7),char(0),char(-77),char(0),
-char(7),char(0),char(-76),char(0),char(7),char(0),char(-75),char(0),char(4),char(0),char(-74),char(0),char(4),char(0),char(-73),char(0),char(49),char(0),char(22),char(0),
-char(8),char(0),char(-67),char(0),char(8),char(0),char(-79),char(0),char(8),char(0),char(110),char(0),char(8),char(0),char(-66),char(0),char(8),char(0),char(112),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(8),char(0),char(-59),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(-55),char(0),char(4),char(0),char(-54),char(0),char(4),char(0),char(-53),char(0),char(4),char(0),char(-52),char(0),char(4),char(0),char(-51),char(0),
-char(4),char(0),char(-50),char(0),char(0),char(0),char(37),char(0),char(51),char(0),char(22),char(0),char(7),char(0),char(-67),char(0),char(7),char(0),char(-79),char(0),
-char(7),char(0),char(110),char(0),char(7),char(0),char(-66),char(0),char(7),char(0),char(112),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(7),char(0),char(-59),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(-55),char(0),char(4),char(0),char(-54),char(0),
-char(4),char(0),char(-53),char(0),char(4),char(0),char(-52),char(0),char(4),char(0),char(-51),char(0),char(4),char(0),char(-50),char(0),char(0),char(0),char(37),char(0),
-char(65),char(0),char(4),char(0),char(7),char(0),char(-49),char(0),char(7),char(0),char(-48),char(0),char(7),char(0),char(-47),char(0),char(4),char(0),char(78),char(0),
-char(66),char(0),char(10),char(0),char(65),char(0),char(-46),char(0),char(13),char(0),char(-45),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(7),char(0),char(-121),char(0),char(7),char(0),char(-40),char(0),char(4),char(0),char(-39),char(0),
-char(4),char(0),char(53),char(0),char(67),char(0),char(4),char(0),char(65),char(0),char(-46),char(0),char(4),char(0),char(-38),char(0),char(7),char(0),char(-37),char(0),
-char(4),char(0),char(-36),char(0),char(68),char(0),char(4),char(0),char(13),char(0),char(-41),char(0),char(65),char(0),char(-46),char(0),char(4),char(0),char(-35),char(0),
-char(7),char(0),char(-34),char(0),char(69),char(0),char(7),char(0),char(13),char(0),char(-33),char(0),char(65),char(0),char(-46),char(0),char(4),char(0),char(-32),char(0),
-char(7),char(0),char(-31),char(0),char(7),char(0),char(-30),char(0),char(7),char(0),char(-29),char(0),char(4),char(0),char(53),char(0),char(70),char(0),char(6),char(0),
-char(15),char(0),char(-28),char(0),char(13),char(0),char(-30),char(0),char(13),char(0),char(-27),char(0),char(56),char(0),char(-26),char(0),char(4),char(0),char(-25),char(0),
-char(7),char(0),char(-29),char(0),char(71),char(0),char(26),char(0),char(4),char(0),char(-24),char(0),char(7),char(0),char(-23),char(0),char(7),char(0),char(-79),char(0),
-char(7),char(0),char(-22),char(0),char(7),char(0),char(-21),char(0),char(7),char(0),char(-20),char(0),char(7),char(0),char(-19),char(0),char(7),char(0),char(-18),char(0),
-char(7),char(0),char(-17),char(0),char(7),char(0),char(-16),char(0),char(7),char(0),char(-15),char(0),char(7),char(0),char(-14),char(0),char(7),char(0),char(-13),char(0),
-char(7),char(0),char(-12),char(0),char(7),char(0),char(-11),char(0),char(7),char(0),char(-10),char(0),char(7),char(0),char(-9),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(7),char(0),char(-5),char(0),char(4),char(0),char(-4),char(0),char(4),char(0),char(-3),char(0),
-char(4),char(0),char(-2),char(0),char(4),char(0),char(-1),char(0),char(4),char(0),char(117),char(0),char(72),char(0),char(12),char(0),char(15),char(0),char(0),char(1),
-char(15),char(0),char(1),char(1),char(15),char(0),char(2),char(1),char(13),char(0),char(3),char(1),char(13),char(0),char(4),char(1),char(7),char(0),char(5),char(1),
-char(4),char(0),char(6),char(1),char(4),char(0),char(7),char(1),char(4),char(0),char(8),char(1),char(4),char(0),char(9),char(1),char(7),char(0),char(-31),char(0),
-char(4),char(0),char(53),char(0),char(73),char(0),char(27),char(0),char(17),char(0),char(10),char(1),char(15),char(0),char(11),char(1),char(15),char(0),char(12),char(1),
-char(13),char(0),char(3),char(1),char(13),char(0),char(13),char(1),char(13),char(0),char(14),char(1),char(13),char(0),char(15),char(1),char(13),char(0),char(16),char(1),
-char(13),char(0),char(17),char(1),char(4),char(0),char(18),char(1),char(7),char(0),char(19),char(1),char(4),char(0),char(20),char(1),char(4),char(0),char(21),char(1),
-char(4),char(0),char(22),char(1),char(7),char(0),char(23),char(1),char(7),char(0),char(24),char(1),char(4),char(0),char(25),char(1),char(4),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(4),char(0),char(33),char(1),char(4),char(0),char(34),char(1),char(4),char(0),char(35),char(1),char(74),char(0),char(12),char(0),
-char(9),char(0),char(36),char(1),char(9),char(0),char(37),char(1),char(13),char(0),char(38),char(1),char(7),char(0),char(39),char(1),char(7),char(0),char(-63),char(0),
-char(7),char(0),char(40),char(1),char(4),char(0),char(41),char(1),char(13),char(0),char(42),char(1),char(4),char(0),char(43),char(1),char(4),char(0),char(44),char(1),
-char(4),char(0),char(45),char(1),char(4),char(0),char(53),char(0),char(75),char(0),char(19),char(0),char(47),char(0),char(125),char(0),char(72),char(0),char(46),char(1),
-char(65),char(0),char(47),char(1),char(66),char(0),char(48),char(1),char(67),char(0),char(49),char(1),char(68),char(0),char(50),char(1),char(69),char(0),char(51),char(1),
-char(70),char(0),char(52),char(1),char(73),char(0),char(53),char(1),char(74),char(0),char(54),char(1),char(4),char(0),char(55),char(1),char(4),char(0),char(21),char(1),
-char(4),char(0),char(56),char(1),char(4),char(0),char(57),char(1),char(4),char(0),char(58),char(1),char(4),char(0),char(59),char(1),char(4),char(0),char(60),char(1),
-char(4),char(0),char(61),char(1),char(71),char(0),char(62),char(1),};
-int b3s_bulletDNAlen= sizeof(b3s_bulletDNAstr);
-char b3s_bulletDNAstr64[]= {
-char(83),char(68),char(78),char(65),char(78),char(65),char(77),char(69),char(63),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(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(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(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(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(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(100),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(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(116),char(97),
-char(117),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(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(84),char(89),char(80),char(69),char(76),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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(16),char(0),char(72),char(0),char(80),char(0),char(-32),char(1),char(16),char(1),
-char(-72),char(0),char(-104),char(0),char(104),char(0),char(88),char(0),char(-8),char(1),char(-80),char(3),char(8),char(0),char(64),char(0),char(0),char(0),char(96),char(0),
-char(-128),char(0),char(104),char(1),char(-24),char(0),char(-32),char(0),char(8),char(1),char(104),char(1),char(-40),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(-32),char(1),char(83),char(84),char(82),char(67),
-char(65),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(13),char(0),char(9),char(0),char(16),char(0),char(1),char(0),char(14),char(0),char(9),char(0),
-char(17),char(0),char(2),char(0),char(15),char(0),char(10),char(0),char(13),char(0),char(11),char(0),char(18),char(0),char(2),char(0),char(16),char(0),char(10),char(0),
-char(14),char(0),char(11),char(0),char(19),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(20),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(21),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(22),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(23),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(20),char(0),char(30),char(0),char(22),char(0),char(31),char(0),char(19),char(0),char(32),char(0),
-char(4),char(0),char(33),char(0),char(4),char(0),char(34),char(0),char(24),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(21),char(0),char(30),char(0),char(22),char(0),char(31),char(0),char(4),char(0),char(33),char(0),char(4),char(0),char(34),char(0),char(19),char(0),char(32),char(0),
-char(25),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(26),char(0),char(5),char(0),
-char(25),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(27),char(0),char(5),char(0),char(25),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(28),char(0),char(2),char(0),char(13),char(0),char(45),char(0),char(7),char(0),char(46),char(0),char(29),char(0),char(4),char(0),
-char(27),char(0),char(47),char(0),char(28),char(0),char(48),char(0),char(4),char(0),char(49),char(0),char(0),char(0),char(37),char(0),char(30),char(0),char(1),char(0),
-char(4),char(0),char(50),char(0),char(31),char(0),char(2),char(0),char(2),char(0),char(50),char(0),char(0),char(0),char(51),char(0),char(32),char(0),char(2),char(0),
-char(2),char(0),char(52),char(0),char(0),char(0),char(51),char(0),char(33),char(0),char(2),char(0),char(0),char(0),char(52),char(0),char(0),char(0),char(53),char(0),
-char(34),char(0),char(8),char(0),char(13),char(0),char(54),char(0),char(14),char(0),char(55),char(0),char(30),char(0),char(56),char(0),char(32),char(0),char(57),char(0),
-char(33),char(0),char(58),char(0),char(31),char(0),char(59),char(0),char(4),char(0),char(60),char(0),char(4),char(0),char(61),char(0),char(35),char(0),char(4),char(0),
-char(34),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(36),char(0),char(7),char(0),
-char(25),char(0),char(38),char(0),char(35),char(0),char(65),char(0),char(23),char(0),char(66),char(0),char(24),char(0),char(67),char(0),char(37),char(0),char(68),char(0),
-char(7),char(0),char(43),char(0),char(0),char(0),char(69),char(0),char(38),char(0),char(2),char(0),char(36),char(0),char(70),char(0),char(13),char(0),char(39),char(0),
-char(39),char(0),char(4),char(0),char(17),char(0),char(71),char(0),char(25),char(0),char(72),char(0),char(4),char(0),char(73),char(0),char(7),char(0),char(74),char(0),
-char(40),char(0),char(4),char(0),char(25),char(0),char(38),char(0),char(39),char(0),char(75),char(0),char(4),char(0),char(76),char(0),char(7),char(0),char(43),char(0),
-char(41),char(0),char(3),char(0),char(27),char(0),char(47),char(0),char(4),char(0),char(77),char(0),char(0),char(0),char(37),char(0),char(42),char(0),char(3),char(0),
-char(27),char(0),char(47),char(0),char(4),char(0),char(77),char(0),char(0),char(0),char(37),char(0),char(43),char(0),char(4),char(0),char(4),char(0),char(78),char(0),
-char(7),char(0),char(79),char(0),char(7),char(0),char(80),char(0),char(7),char(0),char(81),char(0),char(37),char(0),char(14),char(0),char(4),char(0),char(82),char(0),
-char(4),char(0),char(83),char(0),char(43),char(0),char(84),char(0),char(4),char(0),char(85),char(0),char(7),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(4),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(0),char(0),char(37),char(0),char(44),char(0),char(5),char(0),char(25),char(0),char(38),char(0),
-char(35),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(95),char(0),char(45),char(0),char(5),char(0),
-char(27),char(0),char(47),char(0),char(13),char(0),char(96),char(0),char(14),char(0),char(97),char(0),char(4),char(0),char(98),char(0),char(0),char(0),char(99),char(0),
-char(46),char(0),char(25),char(0),char(9),char(0),char(100),char(0),char(9),char(0),char(101),char(0),char(25),char(0),char(102),char(0),char(0),char(0),char(35),char(0),
-char(18),char(0),char(103),char(0),char(18),char(0),char(104),char(0),char(14),char(0),char(105),char(0),char(14),char(0),char(106),char(0),char(14),char(0),char(107),char(0),
-char(8),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(4),char(0),char(116),char(0),char(4),char(0),char(117),char(0),
-char(4),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(0),char(0),char(37),char(0),char(47),char(0),char(25),char(0),char(9),char(0),char(100),char(0),char(9),char(0),char(101),char(0),char(25),char(0),char(102),char(0),
-char(0),char(0),char(35),char(0),char(17),char(0),char(103),char(0),char(17),char(0),char(104),char(0),char(13),char(0),char(105),char(0),char(13),char(0),char(106),char(0),
-char(13),char(0),char(107),char(0),char(7),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(4),char(0),char(116),char(0),
-char(4),char(0),char(117),char(0),char(4),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(0),char(0),char(37),char(0),char(48),char(0),char(2),char(0),char(49),char(0),char(123),char(0),char(14),char(0),char(124),char(0),
-char(50),char(0),char(2),char(0),char(51),char(0),char(123),char(0),char(13),char(0),char(124),char(0),char(52),char(0),char(21),char(0),char(47),char(0),char(125),char(0),
-char(15),char(0),char(126),char(0),char(13),char(0),char(127),char(0),char(13),char(0),char(-128),char(0),char(13),char(0),char(-127),char(0),char(13),char(0),char(-126),char(0),
-char(13),char(0),char(124),char(0),char(13),char(0),char(-125),char(0),char(13),char(0),char(-124),char(0),char(13),char(0),char(-123),char(0),char(13),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(7),char(0),char(-116),char(0),char(7),char(0),char(-115),char(0),char(7),char(0),char(-114),char(0),char(7),char(0),char(-113),char(0),char(4),char(0),char(-112),char(0),
-char(53),char(0),char(22),char(0),char(46),char(0),char(125),char(0),char(16),char(0),char(126),char(0),char(14),char(0),char(127),char(0),char(14),char(0),char(-128),char(0),
-char(14),char(0),char(-127),char(0),char(14),char(0),char(-126),char(0),char(14),char(0),char(124),char(0),char(14),char(0),char(-125),char(0),char(14),char(0),char(-124),char(0),
-char(14),char(0),char(-123),char(0),char(14),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(8),char(0),char(-116),char(0),char(8),char(0),char(-115),char(0),char(8),char(0),char(-114),char(0),
-char(8),char(0),char(-113),char(0),char(4),char(0),char(-112),char(0),char(0),char(0),char(37),char(0),char(54),char(0),char(2),char(0),char(4),char(0),char(-111),char(0),
-char(4),char(0),char(-110),char(0),char(55),char(0),char(13),char(0),char(56),char(0),char(-109),char(0),char(56),char(0),char(-108),char(0),char(0),char(0),char(35),char(0),
-char(4),char(0),char(-107),char(0),char(4),char(0),char(-106),char(0),char(4),char(0),char(-105),char(0),char(4),char(0),char(-104),char(0),char(7),char(0),char(-103),char(0),
-char(7),char(0),char(-102),char(0),char(4),char(0),char(-101),char(0),char(4),char(0),char(-100),char(0),char(7),char(0),char(-99),char(0),char(4),char(0),char(-98),char(0),
-char(57),char(0),char(3),char(0),char(55),char(0),char(-97),char(0),char(13),char(0),char(-96),char(0),char(13),char(0),char(-95),char(0),char(58),char(0),char(3),char(0),
-char(55),char(0),char(-97),char(0),char(14),char(0),char(-96),char(0),char(14),char(0),char(-95),char(0),char(59),char(0),char(13),char(0),char(55),char(0),char(-97),char(0),
-char(18),char(0),char(-94),char(0),char(18),char(0),char(-93),char(0),char(4),char(0),char(-92),char(0),char(4),char(0),char(-91),char(0),char(4),char(0),char(-90),char(0),
-char(7),char(0),char(-89),char(0),char(7),char(0),char(-88),char(0),char(7),char(0),char(-87),char(0),char(7),char(0),char(-86),char(0),char(7),char(0),char(-85),char(0),
-char(7),char(0),char(-84),char(0),char(7),char(0),char(-83),char(0),char(60),char(0),char(13),char(0),char(55),char(0),char(-97),char(0),char(17),char(0),char(-94),char(0),
-char(17),char(0),char(-93),char(0),char(4),char(0),char(-92),char(0),char(4),char(0),char(-91),char(0),char(4),char(0),char(-90),char(0),char(7),char(0),char(-89),char(0),
-char(7),char(0),char(-88),char(0),char(7),char(0),char(-87),char(0),char(7),char(0),char(-86),char(0),char(7),char(0),char(-85),char(0),char(7),char(0),char(-84),char(0),
-char(7),char(0),char(-83),char(0),char(61),char(0),char(11),char(0),char(55),char(0),char(-97),char(0),char(17),char(0),char(-94),char(0),char(17),char(0),char(-93),char(0),
-char(7),char(0),char(-82),char(0),char(7),char(0),char(-81),char(0),char(7),char(0),char(-80),char(0),char(7),char(0),char(-85),char(0),char(7),char(0),char(-84),char(0),
-char(7),char(0),char(-83),char(0),char(7),char(0),char(-79),char(0),char(0),char(0),char(21),char(0),char(62),char(0),char(9),char(0),char(55),char(0),char(-97),char(0),
-char(17),char(0),char(-94),char(0),char(17),char(0),char(-93),char(0),char(13),char(0),char(-78),char(0),char(13),char(0),char(-77),char(0),char(13),char(0),char(-76),char(0),
-char(13),char(0),char(-75),char(0),char(4),char(0),char(-74),char(0),char(4),char(0),char(-73),char(0),char(63),char(0),char(5),char(0),char(62),char(0),char(-72),char(0),
-char(4),char(0),char(-71),char(0),char(7),char(0),char(-70),char(0),char(7),char(0),char(-69),char(0),char(7),char(0),char(-68),char(0),char(64),char(0),char(9),char(0),
-char(55),char(0),char(-97),char(0),char(17),char(0),char(-94),char(0),char(17),char(0),char(-93),char(0),char(7),char(0),char(-78),char(0),char(7),char(0),char(-77),char(0),
-char(7),char(0),char(-76),char(0),char(7),char(0),char(-75),char(0),char(4),char(0),char(-74),char(0),char(4),char(0),char(-73),char(0),char(49),char(0),char(22),char(0),
-char(8),char(0),char(-67),char(0),char(8),char(0),char(-79),char(0),char(8),char(0),char(110),char(0),char(8),char(0),char(-66),char(0),char(8),char(0),char(112),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(8),char(0),char(-59),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(-55),char(0),char(4),char(0),char(-54),char(0),char(4),char(0),char(-53),char(0),char(4),char(0),char(-52),char(0),char(4),char(0),char(-51),char(0),
-char(4),char(0),char(-50),char(0),char(0),char(0),char(37),char(0),char(51),char(0),char(22),char(0),char(7),char(0),char(-67),char(0),char(7),char(0),char(-79),char(0),
-char(7),char(0),char(110),char(0),char(7),char(0),char(-66),char(0),char(7),char(0),char(112),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(7),char(0),char(-59),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(-55),char(0),char(4),char(0),char(-54),char(0),
-char(4),char(0),char(-53),char(0),char(4),char(0),char(-52),char(0),char(4),char(0),char(-51),char(0),char(4),char(0),char(-50),char(0),char(0),char(0),char(37),char(0),
-char(65),char(0),char(4),char(0),char(7),char(0),char(-49),char(0),char(7),char(0),char(-48),char(0),char(7),char(0),char(-47),char(0),char(4),char(0),char(78),char(0),
-char(66),char(0),char(10),char(0),char(65),char(0),char(-46),char(0),char(13),char(0),char(-45),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(7),char(0),char(-121),char(0),char(7),char(0),char(-40),char(0),char(4),char(0),char(-39),char(0),
-char(4),char(0),char(53),char(0),char(67),char(0),char(4),char(0),char(65),char(0),char(-46),char(0),char(4),char(0),char(-38),char(0),char(7),char(0),char(-37),char(0),
-char(4),char(0),char(-36),char(0),char(68),char(0),char(4),char(0),char(13),char(0),char(-41),char(0),char(65),char(0),char(-46),char(0),char(4),char(0),char(-35),char(0),
-char(7),char(0),char(-34),char(0),char(69),char(0),char(7),char(0),char(13),char(0),char(-33),char(0),char(65),char(0),char(-46),char(0),char(4),char(0),char(-32),char(0),
-char(7),char(0),char(-31),char(0),char(7),char(0),char(-30),char(0),char(7),char(0),char(-29),char(0),char(4),char(0),char(53),char(0),char(70),char(0),char(6),char(0),
-char(15),char(0),char(-28),char(0),char(13),char(0),char(-30),char(0),char(13),char(0),char(-27),char(0),char(56),char(0),char(-26),char(0),char(4),char(0),char(-25),char(0),
-char(7),char(0),char(-29),char(0),char(71),char(0),char(26),char(0),char(4),char(0),char(-24),char(0),char(7),char(0),char(-23),char(0),char(7),char(0),char(-79),char(0),
-char(7),char(0),char(-22),char(0),char(7),char(0),char(-21),char(0),char(7),char(0),char(-20),char(0),char(7),char(0),char(-19),char(0),char(7),char(0),char(-18),char(0),
-char(7),char(0),char(-17),char(0),char(7),char(0),char(-16),char(0),char(7),char(0),char(-15),char(0),char(7),char(0),char(-14),char(0),char(7),char(0),char(-13),char(0),
-char(7),char(0),char(-12),char(0),char(7),char(0),char(-11),char(0),char(7),char(0),char(-10),char(0),char(7),char(0),char(-9),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(7),char(0),char(-5),char(0),char(4),char(0),char(-4),char(0),char(4),char(0),char(-3),char(0),
-char(4),char(0),char(-2),char(0),char(4),char(0),char(-1),char(0),char(4),char(0),char(117),char(0),char(72),char(0),char(12),char(0),char(15),char(0),char(0),char(1),
-char(15),char(0),char(1),char(1),char(15),char(0),char(2),char(1),char(13),char(0),char(3),char(1),char(13),char(0),char(4),char(1),char(7),char(0),char(5),char(1),
-char(4),char(0),char(6),char(1),char(4),char(0),char(7),char(1),char(4),char(0),char(8),char(1),char(4),char(0),char(9),char(1),char(7),char(0),char(-31),char(0),
-char(4),char(0),char(53),char(0),char(73),char(0),char(27),char(0),char(17),char(0),char(10),char(1),char(15),char(0),char(11),char(1),char(15),char(0),char(12),char(1),
-char(13),char(0),char(3),char(1),char(13),char(0),char(13),char(1),char(13),char(0),char(14),char(1),char(13),char(0),char(15),char(1),char(13),char(0),char(16),char(1),
-char(13),char(0),char(17),char(1),char(4),char(0),char(18),char(1),char(7),char(0),char(19),char(1),char(4),char(0),char(20),char(1),char(4),char(0),char(21),char(1),
-char(4),char(0),char(22),char(1),char(7),char(0),char(23),char(1),char(7),char(0),char(24),char(1),char(4),char(0),char(25),char(1),char(4),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(4),char(0),char(33),char(1),char(4),char(0),char(34),char(1),char(4),char(0),char(35),char(1),char(74),char(0),char(12),char(0),
-char(9),char(0),char(36),char(1),char(9),char(0),char(37),char(1),char(13),char(0),char(38),char(1),char(7),char(0),char(39),char(1),char(7),char(0),char(-63),char(0),
-char(7),char(0),char(40),char(1),char(4),char(0),char(41),char(1),char(13),char(0),char(42),char(1),char(4),char(0),char(43),char(1),char(4),char(0),char(44),char(1),
-char(4),char(0),char(45),char(1),char(4),char(0),char(53),char(0),char(75),char(0),char(19),char(0),char(47),char(0),char(125),char(0),char(72),char(0),char(46),char(1),
-char(65),char(0),char(47),char(1),char(66),char(0),char(48),char(1),char(67),char(0),char(49),char(1),char(68),char(0),char(50),char(1),char(69),char(0),char(51),char(1),
-char(70),char(0),char(52),char(1),char(73),char(0),char(53),char(1),char(74),char(0),char(54),char(1),char(4),char(0),char(55),char(1),char(4),char(0),char(21),char(1),
-char(4),char(0),char(56),char(1),char(4),char(0),char(57),char(1),char(4),char(0),char(58),char(1),char(4),char(0),char(59),char(1),char(4),char(0),char(60),char(1),
-char(4),char(0),char(61),char(1),char(71),char(0),char(62),char(1),};
-int b3s_bulletDNAlen64= sizeof(b3s_bulletDNAstr64);
+char b3s_bulletDNAstr[] = {
+ char(83),
+ char(68),
+ char(78),
+ char(65),
+ char(78),
+ char(65),
+ char(77),
+ char(69),
+ char(63),
+ 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(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(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(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(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(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(100),
+ 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(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(116),
+ char(97),
+ char(117),
+ 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(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(84),
+ char(89),
+ char(80),
+ char(69),
+ char(76),
+ 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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(16),
+ char(0),
+ char(64),
+ char(0),
+ char(68),
+ char(0),
+ char(-48),
+ char(1),
+ char(0),
+ char(1),
+ char(-72),
+ char(0),
+ char(-104),
+ char(0),
+ char(104),
+ char(0),
+ char(88),
+ char(0),
+ char(-24),
+ char(1),
+ char(-96),
+ char(3),
+ char(8),
+ char(0),
+ char(52),
+ char(0),
+ char(0),
+ char(0),
+ char(84),
+ char(0),
+ char(116),
+ char(0),
+ char(92),
+ char(1),
+ char(-36),
+ char(0),
+ char(-44),
+ char(0),
+ char(-4),
+ char(0),
+ char(92),
+ char(1),
+ char(-52),
+ 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(-84),
+ char(1),
+ char(83),
+ char(84),
+ char(82),
+ char(67),
+ char(65),
+ 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(13),
+ char(0),
+ char(9),
+ char(0),
+ char(16),
+ char(0),
+ char(1),
+ char(0),
+ char(14),
+ char(0),
+ char(9),
+ char(0),
+ char(17),
+ char(0),
+ char(2),
+ char(0),
+ char(15),
+ char(0),
+ char(10),
+ char(0),
+ char(13),
+ char(0),
+ char(11),
+ char(0),
+ char(18),
+ char(0),
+ char(2),
+ char(0),
+ char(16),
+ char(0),
+ char(10),
+ char(0),
+ char(14),
+ char(0),
+ char(11),
+ char(0),
+ char(19),
+ 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(20),
+ 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(21),
+ 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(22),
+ 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(23),
+ 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(20),
+ char(0),
+ char(30),
+ char(0),
+ char(22),
+ char(0),
+ char(31),
+ char(0),
+ char(19),
+ char(0),
+ char(32),
+ char(0),
+ char(4),
+ char(0),
+ char(33),
+ char(0),
+ char(4),
+ char(0),
+ char(34),
+ char(0),
+ char(24),
+ 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(21),
+ char(0),
+ char(30),
+ char(0),
+ char(22),
+ char(0),
+ char(31),
+ char(0),
+ char(4),
+ char(0),
+ char(33),
+ char(0),
+ char(4),
+ char(0),
+ char(34),
+ char(0),
+ char(19),
+ char(0),
+ char(32),
+ char(0),
+ char(25),
+ 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(26),
+ char(0),
+ char(5),
+ char(0),
+ char(25),
+ 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(27),
+ char(0),
+ char(5),
+ char(0),
+ char(25),
+ 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(28),
+ char(0),
+ char(2),
+ char(0),
+ char(13),
+ char(0),
+ char(45),
+ char(0),
+ char(7),
+ char(0),
+ char(46),
+ char(0),
+ char(29),
+ char(0),
+ char(4),
+ char(0),
+ char(27),
+ char(0),
+ char(47),
+ char(0),
+ char(28),
+ char(0),
+ char(48),
+ char(0),
+ char(4),
+ char(0),
+ char(49),
+ char(0),
+ char(0),
+ char(0),
+ char(37),
+ char(0),
+ char(30),
+ char(0),
+ char(1),
+ char(0),
+ char(4),
+ char(0),
+ char(50),
+ char(0),
+ char(31),
+ char(0),
+ char(2),
+ char(0),
+ char(2),
+ char(0),
+ char(50),
+ char(0),
+ char(0),
+ char(0),
+ char(51),
+ char(0),
+ char(32),
+ char(0),
+ char(2),
+ char(0),
+ char(2),
+ char(0),
+ char(52),
+ char(0),
+ char(0),
+ char(0),
+ char(51),
+ char(0),
+ char(33),
+ char(0),
+ char(2),
+ char(0),
+ char(0),
+ char(0),
+ char(52),
+ char(0),
+ char(0),
+ char(0),
+ char(53),
+ char(0),
+ char(34),
+ char(0),
+ char(8),
+ char(0),
+ char(13),
+ char(0),
+ char(54),
+ char(0),
+ char(14),
+ char(0),
+ char(55),
+ char(0),
+ char(30),
+ char(0),
+ char(56),
+ char(0),
+ char(32),
+ char(0),
+ char(57),
+ char(0),
+ char(33),
+ char(0),
+ char(58),
+ char(0),
+ char(31),
+ char(0),
+ char(59),
+ char(0),
+ char(4),
+ char(0),
+ char(60),
+ char(0),
+ char(4),
+ char(0),
+ char(61),
+ char(0),
+ char(35),
+ char(0),
+ char(4),
+ char(0),
+ char(34),
+ 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(36),
+ char(0),
+ char(7),
+ char(0),
+ char(25),
+ char(0),
+ char(38),
+ char(0),
+ char(35),
+ char(0),
+ char(65),
+ char(0),
+ char(23),
+ char(0),
+ char(66),
+ char(0),
+ char(24),
+ char(0),
+ char(67),
+ char(0),
+ char(37),
+ char(0),
+ char(68),
+ char(0),
+ char(7),
+ char(0),
+ char(43),
+ char(0),
+ char(0),
+ char(0),
+ char(69),
+ char(0),
+ char(38),
+ char(0),
+ char(2),
+ char(0),
+ char(36),
+ char(0),
+ char(70),
+ char(0),
+ char(13),
+ char(0),
+ char(39),
+ char(0),
+ char(39),
+ char(0),
+ char(4),
+ char(0),
+ char(17),
+ char(0),
+ char(71),
+ char(0),
+ char(25),
+ char(0),
+ char(72),
+ char(0),
+ char(4),
+ char(0),
+ char(73),
+ char(0),
+ char(7),
+ char(0),
+ char(74),
+ char(0),
+ char(40),
+ char(0),
+ char(4),
+ char(0),
+ char(25),
+ char(0),
+ char(38),
+ char(0),
+ char(39),
+ char(0),
+ char(75),
+ char(0),
+ char(4),
+ char(0),
+ char(76),
+ char(0),
+ char(7),
+ char(0),
+ char(43),
+ char(0),
+ char(41),
+ char(0),
+ char(3),
+ char(0),
+ char(27),
+ char(0),
+ char(47),
+ char(0),
+ char(4),
+ char(0),
+ char(77),
+ char(0),
+ char(0),
+ char(0),
+ char(37),
+ char(0),
+ char(42),
+ char(0),
+ char(3),
+ char(0),
+ char(27),
+ char(0),
+ char(47),
+ char(0),
+ char(4),
+ char(0),
+ char(77),
+ char(0),
+ char(0),
+ char(0),
+ char(37),
+ char(0),
+ char(43),
+ char(0),
+ char(4),
+ char(0),
+ char(4),
+ char(0),
+ char(78),
+ char(0),
+ char(7),
+ char(0),
+ char(79),
+ char(0),
+ char(7),
+ char(0),
+ char(80),
+ char(0),
+ char(7),
+ char(0),
+ char(81),
+ char(0),
+ char(37),
+ char(0),
+ char(14),
+ char(0),
+ char(4),
+ char(0),
+ char(82),
+ char(0),
+ char(4),
+ char(0),
+ char(83),
+ char(0),
+ char(43),
+ char(0),
+ char(84),
+ char(0),
+ char(4),
+ char(0),
+ char(85),
+ char(0),
+ char(7),
+ 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(4),
+ 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(0),
+ char(0),
+ char(37),
+ char(0),
+ char(44),
+ char(0),
+ char(5),
+ char(0),
+ char(25),
+ char(0),
+ char(38),
+ char(0),
+ char(35),
+ 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(95),
+ char(0),
+ char(45),
+ char(0),
+ char(5),
+ char(0),
+ char(27),
+ char(0),
+ char(47),
+ char(0),
+ char(13),
+ char(0),
+ char(96),
+ char(0),
+ char(14),
+ char(0),
+ char(97),
+ char(0),
+ char(4),
+ char(0),
+ char(98),
+ char(0),
+ char(0),
+ char(0),
+ char(99),
+ char(0),
+ char(46),
+ char(0),
+ char(25),
+ char(0),
+ char(9),
+ char(0),
+ char(100),
+ char(0),
+ char(9),
+ char(0),
+ char(101),
+ char(0),
+ char(25),
+ char(0),
+ char(102),
+ char(0),
+ char(0),
+ char(0),
+ char(35),
+ char(0),
+ char(18),
+ char(0),
+ char(103),
+ char(0),
+ char(18),
+ char(0),
+ char(104),
+ char(0),
+ char(14),
+ char(0),
+ char(105),
+ char(0),
+ char(14),
+ char(0),
+ char(106),
+ char(0),
+ char(14),
+ char(0),
+ char(107),
+ char(0),
+ char(8),
+ 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(4),
+ char(0),
+ char(116),
+ char(0),
+ char(4),
+ char(0),
+ char(117),
+ char(0),
+ char(4),
+ 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(0),
+ char(0),
+ char(37),
+ char(0),
+ char(47),
+ char(0),
+ char(25),
+ char(0),
+ char(9),
+ char(0),
+ char(100),
+ char(0),
+ char(9),
+ char(0),
+ char(101),
+ char(0),
+ char(25),
+ char(0),
+ char(102),
+ char(0),
+ char(0),
+ char(0),
+ char(35),
+ char(0),
+ char(17),
+ char(0),
+ char(103),
+ char(0),
+ char(17),
+ char(0),
+ char(104),
+ char(0),
+ char(13),
+ char(0),
+ char(105),
+ char(0),
+ char(13),
+ char(0),
+ char(106),
+ char(0),
+ char(13),
+ char(0),
+ char(107),
+ char(0),
+ char(7),
+ 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(4),
+ char(0),
+ char(116),
+ char(0),
+ char(4),
+ char(0),
+ char(117),
+ char(0),
+ char(4),
+ 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(0),
+ char(0),
+ char(37),
+ char(0),
+ char(48),
+ char(0),
+ char(2),
+ char(0),
+ char(49),
+ char(0),
+ char(123),
+ char(0),
+ char(14),
+ char(0),
+ char(124),
+ char(0),
+ char(50),
+ char(0),
+ char(2),
+ char(0),
+ char(51),
+ char(0),
+ char(123),
+ char(0),
+ char(13),
+ char(0),
+ char(124),
+ char(0),
+ char(52),
+ char(0),
+ char(21),
+ char(0),
+ char(47),
+ char(0),
+ char(125),
+ char(0),
+ char(15),
+ char(0),
+ char(126),
+ char(0),
+ char(13),
+ char(0),
+ char(127),
+ char(0),
+ char(13),
+ char(0),
+ char(-128),
+ char(0),
+ char(13),
+ char(0),
+ char(-127),
+ char(0),
+ char(13),
+ char(0),
+ char(-126),
+ char(0),
+ char(13),
+ char(0),
+ char(124),
+ char(0),
+ char(13),
+ char(0),
+ char(-125),
+ char(0),
+ char(13),
+ char(0),
+ char(-124),
+ char(0),
+ char(13),
+ char(0),
+ char(-123),
+ char(0),
+ char(13),
+ 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(7),
+ char(0),
+ char(-116),
+ char(0),
+ char(7),
+ char(0),
+ char(-115),
+ char(0),
+ char(7),
+ char(0),
+ char(-114),
+ char(0),
+ char(7),
+ char(0),
+ char(-113),
+ char(0),
+ char(4),
+ char(0),
+ char(-112),
+ char(0),
+ char(53),
+ char(0),
+ char(22),
+ char(0),
+ char(46),
+ char(0),
+ char(125),
+ char(0),
+ char(16),
+ char(0),
+ char(126),
+ char(0),
+ char(14),
+ char(0),
+ char(127),
+ char(0),
+ char(14),
+ char(0),
+ char(-128),
+ char(0),
+ char(14),
+ char(0),
+ char(-127),
+ char(0),
+ char(14),
+ char(0),
+ char(-126),
+ char(0),
+ char(14),
+ char(0),
+ char(124),
+ char(0),
+ char(14),
+ char(0),
+ char(-125),
+ char(0),
+ char(14),
+ char(0),
+ char(-124),
+ char(0),
+ char(14),
+ char(0),
+ char(-123),
+ char(0),
+ char(14),
+ 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(8),
+ char(0),
+ char(-116),
+ char(0),
+ char(8),
+ char(0),
+ char(-115),
+ char(0),
+ char(8),
+ char(0),
+ char(-114),
+ char(0),
+ char(8),
+ char(0),
+ char(-113),
+ char(0),
+ char(4),
+ char(0),
+ char(-112),
+ char(0),
+ char(0),
+ char(0),
+ char(37),
+ char(0),
+ char(54),
+ char(0),
+ char(2),
+ char(0),
+ char(4),
+ char(0),
+ char(-111),
+ char(0),
+ char(4),
+ char(0),
+ char(-110),
+ char(0),
+ char(55),
+ char(0),
+ char(13),
+ char(0),
+ char(56),
+ char(0),
+ char(-109),
+ char(0),
+ char(56),
+ char(0),
+ char(-108),
+ char(0),
+ char(0),
+ char(0),
+ char(35),
+ char(0),
+ char(4),
+ char(0),
+ char(-107),
+ char(0),
+ char(4),
+ char(0),
+ char(-106),
+ char(0),
+ char(4),
+ char(0),
+ char(-105),
+ char(0),
+ char(4),
+ char(0),
+ char(-104),
+ char(0),
+ char(7),
+ char(0),
+ char(-103),
+ char(0),
+ char(7),
+ char(0),
+ char(-102),
+ char(0),
+ char(4),
+ char(0),
+ char(-101),
+ char(0),
+ char(4),
+ char(0),
+ char(-100),
+ char(0),
+ char(7),
+ char(0),
+ char(-99),
+ char(0),
+ char(4),
+ char(0),
+ char(-98),
+ char(0),
+ char(57),
+ char(0),
+ char(3),
+ char(0),
+ char(55),
+ char(0),
+ char(-97),
+ char(0),
+ char(13),
+ char(0),
+ char(-96),
+ char(0),
+ char(13),
+ char(0),
+ char(-95),
+ char(0),
+ char(58),
+ char(0),
+ char(3),
+ char(0),
+ char(55),
+ char(0),
+ char(-97),
+ char(0),
+ char(14),
+ char(0),
+ char(-96),
+ char(0),
+ char(14),
+ char(0),
+ char(-95),
+ char(0),
+ char(59),
+ char(0),
+ char(13),
+ char(0),
+ char(55),
+ char(0),
+ char(-97),
+ char(0),
+ char(18),
+ char(0),
+ char(-94),
+ char(0),
+ char(18),
+ char(0),
+ char(-93),
+ char(0),
+ char(4),
+ char(0),
+ char(-92),
+ char(0),
+ char(4),
+ char(0),
+ char(-91),
+ char(0),
+ char(4),
+ char(0),
+ char(-90),
+ char(0),
+ char(7),
+ char(0),
+ char(-89),
+ char(0),
+ char(7),
+ char(0),
+ char(-88),
+ char(0),
+ char(7),
+ char(0),
+ char(-87),
+ char(0),
+ char(7),
+ char(0),
+ char(-86),
+ char(0),
+ char(7),
+ char(0),
+ char(-85),
+ char(0),
+ char(7),
+ char(0),
+ char(-84),
+ char(0),
+ char(7),
+ char(0),
+ char(-83),
+ char(0),
+ char(60),
+ char(0),
+ char(13),
+ char(0),
+ char(55),
+ char(0),
+ char(-97),
+ char(0),
+ char(17),
+ char(0),
+ char(-94),
+ char(0),
+ char(17),
+ char(0),
+ char(-93),
+ char(0),
+ char(4),
+ char(0),
+ char(-92),
+ char(0),
+ char(4),
+ char(0),
+ char(-91),
+ char(0),
+ char(4),
+ char(0),
+ char(-90),
+ char(0),
+ char(7),
+ char(0),
+ char(-89),
+ char(0),
+ char(7),
+ char(0),
+ char(-88),
+ char(0),
+ char(7),
+ char(0),
+ char(-87),
+ char(0),
+ char(7),
+ char(0),
+ char(-86),
+ char(0),
+ char(7),
+ char(0),
+ char(-85),
+ char(0),
+ char(7),
+ char(0),
+ char(-84),
+ char(0),
+ char(7),
+ char(0),
+ char(-83),
+ char(0),
+ char(61),
+ char(0),
+ char(11),
+ char(0),
+ char(55),
+ char(0),
+ char(-97),
+ char(0),
+ char(17),
+ char(0),
+ char(-94),
+ char(0),
+ char(17),
+ char(0),
+ char(-93),
+ char(0),
+ char(7),
+ char(0),
+ char(-82),
+ char(0),
+ char(7),
+ char(0),
+ char(-81),
+ char(0),
+ char(7),
+ char(0),
+ char(-80),
+ char(0),
+ char(7),
+ char(0),
+ char(-85),
+ char(0),
+ char(7),
+ char(0),
+ char(-84),
+ char(0),
+ char(7),
+ char(0),
+ char(-83),
+ char(0),
+ char(7),
+ char(0),
+ char(-79),
+ char(0),
+ char(0),
+ char(0),
+ char(21),
+ char(0),
+ char(62),
+ char(0),
+ char(9),
+ char(0),
+ char(55),
+ char(0),
+ char(-97),
+ char(0),
+ char(17),
+ char(0),
+ char(-94),
+ char(0),
+ char(17),
+ char(0),
+ char(-93),
+ char(0),
+ char(13),
+ char(0),
+ char(-78),
+ char(0),
+ char(13),
+ char(0),
+ char(-77),
+ char(0),
+ char(13),
+ char(0),
+ char(-76),
+ char(0),
+ char(13),
+ char(0),
+ char(-75),
+ char(0),
+ char(4),
+ char(0),
+ char(-74),
+ char(0),
+ char(4),
+ char(0),
+ char(-73),
+ char(0),
+ char(63),
+ char(0),
+ char(5),
+ char(0),
+ char(62),
+ char(0),
+ char(-72),
+ char(0),
+ char(4),
+ char(0),
+ char(-71),
+ char(0),
+ char(7),
+ char(0),
+ char(-70),
+ char(0),
+ char(7),
+ char(0),
+ char(-69),
+ char(0),
+ char(7),
+ char(0),
+ char(-68),
+ char(0),
+ char(64),
+ char(0),
+ char(9),
+ char(0),
+ char(55),
+ char(0),
+ char(-97),
+ char(0),
+ char(17),
+ char(0),
+ char(-94),
+ char(0),
+ char(17),
+ char(0),
+ char(-93),
+ char(0),
+ char(7),
+ char(0),
+ char(-78),
+ char(0),
+ char(7),
+ char(0),
+ char(-77),
+ char(0),
+ char(7),
+ char(0),
+ char(-76),
+ char(0),
+ char(7),
+ char(0),
+ char(-75),
+ char(0),
+ char(4),
+ char(0),
+ char(-74),
+ char(0),
+ char(4),
+ char(0),
+ char(-73),
+ char(0),
+ char(49),
+ char(0),
+ char(22),
+ char(0),
+ char(8),
+ char(0),
+ char(-67),
+ char(0),
+ char(8),
+ char(0),
+ char(-79),
+ char(0),
+ char(8),
+ char(0),
+ char(110),
+ char(0),
+ char(8),
+ char(0),
+ char(-66),
+ char(0),
+ char(8),
+ char(0),
+ char(112),
+ 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(8),
+ char(0),
+ char(-59),
+ 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(-55),
+ char(0),
+ char(4),
+ char(0),
+ char(-54),
+ char(0),
+ char(4),
+ char(0),
+ char(-53),
+ char(0),
+ char(4),
+ char(0),
+ char(-52),
+ char(0),
+ char(4),
+ char(0),
+ char(-51),
+ char(0),
+ char(4),
+ char(0),
+ char(-50),
+ char(0),
+ char(0),
+ char(0),
+ char(37),
+ char(0),
+ char(51),
+ char(0),
+ char(22),
+ char(0),
+ char(7),
+ char(0),
+ char(-67),
+ char(0),
+ char(7),
+ char(0),
+ char(-79),
+ char(0),
+ char(7),
+ char(0),
+ char(110),
+ char(0),
+ char(7),
+ char(0),
+ char(-66),
+ char(0),
+ char(7),
+ char(0),
+ char(112),
+ 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(7),
+ char(0),
+ char(-59),
+ 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(-55),
+ char(0),
+ char(4),
+ char(0),
+ char(-54),
+ char(0),
+ char(4),
+ char(0),
+ char(-53),
+ char(0),
+ char(4),
+ char(0),
+ char(-52),
+ char(0),
+ char(4),
+ char(0),
+ char(-51),
+ char(0),
+ char(4),
+ char(0),
+ char(-50),
+ char(0),
+ char(0),
+ char(0),
+ char(37),
+ char(0),
+ char(65),
+ char(0),
+ char(4),
+ char(0),
+ char(7),
+ char(0),
+ char(-49),
+ char(0),
+ char(7),
+ char(0),
+ char(-48),
+ char(0),
+ char(7),
+ char(0),
+ char(-47),
+ char(0),
+ char(4),
+ char(0),
+ char(78),
+ char(0),
+ char(66),
+ char(0),
+ char(10),
+ char(0),
+ char(65),
+ char(0),
+ char(-46),
+ char(0),
+ char(13),
+ char(0),
+ char(-45),
+ 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(7),
+ char(0),
+ char(-121),
+ char(0),
+ char(7),
+ char(0),
+ char(-40),
+ char(0),
+ char(4),
+ char(0),
+ char(-39),
+ char(0),
+ char(4),
+ char(0),
+ char(53),
+ char(0),
+ char(67),
+ char(0),
+ char(4),
+ char(0),
+ char(65),
+ char(0),
+ char(-46),
+ char(0),
+ char(4),
+ char(0),
+ char(-38),
+ char(0),
+ char(7),
+ char(0),
+ char(-37),
+ char(0),
+ char(4),
+ char(0),
+ char(-36),
+ char(0),
+ char(68),
+ char(0),
+ char(4),
+ char(0),
+ char(13),
+ char(0),
+ char(-41),
+ char(0),
+ char(65),
+ char(0),
+ char(-46),
+ char(0),
+ char(4),
+ char(0),
+ char(-35),
+ char(0),
+ char(7),
+ char(0),
+ char(-34),
+ char(0),
+ char(69),
+ char(0),
+ char(7),
+ char(0),
+ char(13),
+ char(0),
+ char(-33),
+ char(0),
+ char(65),
+ char(0),
+ char(-46),
+ char(0),
+ char(4),
+ char(0),
+ char(-32),
+ char(0),
+ char(7),
+ char(0),
+ char(-31),
+ char(0),
+ char(7),
+ char(0),
+ char(-30),
+ char(0),
+ char(7),
+ char(0),
+ char(-29),
+ char(0),
+ char(4),
+ char(0),
+ char(53),
+ char(0),
+ char(70),
+ char(0),
+ char(6),
+ char(0),
+ char(15),
+ char(0),
+ char(-28),
+ char(0),
+ char(13),
+ char(0),
+ char(-30),
+ char(0),
+ char(13),
+ char(0),
+ char(-27),
+ char(0),
+ char(56),
+ char(0),
+ char(-26),
+ char(0),
+ char(4),
+ char(0),
+ char(-25),
+ char(0),
+ char(7),
+ char(0),
+ char(-29),
+ char(0),
+ char(71),
+ char(0),
+ char(26),
+ char(0),
+ char(4),
+ char(0),
+ char(-24),
+ char(0),
+ char(7),
+ char(0),
+ char(-23),
+ char(0),
+ char(7),
+ char(0),
+ char(-79),
+ char(0),
+ char(7),
+ char(0),
+ char(-22),
+ char(0),
+ char(7),
+ char(0),
+ char(-21),
+ char(0),
+ char(7),
+ char(0),
+ char(-20),
+ char(0),
+ char(7),
+ char(0),
+ char(-19),
+ char(0),
+ char(7),
+ char(0),
+ char(-18),
+ char(0),
+ char(7),
+ char(0),
+ char(-17),
+ char(0),
+ char(7),
+ char(0),
+ char(-16),
+ char(0),
+ char(7),
+ char(0),
+ char(-15),
+ char(0),
+ char(7),
+ char(0),
+ char(-14),
+ char(0),
+ char(7),
+ char(0),
+ char(-13),
+ char(0),
+ char(7),
+ char(0),
+ char(-12),
+ char(0),
+ char(7),
+ char(0),
+ char(-11),
+ char(0),
+ char(7),
+ char(0),
+ char(-10),
+ char(0),
+ char(7),
+ char(0),
+ char(-9),
+ 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(7),
+ char(0),
+ char(-5),
+ char(0),
+ char(4),
+ char(0),
+ char(-4),
+ char(0),
+ char(4),
+ char(0),
+ char(-3),
+ char(0),
+ char(4),
+ char(0),
+ char(-2),
+ char(0),
+ char(4),
+ char(0),
+ char(-1),
+ char(0),
+ char(4),
+ char(0),
+ char(117),
+ char(0),
+ char(72),
+ char(0),
+ char(12),
+ char(0),
+ char(15),
+ char(0),
+ char(0),
+ char(1),
+ char(15),
+ char(0),
+ char(1),
+ char(1),
+ char(15),
+ char(0),
+ char(2),
+ char(1),
+ char(13),
+ char(0),
+ char(3),
+ char(1),
+ char(13),
+ char(0),
+ char(4),
+ char(1),
+ char(7),
+ char(0),
+ char(5),
+ char(1),
+ char(4),
+ char(0),
+ char(6),
+ char(1),
+ char(4),
+ char(0),
+ char(7),
+ char(1),
+ char(4),
+ char(0),
+ char(8),
+ char(1),
+ char(4),
+ char(0),
+ char(9),
+ char(1),
+ char(7),
+ char(0),
+ char(-31),
+ char(0),
+ char(4),
+ char(0),
+ char(53),
+ char(0),
+ char(73),
+ char(0),
+ char(27),
+ char(0),
+ char(17),
+ char(0),
+ char(10),
+ char(1),
+ char(15),
+ char(0),
+ char(11),
+ char(1),
+ char(15),
+ char(0),
+ char(12),
+ char(1),
+ char(13),
+ char(0),
+ char(3),
+ char(1),
+ char(13),
+ char(0),
+ char(13),
+ char(1),
+ char(13),
+ char(0),
+ char(14),
+ char(1),
+ char(13),
+ char(0),
+ char(15),
+ char(1),
+ char(13),
+ char(0),
+ char(16),
+ char(1),
+ char(13),
+ char(0),
+ char(17),
+ char(1),
+ char(4),
+ char(0),
+ char(18),
+ char(1),
+ char(7),
+ char(0),
+ char(19),
+ char(1),
+ char(4),
+ char(0),
+ char(20),
+ char(1),
+ char(4),
+ char(0),
+ char(21),
+ char(1),
+ char(4),
+ char(0),
+ char(22),
+ char(1),
+ char(7),
+ char(0),
+ char(23),
+ char(1),
+ char(7),
+ char(0),
+ char(24),
+ char(1),
+ char(4),
+ char(0),
+ char(25),
+ char(1),
+ char(4),
+ 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(4),
+ char(0),
+ char(33),
+ char(1),
+ char(4),
+ char(0),
+ char(34),
+ char(1),
+ char(4),
+ char(0),
+ char(35),
+ char(1),
+ char(74),
+ char(0),
+ char(12),
+ char(0),
+ char(9),
+ char(0),
+ char(36),
+ char(1),
+ char(9),
+ char(0),
+ char(37),
+ char(1),
+ char(13),
+ char(0),
+ char(38),
+ char(1),
+ char(7),
+ char(0),
+ char(39),
+ char(1),
+ char(7),
+ char(0),
+ char(-63),
+ char(0),
+ char(7),
+ char(0),
+ char(40),
+ char(1),
+ char(4),
+ char(0),
+ char(41),
+ char(1),
+ char(13),
+ char(0),
+ char(42),
+ char(1),
+ char(4),
+ char(0),
+ char(43),
+ char(1),
+ char(4),
+ char(0),
+ char(44),
+ char(1),
+ char(4),
+ char(0),
+ char(45),
+ char(1),
+ char(4),
+ char(0),
+ char(53),
+ char(0),
+ char(75),
+ char(0),
+ char(19),
+ char(0),
+ char(47),
+ char(0),
+ char(125),
+ char(0),
+ char(72),
+ char(0),
+ char(46),
+ char(1),
+ char(65),
+ char(0),
+ char(47),
+ char(1),
+ char(66),
+ char(0),
+ char(48),
+ char(1),
+ char(67),
+ char(0),
+ char(49),
+ char(1),
+ char(68),
+ char(0),
+ char(50),
+ char(1),
+ char(69),
+ char(0),
+ char(51),
+ char(1),
+ char(70),
+ char(0),
+ char(52),
+ char(1),
+ char(73),
+ char(0),
+ char(53),
+ char(1),
+ char(74),
+ char(0),
+ char(54),
+ char(1),
+ char(4),
+ char(0),
+ char(55),
+ char(1),
+ char(4),
+ char(0),
+ char(21),
+ char(1),
+ char(4),
+ char(0),
+ char(56),
+ char(1),
+ char(4),
+ char(0),
+ char(57),
+ char(1),
+ char(4),
+ char(0),
+ char(58),
+ char(1),
+ char(4),
+ char(0),
+ char(59),
+ char(1),
+ char(4),
+ char(0),
+ char(60),
+ char(1),
+ char(4),
+ char(0),
+ char(61),
+ char(1),
+ char(71),
+ char(0),
+ char(62),
+ char(1),
+};
+int b3s_bulletDNAlen = sizeof(b3s_bulletDNAstr);
+char b3s_bulletDNAstr64[] = {
+ char(83),
+ char(68),
+ char(78),
+ char(65),
+ char(78),
+ char(65),
+ char(77),
+ char(69),
+ char(63),
+ 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(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(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(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(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(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(100),
+ 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(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(116),
+ char(97),
+ char(117),
+ 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(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(84),
+ char(89),
+ char(80),
+ char(69),
+ char(76),
+ 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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(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(16),
+ char(0),
+ char(72),
+ char(0),
+ char(80),
+ char(0),
+ char(-32),
+ char(1),
+ char(16),
+ char(1),
+ char(-72),
+ char(0),
+ char(-104),
+ char(0),
+ char(104),
+ char(0),
+ char(88),
+ char(0),
+ char(-8),
+ char(1),
+ char(-80),
+ char(3),
+ char(8),
+ char(0),
+ char(64),
+ char(0),
+ char(0),
+ char(0),
+ char(96),
+ char(0),
+ char(-128),
+ char(0),
+ char(104),
+ char(1),
+ char(-24),
+ char(0),
+ char(-32),
+ char(0),
+ char(8),
+ char(1),
+ char(104),
+ char(1),
+ char(-40),
+ 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(-32),
+ char(1),
+ char(83),
+ char(84),
+ char(82),
+ char(67),
+ char(65),
+ 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(13),
+ char(0),
+ char(9),
+ char(0),
+ char(16),
+ char(0),
+ char(1),
+ char(0),
+ char(14),
+ char(0),
+ char(9),
+ char(0),
+ char(17),
+ char(0),
+ char(2),
+ char(0),
+ char(15),
+ char(0),
+ char(10),
+ char(0),
+ char(13),
+ char(0),
+ char(11),
+ char(0),
+ char(18),
+ char(0),
+ char(2),
+ char(0),
+ char(16),
+ char(0),
+ char(10),
+ char(0),
+ char(14),
+ char(0),
+ char(11),
+ char(0),
+ char(19),
+ 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(20),
+ 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(21),
+ 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(22),
+ 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(23),
+ 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(20),
+ char(0),
+ char(30),
+ char(0),
+ char(22),
+ char(0),
+ char(31),
+ char(0),
+ char(19),
+ char(0),
+ char(32),
+ char(0),
+ char(4),
+ char(0),
+ char(33),
+ char(0),
+ char(4),
+ char(0),
+ char(34),
+ char(0),
+ char(24),
+ 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(21),
+ char(0),
+ char(30),
+ char(0),
+ char(22),
+ char(0),
+ char(31),
+ char(0),
+ char(4),
+ char(0),
+ char(33),
+ char(0),
+ char(4),
+ char(0),
+ char(34),
+ char(0),
+ char(19),
+ char(0),
+ char(32),
+ char(0),
+ char(25),
+ 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(26),
+ char(0),
+ char(5),
+ char(0),
+ char(25),
+ 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(27),
+ char(0),
+ char(5),
+ char(0),
+ char(25),
+ 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(28),
+ char(0),
+ char(2),
+ char(0),
+ char(13),
+ char(0),
+ char(45),
+ char(0),
+ char(7),
+ char(0),
+ char(46),
+ char(0),
+ char(29),
+ char(0),
+ char(4),
+ char(0),
+ char(27),
+ char(0),
+ char(47),
+ char(0),
+ char(28),
+ char(0),
+ char(48),
+ char(0),
+ char(4),
+ char(0),
+ char(49),
+ char(0),
+ char(0),
+ char(0),
+ char(37),
+ char(0),
+ char(30),
+ char(0),
+ char(1),
+ char(0),
+ char(4),
+ char(0),
+ char(50),
+ char(0),
+ char(31),
+ char(0),
+ char(2),
+ char(0),
+ char(2),
+ char(0),
+ char(50),
+ char(0),
+ char(0),
+ char(0),
+ char(51),
+ char(0),
+ char(32),
+ char(0),
+ char(2),
+ char(0),
+ char(2),
+ char(0),
+ char(52),
+ char(0),
+ char(0),
+ char(0),
+ char(51),
+ char(0),
+ char(33),
+ char(0),
+ char(2),
+ char(0),
+ char(0),
+ char(0),
+ char(52),
+ char(0),
+ char(0),
+ char(0),
+ char(53),
+ char(0),
+ char(34),
+ char(0),
+ char(8),
+ char(0),
+ char(13),
+ char(0),
+ char(54),
+ char(0),
+ char(14),
+ char(0),
+ char(55),
+ char(0),
+ char(30),
+ char(0),
+ char(56),
+ char(0),
+ char(32),
+ char(0),
+ char(57),
+ char(0),
+ char(33),
+ char(0),
+ char(58),
+ char(0),
+ char(31),
+ char(0),
+ char(59),
+ char(0),
+ char(4),
+ char(0),
+ char(60),
+ char(0),
+ char(4),
+ char(0),
+ char(61),
+ char(0),
+ char(35),
+ char(0),
+ char(4),
+ char(0),
+ char(34),
+ 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(36),
+ char(0),
+ char(7),
+ char(0),
+ char(25),
+ char(0),
+ char(38),
+ char(0),
+ char(35),
+ char(0),
+ char(65),
+ char(0),
+ char(23),
+ char(0),
+ char(66),
+ char(0),
+ char(24),
+ char(0),
+ char(67),
+ char(0),
+ char(37),
+ char(0),
+ char(68),
+ char(0),
+ char(7),
+ char(0),
+ char(43),
+ char(0),
+ char(0),
+ char(0),
+ char(69),
+ char(0),
+ char(38),
+ char(0),
+ char(2),
+ char(0),
+ char(36),
+ char(0),
+ char(70),
+ char(0),
+ char(13),
+ char(0),
+ char(39),
+ char(0),
+ char(39),
+ char(0),
+ char(4),
+ char(0),
+ char(17),
+ char(0),
+ char(71),
+ char(0),
+ char(25),
+ char(0),
+ char(72),
+ char(0),
+ char(4),
+ char(0),
+ char(73),
+ char(0),
+ char(7),
+ char(0),
+ char(74),
+ char(0),
+ char(40),
+ char(0),
+ char(4),
+ char(0),
+ char(25),
+ char(0),
+ char(38),
+ char(0),
+ char(39),
+ char(0),
+ char(75),
+ char(0),
+ char(4),
+ char(0),
+ char(76),
+ char(0),
+ char(7),
+ char(0),
+ char(43),
+ char(0),
+ char(41),
+ char(0),
+ char(3),
+ char(0),
+ char(27),
+ char(0),
+ char(47),
+ char(0),
+ char(4),
+ char(0),
+ char(77),
+ char(0),
+ char(0),
+ char(0),
+ char(37),
+ char(0),
+ char(42),
+ char(0),
+ char(3),
+ char(0),
+ char(27),
+ char(0),
+ char(47),
+ char(0),
+ char(4),
+ char(0),
+ char(77),
+ char(0),
+ char(0),
+ char(0),
+ char(37),
+ char(0),
+ char(43),
+ char(0),
+ char(4),
+ char(0),
+ char(4),
+ char(0),
+ char(78),
+ char(0),
+ char(7),
+ char(0),
+ char(79),
+ char(0),
+ char(7),
+ char(0),
+ char(80),
+ char(0),
+ char(7),
+ char(0),
+ char(81),
+ char(0),
+ char(37),
+ char(0),
+ char(14),
+ char(0),
+ char(4),
+ char(0),
+ char(82),
+ char(0),
+ char(4),
+ char(0),
+ char(83),
+ char(0),
+ char(43),
+ char(0),
+ char(84),
+ char(0),
+ char(4),
+ char(0),
+ char(85),
+ char(0),
+ char(7),
+ 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(4),
+ 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(0),
+ char(0),
+ char(37),
+ char(0),
+ char(44),
+ char(0),
+ char(5),
+ char(0),
+ char(25),
+ char(0),
+ char(38),
+ char(0),
+ char(35),
+ 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(95),
+ char(0),
+ char(45),
+ char(0),
+ char(5),
+ char(0),
+ char(27),
+ char(0),
+ char(47),
+ char(0),
+ char(13),
+ char(0),
+ char(96),
+ char(0),
+ char(14),
+ char(0),
+ char(97),
+ char(0),
+ char(4),
+ char(0),
+ char(98),
+ char(0),
+ char(0),
+ char(0),
+ char(99),
+ char(0),
+ char(46),
+ char(0),
+ char(25),
+ char(0),
+ char(9),
+ char(0),
+ char(100),
+ char(0),
+ char(9),
+ char(0),
+ char(101),
+ char(0),
+ char(25),
+ char(0),
+ char(102),
+ char(0),
+ char(0),
+ char(0),
+ char(35),
+ char(0),
+ char(18),
+ char(0),
+ char(103),
+ char(0),
+ char(18),
+ char(0),
+ char(104),
+ char(0),
+ char(14),
+ char(0),
+ char(105),
+ char(0),
+ char(14),
+ char(0),
+ char(106),
+ char(0),
+ char(14),
+ char(0),
+ char(107),
+ char(0),
+ char(8),
+ 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(4),
+ char(0),
+ char(116),
+ char(0),
+ char(4),
+ char(0),
+ char(117),
+ char(0),
+ char(4),
+ 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(0),
+ char(0),
+ char(37),
+ char(0),
+ char(47),
+ char(0),
+ char(25),
+ char(0),
+ char(9),
+ char(0),
+ char(100),
+ char(0),
+ char(9),
+ char(0),
+ char(101),
+ char(0),
+ char(25),
+ char(0),
+ char(102),
+ char(0),
+ char(0),
+ char(0),
+ char(35),
+ char(0),
+ char(17),
+ char(0),
+ char(103),
+ char(0),
+ char(17),
+ char(0),
+ char(104),
+ char(0),
+ char(13),
+ char(0),
+ char(105),
+ char(0),
+ char(13),
+ char(0),
+ char(106),
+ char(0),
+ char(13),
+ char(0),
+ char(107),
+ char(0),
+ char(7),
+ 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(4),
+ char(0),
+ char(116),
+ char(0),
+ char(4),
+ char(0),
+ char(117),
+ char(0),
+ char(4),
+ 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(0),
+ char(0),
+ char(37),
+ char(0),
+ char(48),
+ char(0),
+ char(2),
+ char(0),
+ char(49),
+ char(0),
+ char(123),
+ char(0),
+ char(14),
+ char(0),
+ char(124),
+ char(0),
+ char(50),
+ char(0),
+ char(2),
+ char(0),
+ char(51),
+ char(0),
+ char(123),
+ char(0),
+ char(13),
+ char(0),
+ char(124),
+ char(0),
+ char(52),
+ char(0),
+ char(21),
+ char(0),
+ char(47),
+ char(0),
+ char(125),
+ char(0),
+ char(15),
+ char(0),
+ char(126),
+ char(0),
+ char(13),
+ char(0),
+ char(127),
+ char(0),
+ char(13),
+ char(0),
+ char(-128),
+ char(0),
+ char(13),
+ char(0),
+ char(-127),
+ char(0),
+ char(13),
+ char(0),
+ char(-126),
+ char(0),
+ char(13),
+ char(0),
+ char(124),
+ char(0),
+ char(13),
+ char(0),
+ char(-125),
+ char(0),
+ char(13),
+ char(0),
+ char(-124),
+ char(0),
+ char(13),
+ char(0),
+ char(-123),
+ char(0),
+ char(13),
+ 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(7),
+ char(0),
+ char(-116),
+ char(0),
+ char(7),
+ char(0),
+ char(-115),
+ char(0),
+ char(7),
+ char(0),
+ char(-114),
+ char(0),
+ char(7),
+ char(0),
+ char(-113),
+ char(0),
+ char(4),
+ char(0),
+ char(-112),
+ char(0),
+ char(53),
+ char(0),
+ char(22),
+ char(0),
+ char(46),
+ char(0),
+ char(125),
+ char(0),
+ char(16),
+ char(0),
+ char(126),
+ char(0),
+ char(14),
+ char(0),
+ char(127),
+ char(0),
+ char(14),
+ char(0),
+ char(-128),
+ char(0),
+ char(14),
+ char(0),
+ char(-127),
+ char(0),
+ char(14),
+ char(0),
+ char(-126),
+ char(0),
+ char(14),
+ char(0),
+ char(124),
+ char(0),
+ char(14),
+ char(0),
+ char(-125),
+ char(0),
+ char(14),
+ char(0),
+ char(-124),
+ char(0),
+ char(14),
+ char(0),
+ char(-123),
+ char(0),
+ char(14),
+ 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(8),
+ char(0),
+ char(-116),
+ char(0),
+ char(8),
+ char(0),
+ char(-115),
+ char(0),
+ char(8),
+ char(0),
+ char(-114),
+ char(0),
+ char(8),
+ char(0),
+ char(-113),
+ char(0),
+ char(4),
+ char(0),
+ char(-112),
+ char(0),
+ char(0),
+ char(0),
+ char(37),
+ char(0),
+ char(54),
+ char(0),
+ char(2),
+ char(0),
+ char(4),
+ char(0),
+ char(-111),
+ char(0),
+ char(4),
+ char(0),
+ char(-110),
+ char(0),
+ char(55),
+ char(0),
+ char(13),
+ char(0),
+ char(56),
+ char(0),
+ char(-109),
+ char(0),
+ char(56),
+ char(0),
+ char(-108),
+ char(0),
+ char(0),
+ char(0),
+ char(35),
+ char(0),
+ char(4),
+ char(0),
+ char(-107),
+ char(0),
+ char(4),
+ char(0),
+ char(-106),
+ char(0),
+ char(4),
+ char(0),
+ char(-105),
+ char(0),
+ char(4),
+ char(0),
+ char(-104),
+ char(0),
+ char(7),
+ char(0),
+ char(-103),
+ char(0),
+ char(7),
+ char(0),
+ char(-102),
+ char(0),
+ char(4),
+ char(0),
+ char(-101),
+ char(0),
+ char(4),
+ char(0),
+ char(-100),
+ char(0),
+ char(7),
+ char(0),
+ char(-99),
+ char(0),
+ char(4),
+ char(0),
+ char(-98),
+ char(0),
+ char(57),
+ char(0),
+ char(3),
+ char(0),
+ char(55),
+ char(0),
+ char(-97),
+ char(0),
+ char(13),
+ char(0),
+ char(-96),
+ char(0),
+ char(13),
+ char(0),
+ char(-95),
+ char(0),
+ char(58),
+ char(0),
+ char(3),
+ char(0),
+ char(55),
+ char(0),
+ char(-97),
+ char(0),
+ char(14),
+ char(0),
+ char(-96),
+ char(0),
+ char(14),
+ char(0),
+ char(-95),
+ char(0),
+ char(59),
+ char(0),
+ char(13),
+ char(0),
+ char(55),
+ char(0),
+ char(-97),
+ char(0),
+ char(18),
+ char(0),
+ char(-94),
+ char(0),
+ char(18),
+ char(0),
+ char(-93),
+ char(0),
+ char(4),
+ char(0),
+ char(-92),
+ char(0),
+ char(4),
+ char(0),
+ char(-91),
+ char(0),
+ char(4),
+ char(0),
+ char(-90),
+ char(0),
+ char(7),
+ char(0),
+ char(-89),
+ char(0),
+ char(7),
+ char(0),
+ char(-88),
+ char(0),
+ char(7),
+ char(0),
+ char(-87),
+ char(0),
+ char(7),
+ char(0),
+ char(-86),
+ char(0),
+ char(7),
+ char(0),
+ char(-85),
+ char(0),
+ char(7),
+ char(0),
+ char(-84),
+ char(0),
+ char(7),
+ char(0),
+ char(-83),
+ char(0),
+ char(60),
+ char(0),
+ char(13),
+ char(0),
+ char(55),
+ char(0),
+ char(-97),
+ char(0),
+ char(17),
+ char(0),
+ char(-94),
+ char(0),
+ char(17),
+ char(0),
+ char(-93),
+ char(0),
+ char(4),
+ char(0),
+ char(-92),
+ char(0),
+ char(4),
+ char(0),
+ char(-91),
+ char(0),
+ char(4),
+ char(0),
+ char(-90),
+ char(0),
+ char(7),
+ char(0),
+ char(-89),
+ char(0),
+ char(7),
+ char(0),
+ char(-88),
+ char(0),
+ char(7),
+ char(0),
+ char(-87),
+ char(0),
+ char(7),
+ char(0),
+ char(-86),
+ char(0),
+ char(7),
+ char(0),
+ char(-85),
+ char(0),
+ char(7),
+ char(0),
+ char(-84),
+ char(0),
+ char(7),
+ char(0),
+ char(-83),
+ char(0),
+ char(61),
+ char(0),
+ char(11),
+ char(0),
+ char(55),
+ char(0),
+ char(-97),
+ char(0),
+ char(17),
+ char(0),
+ char(-94),
+ char(0),
+ char(17),
+ char(0),
+ char(-93),
+ char(0),
+ char(7),
+ char(0),
+ char(-82),
+ char(0),
+ char(7),
+ char(0),
+ char(-81),
+ char(0),
+ char(7),
+ char(0),
+ char(-80),
+ char(0),
+ char(7),
+ char(0),
+ char(-85),
+ char(0),
+ char(7),
+ char(0),
+ char(-84),
+ char(0),
+ char(7),
+ char(0),
+ char(-83),
+ char(0),
+ char(7),
+ char(0),
+ char(-79),
+ char(0),
+ char(0),
+ char(0),
+ char(21),
+ char(0),
+ char(62),
+ char(0),
+ char(9),
+ char(0),
+ char(55),
+ char(0),
+ char(-97),
+ char(0),
+ char(17),
+ char(0),
+ char(-94),
+ char(0),
+ char(17),
+ char(0),
+ char(-93),
+ char(0),
+ char(13),
+ char(0),
+ char(-78),
+ char(0),
+ char(13),
+ char(0),
+ char(-77),
+ char(0),
+ char(13),
+ char(0),
+ char(-76),
+ char(0),
+ char(13),
+ char(0),
+ char(-75),
+ char(0),
+ char(4),
+ char(0),
+ char(-74),
+ char(0),
+ char(4),
+ char(0),
+ char(-73),
+ char(0),
+ char(63),
+ char(0),
+ char(5),
+ char(0),
+ char(62),
+ char(0),
+ char(-72),
+ char(0),
+ char(4),
+ char(0),
+ char(-71),
+ char(0),
+ char(7),
+ char(0),
+ char(-70),
+ char(0),
+ char(7),
+ char(0),
+ char(-69),
+ char(0),
+ char(7),
+ char(0),
+ char(-68),
+ char(0),
+ char(64),
+ char(0),
+ char(9),
+ char(0),
+ char(55),
+ char(0),
+ char(-97),
+ char(0),
+ char(17),
+ char(0),
+ char(-94),
+ char(0),
+ char(17),
+ char(0),
+ char(-93),
+ char(0),
+ char(7),
+ char(0),
+ char(-78),
+ char(0),
+ char(7),
+ char(0),
+ char(-77),
+ char(0),
+ char(7),
+ char(0),
+ char(-76),
+ char(0),
+ char(7),
+ char(0),
+ char(-75),
+ char(0),
+ char(4),
+ char(0),
+ char(-74),
+ char(0),
+ char(4),
+ char(0),
+ char(-73),
+ char(0),
+ char(49),
+ char(0),
+ char(22),
+ char(0),
+ char(8),
+ char(0),
+ char(-67),
+ char(0),
+ char(8),
+ char(0),
+ char(-79),
+ char(0),
+ char(8),
+ char(0),
+ char(110),
+ char(0),
+ char(8),
+ char(0),
+ char(-66),
+ char(0),
+ char(8),
+ char(0),
+ char(112),
+ 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(8),
+ char(0),
+ char(-59),
+ 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(-55),
+ char(0),
+ char(4),
+ char(0),
+ char(-54),
+ char(0),
+ char(4),
+ char(0),
+ char(-53),
+ char(0),
+ char(4),
+ char(0),
+ char(-52),
+ char(0),
+ char(4),
+ char(0),
+ char(-51),
+ char(0),
+ char(4),
+ char(0),
+ char(-50),
+ char(0),
+ char(0),
+ char(0),
+ char(37),
+ char(0),
+ char(51),
+ char(0),
+ char(22),
+ char(0),
+ char(7),
+ char(0),
+ char(-67),
+ char(0),
+ char(7),
+ char(0),
+ char(-79),
+ char(0),
+ char(7),
+ char(0),
+ char(110),
+ char(0),
+ char(7),
+ char(0),
+ char(-66),
+ char(0),
+ char(7),
+ char(0),
+ char(112),
+ 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(7),
+ char(0),
+ char(-59),
+ 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(-55),
+ char(0),
+ char(4),
+ char(0),
+ char(-54),
+ char(0),
+ char(4),
+ char(0),
+ char(-53),
+ char(0),
+ char(4),
+ char(0),
+ char(-52),
+ char(0),
+ char(4),
+ char(0),
+ char(-51),
+ char(0),
+ char(4),
+ char(0),
+ char(-50),
+ char(0),
+ char(0),
+ char(0),
+ char(37),
+ char(0),
+ char(65),
+ char(0),
+ char(4),
+ char(0),
+ char(7),
+ char(0),
+ char(-49),
+ char(0),
+ char(7),
+ char(0),
+ char(-48),
+ char(0),
+ char(7),
+ char(0),
+ char(-47),
+ char(0),
+ char(4),
+ char(0),
+ char(78),
+ char(0),
+ char(66),
+ char(0),
+ char(10),
+ char(0),
+ char(65),
+ char(0),
+ char(-46),
+ char(0),
+ char(13),
+ char(0),
+ char(-45),
+ 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(7),
+ char(0),
+ char(-121),
+ char(0),
+ char(7),
+ char(0),
+ char(-40),
+ char(0),
+ char(4),
+ char(0),
+ char(-39),
+ char(0),
+ char(4),
+ char(0),
+ char(53),
+ char(0),
+ char(67),
+ char(0),
+ char(4),
+ char(0),
+ char(65),
+ char(0),
+ char(-46),
+ char(0),
+ char(4),
+ char(0),
+ char(-38),
+ char(0),
+ char(7),
+ char(0),
+ char(-37),
+ char(0),
+ char(4),
+ char(0),
+ char(-36),
+ char(0),
+ char(68),
+ char(0),
+ char(4),
+ char(0),
+ char(13),
+ char(0),
+ char(-41),
+ char(0),
+ char(65),
+ char(0),
+ char(-46),
+ char(0),
+ char(4),
+ char(0),
+ char(-35),
+ char(0),
+ char(7),
+ char(0),
+ char(-34),
+ char(0),
+ char(69),
+ char(0),
+ char(7),
+ char(0),
+ char(13),
+ char(0),
+ char(-33),
+ char(0),
+ char(65),
+ char(0),
+ char(-46),
+ char(0),
+ char(4),
+ char(0),
+ char(-32),
+ char(0),
+ char(7),
+ char(0),
+ char(-31),
+ char(0),
+ char(7),
+ char(0),
+ char(-30),
+ char(0),
+ char(7),
+ char(0),
+ char(-29),
+ char(0),
+ char(4),
+ char(0),
+ char(53),
+ char(0),
+ char(70),
+ char(0),
+ char(6),
+ char(0),
+ char(15),
+ char(0),
+ char(-28),
+ char(0),
+ char(13),
+ char(0),
+ char(-30),
+ char(0),
+ char(13),
+ char(0),
+ char(-27),
+ char(0),
+ char(56),
+ char(0),
+ char(-26),
+ char(0),
+ char(4),
+ char(0),
+ char(-25),
+ char(0),
+ char(7),
+ char(0),
+ char(-29),
+ char(0),
+ char(71),
+ char(0),
+ char(26),
+ char(0),
+ char(4),
+ char(0),
+ char(-24),
+ char(0),
+ char(7),
+ char(0),
+ char(-23),
+ char(0),
+ char(7),
+ char(0),
+ char(-79),
+ char(0),
+ char(7),
+ char(0),
+ char(-22),
+ char(0),
+ char(7),
+ char(0),
+ char(-21),
+ char(0),
+ char(7),
+ char(0),
+ char(-20),
+ char(0),
+ char(7),
+ char(0),
+ char(-19),
+ char(0),
+ char(7),
+ char(0),
+ char(-18),
+ char(0),
+ char(7),
+ char(0),
+ char(-17),
+ char(0),
+ char(7),
+ char(0),
+ char(-16),
+ char(0),
+ char(7),
+ char(0),
+ char(-15),
+ char(0),
+ char(7),
+ char(0),
+ char(-14),
+ char(0),
+ char(7),
+ char(0),
+ char(-13),
+ char(0),
+ char(7),
+ char(0),
+ char(-12),
+ char(0),
+ char(7),
+ char(0),
+ char(-11),
+ char(0),
+ char(7),
+ char(0),
+ char(-10),
+ char(0),
+ char(7),
+ char(0),
+ char(-9),
+ 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(7),
+ char(0),
+ char(-5),
+ char(0),
+ char(4),
+ char(0),
+ char(-4),
+ char(0),
+ char(4),
+ char(0),
+ char(-3),
+ char(0),
+ char(4),
+ char(0),
+ char(-2),
+ char(0),
+ char(4),
+ char(0),
+ char(-1),
+ char(0),
+ char(4),
+ char(0),
+ char(117),
+ char(0),
+ char(72),
+ char(0),
+ char(12),
+ char(0),
+ char(15),
+ char(0),
+ char(0),
+ char(1),
+ char(15),
+ char(0),
+ char(1),
+ char(1),
+ char(15),
+ char(0),
+ char(2),
+ char(1),
+ char(13),
+ char(0),
+ char(3),
+ char(1),
+ char(13),
+ char(0),
+ char(4),
+ char(1),
+ char(7),
+ char(0),
+ char(5),
+ char(1),
+ char(4),
+ char(0),
+ char(6),
+ char(1),
+ char(4),
+ char(0),
+ char(7),
+ char(1),
+ char(4),
+ char(0),
+ char(8),
+ char(1),
+ char(4),
+ char(0),
+ char(9),
+ char(1),
+ char(7),
+ char(0),
+ char(-31),
+ char(0),
+ char(4),
+ char(0),
+ char(53),
+ char(0),
+ char(73),
+ char(0),
+ char(27),
+ char(0),
+ char(17),
+ char(0),
+ char(10),
+ char(1),
+ char(15),
+ char(0),
+ char(11),
+ char(1),
+ char(15),
+ char(0),
+ char(12),
+ char(1),
+ char(13),
+ char(0),
+ char(3),
+ char(1),
+ char(13),
+ char(0),
+ char(13),
+ char(1),
+ char(13),
+ char(0),
+ char(14),
+ char(1),
+ char(13),
+ char(0),
+ char(15),
+ char(1),
+ char(13),
+ char(0),
+ char(16),
+ char(1),
+ char(13),
+ char(0),
+ char(17),
+ char(1),
+ char(4),
+ char(0),
+ char(18),
+ char(1),
+ char(7),
+ char(0),
+ char(19),
+ char(1),
+ char(4),
+ char(0),
+ char(20),
+ char(1),
+ char(4),
+ char(0),
+ char(21),
+ char(1),
+ char(4),
+ char(0),
+ char(22),
+ char(1),
+ char(7),
+ char(0),
+ char(23),
+ char(1),
+ char(7),
+ char(0),
+ char(24),
+ char(1),
+ char(4),
+ char(0),
+ char(25),
+ char(1),
+ char(4),
+ 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(4),
+ char(0),
+ char(33),
+ char(1),
+ char(4),
+ char(0),
+ char(34),
+ char(1),
+ char(4),
+ char(0),
+ char(35),
+ char(1),
+ char(74),
+ char(0),
+ char(12),
+ char(0),
+ char(9),
+ char(0),
+ char(36),
+ char(1),
+ char(9),
+ char(0),
+ char(37),
+ char(1),
+ char(13),
+ char(0),
+ char(38),
+ char(1),
+ char(7),
+ char(0),
+ char(39),
+ char(1),
+ char(7),
+ char(0),
+ char(-63),
+ char(0),
+ char(7),
+ char(0),
+ char(40),
+ char(1),
+ char(4),
+ char(0),
+ char(41),
+ char(1),
+ char(13),
+ char(0),
+ char(42),
+ char(1),
+ char(4),
+ char(0),
+ char(43),
+ char(1),
+ char(4),
+ char(0),
+ char(44),
+ char(1),
+ char(4),
+ char(0),
+ char(45),
+ char(1),
+ char(4),
+ char(0),
+ char(53),
+ char(0),
+ char(75),
+ char(0),
+ char(19),
+ char(0),
+ char(47),
+ char(0),
+ char(125),
+ char(0),
+ char(72),
+ char(0),
+ char(46),
+ char(1),
+ char(65),
+ char(0),
+ char(47),
+ char(1),
+ char(66),
+ char(0),
+ char(48),
+ char(1),
+ char(67),
+ char(0),
+ char(49),
+ char(1),
+ char(68),
+ char(0),
+ char(50),
+ char(1),
+ char(69),
+ char(0),
+ char(51),
+ char(1),
+ char(70),
+ char(0),
+ char(52),
+ char(1),
+ char(73),
+ char(0),
+ char(53),
+ char(1),
+ char(74),
+ char(0),
+ char(54),
+ char(1),
+ char(4),
+ char(0),
+ char(55),
+ char(1),
+ char(4),
+ char(0),
+ char(21),
+ char(1),
+ char(4),
+ char(0),
+ char(56),
+ char(1),
+ char(4),
+ char(0),
+ char(57),
+ char(1),
+ char(4),
+ char(0),
+ char(58),
+ char(1),
+ char(4),
+ char(0),
+ char(59),
+ char(1),
+ char(4),
+ char(0),
+ char(60),
+ char(1),
+ char(4),
+ char(0),
+ char(61),
+ char(1),
+ char(71),
+ char(0),
+ char(62),
+ char(1),
+};
+int b3s_bulletDNAlen64 = sizeof(b3s_bulletDNAstr64);
diff --git a/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Serializer.h b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Serializer.h
index 1c1ce43764..d9e153e238 100644
--- a/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Serializer.h
+++ b/thirdparty/bullet/Bullet3Serialize/Bullet2FileLoader/b3Serializer.h
@@ -16,158 +16,142 @@ subject to the following restrictions:
#ifndef B3_SERIALIZER_H
#define B3_SERIALIZER_H
-#include "Bullet3Common/b3Scalar.h" // has definitions like B3_FORCE_INLINE
+#include "Bullet3Common/b3Scalar.h" // has definitions like B3_FORCE_INLINE
#include "Bullet3Common/b3StackAlloc.h"
#include "Bullet3Common/b3HashMap.h"
-#if !defined( __CELLOS_LV2__) && !defined(__MWERKS__)
+#if !defined(__CELLOS_LV2__) && !defined(__MWERKS__)
#include <memory.h>
#endif
#include <string.h>
-
-
extern char b3s_bulletDNAstr[];
extern int b3s_bulletDNAlen;
extern char b3s_bulletDNAstr64[];
extern int b3s_bulletDNAlen64;
-B3_FORCE_INLINE int b3StrLen(const char* str)
+B3_FORCE_INLINE int b3StrLen(const char* str)
{
- if (!str)
- return(0);
+ if (!str)
+ return (0);
int len = 0;
-
+
while (*str != 0)
{
- str++;
- len++;
- }
+ str++;
+ len++;
+ }
- return len;
+ return len;
}
-
class b3Chunk
{
public:
- int m_chunkCode;
- int m_length;
- void *m_oldPtr;
- int m_dna_nr;
- int m_number;
+ int m_chunkCode;
+ int m_length;
+ void* m_oldPtr;
+ int m_dna_nr;
+ int m_number;
};
-enum b3SerializationFlags
+enum b3SerializationFlags
{
B3_SERIALIZE_NO_BVH = 1,
B3_SERIALIZE_NO_TRIANGLEINFOMAP = 2,
B3_SERIALIZE_NO_DUPLICATE_ASSERT = 4
};
-class b3Serializer
+class b3Serializer
{
-
public:
-
virtual ~b3Serializer() {}
- virtual const unsigned char* getBufferPointer() const = 0;
-
- virtual int getCurrentBufferSize() const = 0;
+ virtual const unsigned char* getBufferPointer() const = 0;
- virtual b3Chunk* allocate(size_t size, int numElements) = 0;
+ virtual int getCurrentBufferSize() const = 0;
- virtual void finalizeChunk(b3Chunk* chunk, const char* structType, int chunkCode,void* oldPtr)= 0;
+ virtual b3Chunk* allocate(size_t size, int numElements) = 0;
- virtual void* findPointer(void* oldPtr) = 0;
+ virtual void finalizeChunk(b3Chunk* chunk, const char* structType, int chunkCode, void* oldPtr) = 0;
- virtual void* getUniquePointer(void*oldPtr) = 0;
+ virtual void* findPointer(void* oldPtr) = 0;
- virtual void startSerialization() = 0;
-
- virtual void finishSerialization() = 0;
+ virtual void* getUniquePointer(void* oldPtr) = 0;
- virtual const char* findNameForPointer(const void* ptr) const = 0;
+ virtual void startSerialization() = 0;
- virtual void registerNameForPointer(const void* ptr, const char* name) = 0;
+ virtual void finishSerialization() = 0;
- virtual void serializeName(const char* ptr) = 0;
+ virtual const char* findNameForPointer(const void* ptr) const = 0;
- virtual int getSerializationFlags() const = 0;
+ virtual void registerNameForPointer(const void* ptr, const char* name) = 0;
- virtual void setSerializationFlags(int flags) = 0;
+ virtual void serializeName(const char* ptr) = 0;
+ virtual int getSerializationFlags() const = 0;
+ virtual void setSerializationFlags(int flags) = 0;
};
-
-
#define B3_HEADER_LENGTH 12
-#if defined(__sgi) || defined (__sparc) || defined (__sparc__) || defined (__PPC__) || defined (__ppc__) || defined (__BIG_ENDIAN__)
-# define B3_MAKE_ID(a,b,c,d) ( (int)(a)<<24 | (int)(b)<<16 | (c)<<8 | (d) )
+#if defined(__sgi) || defined(__sparc) || defined(__sparc__) || defined(__PPC__) || defined(__ppc__) || defined(__BIG_ENDIAN__)
+#define B3_MAKE_ID(a, b, c, d) ((int)(a) << 24 | (int)(b) << 16 | (c) << 8 | (d))
#else
-# define B3_MAKE_ID(a,b,c,d) ( (int)(d)<<24 | (int)(c)<<16 | (b)<<8 | (a) )
+#define B3_MAKE_ID(a, b, c, d) ((int)(d) << 24 | (int)(c) << 16 | (b) << 8 | (a))
#endif
-#define B3_SOFTBODY_CODE B3_MAKE_ID('S','B','D','Y')
-#define B3_COLLISIONOBJECT_CODE B3_MAKE_ID('C','O','B','J')
-#define B3_RIGIDBODY_CODE B3_MAKE_ID('R','B','D','Y')
-#define B3_CONSTRAINT_CODE B3_MAKE_ID('C','O','N','S')
-#define B3_BOXSHAPE_CODE B3_MAKE_ID('B','O','X','S')
-#define B3_QUANTIZED_BVH_CODE B3_MAKE_ID('Q','B','V','H')
-#define B3_TRIANLGE_INFO_MAP B3_MAKE_ID('T','M','A','P')
-#define B3_SHAPE_CODE B3_MAKE_ID('S','H','A','P')
-#define B3_ARRAY_CODE B3_MAKE_ID('A','R','A','Y')
-#define B3_SBMATERIAL_CODE B3_MAKE_ID('S','B','M','T')
-#define B3_SBNODE_CODE B3_MAKE_ID('S','B','N','D')
-#define B3_DYNAMICSWORLD_CODE B3_MAKE_ID('D','W','L','D')
-#define B3_DNA_CODE B3_MAKE_ID('D','N','A','1')
-
-
-struct b3PointerUid
+#define B3_SOFTBODY_CODE B3_MAKE_ID('S', 'B', 'D', 'Y')
+#define B3_COLLISIONOBJECT_CODE B3_MAKE_ID('C', 'O', 'B', 'J')
+#define B3_RIGIDBODY_CODE B3_MAKE_ID('R', 'B', 'D', 'Y')
+#define B3_CONSTRAINT_CODE B3_MAKE_ID('C', 'O', 'N', 'S')
+#define B3_BOXSHAPE_CODE B3_MAKE_ID('B', 'O', 'X', 'S')
+#define B3_QUANTIZED_BVH_CODE B3_MAKE_ID('Q', 'B', 'V', 'H')
+#define B3_TRIANLGE_INFO_MAP B3_MAKE_ID('T', 'M', 'A', 'P')
+#define B3_SHAPE_CODE B3_MAKE_ID('S', 'H', 'A', 'P')
+#define B3_ARRAY_CODE B3_MAKE_ID('A', 'R', 'A', 'Y')
+#define B3_SBMATERIAL_CODE B3_MAKE_ID('S', 'B', 'M', 'T')
+#define B3_SBNODE_CODE B3_MAKE_ID('S', 'B', 'N', 'D')
+#define B3_DYNAMICSWORLD_CODE B3_MAKE_ID('D', 'W', 'L', 'D')
+#define B3_DNA_CODE B3_MAKE_ID('D', 'N', 'A', '1')
+
+struct b3PointerUid
{
- union
- {
- void* m_ptr;
- int m_uniqueIds[2];
+ union {
+ void* m_ptr;
+ int m_uniqueIds[2];
};
};
///The b3DefaultSerializer is the main Bullet serialization class.
///The constructor takes an optional argument for backwards compatibility, it is recommended to leave this empty/zero.
-class b3DefaultSerializer : public b3Serializer
+class b3DefaultSerializer : public b3Serializer
{
+ b3AlignedObjectArray<char*> mTypes;
+ b3AlignedObjectArray<short*> mStructs;
+ b3AlignedObjectArray<short> mTlens;
+ b3HashMap<b3HashInt, int> mStructReverse;
+ b3HashMap<b3HashString, int> mTypeLookup;
+ b3HashMap<b3HashPtr, void*> m_chunkP;
- b3AlignedObjectArray<char*> mTypes;
- b3AlignedObjectArray<short*> mStructs;
- b3AlignedObjectArray<short> mTlens;
- b3HashMap<b3HashInt, int> mStructReverse;
- b3HashMap<b3HashString,int> mTypeLookup;
+ b3HashMap<b3HashPtr, const char*> m_nameMap;
-
- b3HashMap<b3HashPtr,void*> m_chunkP;
-
- b3HashMap<b3HashPtr,const char*> m_nameMap;
+ b3HashMap<b3HashPtr, b3PointerUid> m_uniquePointers;
+ int m_uniqueIdGenerator;
- b3HashMap<b3HashPtr,b3PointerUid> m_uniquePointers;
- int m_uniqueIdGenerator;
+ int m_totalSize;
+ unsigned char* m_buffer;
+ int m_currentSize;
+ void* m_dna;
+ int m_dnaLength;
- int m_totalSize;
- unsigned char* m_buffer;
- int m_currentSize;
- void* m_dna;
- int m_dnaLength;
+ int m_serializationFlags;
- int m_serializationFlags;
+ b3AlignedObjectArray<b3Chunk*> m_chunkPtrs;
-
- b3AlignedObjectArray<b3Chunk*> m_chunkPtrs;
-
protected:
-
- virtual void* findPointer(void* oldPtr)
+ virtual void* findPointer(void* oldPtr)
{
void** ptr = m_chunkP.find(oldPtr);
if (ptr && *ptr)
@@ -175,48 +159,43 @@ protected:
return 0;
}
-
-
-
-
- void writeDNA()
- {
- b3Chunk* dnaChunk = allocate(m_dnaLength,1);
- memcpy(dnaChunk->m_oldPtr,m_dna,m_dnaLength);
- finalizeChunk(dnaChunk,"DNA1",B3_DNA_CODE, m_dna);
- }
+ void writeDNA()
+ {
+ b3Chunk* dnaChunk = allocate(m_dnaLength, 1);
+ memcpy(dnaChunk->m_oldPtr, m_dna, m_dnaLength);
+ finalizeChunk(dnaChunk, "DNA1", B3_DNA_CODE, m_dna);
+ }
- int getReverseType(const char *type) const
- {
+ int getReverseType(const char* type) const
+ {
+ b3HashString key(type);
+ const int* valuePtr = mTypeLookup.find(key);
+ if (valuePtr)
+ return *valuePtr;
- b3HashString key(type);
- const int* valuePtr = mTypeLookup.find(key);
- if (valuePtr)
- return *valuePtr;
-
- return -1;
- }
+ return -1;
+ }
- void initDNA(const char* bdnaOrg,int dnalen)
- {
- ///was already initialized
- if (m_dna)
- return;
+ void initDNA(const char* bdnaOrg, int dnalen)
+ {
+ ///was already initialized
+ if (m_dna)
+ return;
- int littleEndian= 1;
- littleEndian= ((char*)&littleEndian)[0];
-
+ int littleEndian = 1;
+ littleEndian = ((char*)&littleEndian)[0];
- m_dna = b3AlignedAlloc(dnalen,16);
- memcpy(m_dna,bdnaOrg,dnalen);
- m_dnaLength = dnalen;
+ m_dna = b3AlignedAlloc(dnalen, 16);
+ memcpy(m_dna, bdnaOrg, dnalen);
+ m_dnaLength = dnalen;
- int *intPtr=0;
- short *shtPtr=0;
- char *cp = 0;int dataLen =0;
- intPtr = (int*)m_dna;
+ int* intPtr = 0;
+ short* shtPtr = 0;
+ char* cp = 0;
+ int dataLen = 0;
+ intPtr = (int*)m_dna;
- /*
+ /*
SDNA (4 bytes) (magic number)
NAME (4 bytes)
<nr> (4 bytes) amount of names (int)
@@ -224,81 +203,81 @@ protected:
<string>
*/
- if (strncmp((const char*)m_dna, "SDNA", 4)==0)
- {
- // skip ++ NAME
- intPtr++; intPtr++;
- }
-
- // Parse names
- if (!littleEndian)
- *intPtr = b3SwapEndian(*intPtr);
-
- dataLen = *intPtr;
-
+ if (strncmp((const char*)m_dna, "SDNA", 4) == 0)
+ {
+ // skip ++ NAME
+ intPtr++;
intPtr++;
+ }
- cp = (char*)intPtr;
- int i;
- for ( i=0; i<dataLen; i++)
- {
-
- while (*cp)cp++;
- cp++;
- }
- cp = b3AlignPointer(cp,4);
+ // Parse names
+ if (!littleEndian)
+ *intPtr = b3SwapEndian(*intPtr);
- /*
+ dataLen = *intPtr;
+
+ intPtr++;
+
+ cp = (char*)intPtr;
+ int i;
+ for (i = 0; i < dataLen; i++)
+ {
+ while (*cp) cp++;
+ cp++;
+ }
+ cp = b3AlignPointer(cp, 4);
+
+ /*
TYPE (4 bytes)
<nr> amount of types (int)
<string>
<string>
*/
- intPtr = (int*)cp;
- b3Assert(strncmp(cp, "TYPE", 4)==0); intPtr++;
+ intPtr = (int*)cp;
+ b3Assert(strncmp(cp, "TYPE", 4) == 0);
+ intPtr++;
- if (!littleEndian)
- *intPtr = b3SwapEndian(*intPtr);
-
- dataLen = *intPtr;
- intPtr++;
+ if (!littleEndian)
+ *intPtr = b3SwapEndian(*intPtr);
-
- cp = (char*)intPtr;
- for (i=0; i<dataLen; i++)
- {
- mTypes.push_back(cp);
- while (*cp)cp++;
- cp++;
- }
+ dataLen = *intPtr;
+ intPtr++;
- cp = b3AlignPointer(cp,4);
+ cp = (char*)intPtr;
+ for (i = 0; i < dataLen; i++)
+ {
+ mTypes.push_back(cp);
+ while (*cp) cp++;
+ cp++;
+ }
+ cp = b3AlignPointer(cp, 4);
- /*
+ /*
TLEN (4 bytes)
<len> (short) the lengths of types
<len>
*/
- // Parse type lens
- intPtr = (int*)cp;
- b3Assert(strncmp(cp, "TLEN", 4)==0); intPtr++;
+ // Parse type lens
+ intPtr = (int*)cp;
+ b3Assert(strncmp(cp, "TLEN", 4) == 0);
+ intPtr++;
- dataLen = (int)mTypes.size();
+ dataLen = (int)mTypes.size();
- shtPtr = (short*)intPtr;
- for (i=0; i<dataLen; i++, shtPtr++)
- {
- if (!littleEndian)
- shtPtr[0] = b3SwapEndian(shtPtr[0]);
- mTlens.push_back(shtPtr[0]);
- }
+ shtPtr = (short*)intPtr;
+ for (i = 0; i < dataLen; i++, shtPtr++)
+ {
+ if (!littleEndian)
+ shtPtr[0] = b3SwapEndian(shtPtr[0]);
+ mTlens.push_back(shtPtr[0]);
+ }
- if (dataLen & 1) shtPtr++;
+ if (dataLen & 1) shtPtr++;
- /*
+ /*
STRC (4 bytes)
<nr> amount of structs (int)
<typenr>
@@ -309,331 +288,314 @@ protected:
<namenr>
*/
- intPtr = (int*)shtPtr;
- cp = (char*)intPtr;
- b3Assert(strncmp(cp, "STRC", 4)==0); intPtr++;
+ intPtr = (int*)shtPtr;
+ cp = (char*)intPtr;
+ b3Assert(strncmp(cp, "STRC", 4) == 0);
+ intPtr++;
- if (!littleEndian)
- *intPtr = b3SwapEndian(*intPtr);
- dataLen = *intPtr ;
- intPtr++;
+ if (!littleEndian)
+ *intPtr = b3SwapEndian(*intPtr);
+ dataLen = *intPtr;
+ intPtr++;
+ shtPtr = (short*)intPtr;
+ for (i = 0; i < dataLen; i++)
+ {
+ mStructs.push_back(shtPtr);
- shtPtr = (short*)intPtr;
- for (i=0; i<dataLen; i++)
+ if (!littleEndian)
{
- mStructs.push_back (shtPtr);
-
- if (!littleEndian)
- {
- shtPtr[0]= b3SwapEndian(shtPtr[0]);
- shtPtr[1]= b3SwapEndian(shtPtr[1]);
+ shtPtr[0] = b3SwapEndian(shtPtr[0]);
+ shtPtr[1] = b3SwapEndian(shtPtr[1]);
- int len = shtPtr[1];
- shtPtr+= 2;
+ int len = shtPtr[1];
+ shtPtr += 2;
- for (int a=0; a<len; a++, shtPtr+=2)
- {
- shtPtr[0]= b3SwapEndian(shtPtr[0]);
- shtPtr[1]= b3SwapEndian(shtPtr[1]);
- }
-
- } else
+ for (int a = 0; a < len; a++, shtPtr += 2)
{
- shtPtr+= (2*shtPtr[1])+2;
+ shtPtr[0] = b3SwapEndian(shtPtr[0]);
+ shtPtr[1] = b3SwapEndian(shtPtr[1]);
}
}
-
- // build reverse lookups
- for (i=0; i<(int)mStructs.size(); i++)
+ else
{
- short *strc = mStructs.at(i);
- mStructReverse.insert(strc[0], i);
- mTypeLookup.insert(b3HashString(mTypes[strc[0]]),i);
+ shtPtr += (2 * shtPtr[1]) + 2;
}
}
-public:
-
+ // build reverse lookups
+ for (i = 0; i < (int)mStructs.size(); i++)
+ {
+ short* strc = mStructs.at(i);
+ mStructReverse.insert(strc[0], i);
+ mTypeLookup.insert(b3HashString(mTypes[strc[0]]), i);
+ }
+ }
-
+public:
+ b3DefaultSerializer(int totalSize = 0)
+ : m_totalSize(totalSize),
+ m_currentSize(0),
+ m_dna(0),
+ m_dnaLength(0),
+ m_serializationFlags(0)
+ {
+ m_buffer = m_totalSize ? (unsigned char*)b3AlignedAlloc(totalSize, 16) : 0;
- b3DefaultSerializer(int totalSize=0)
- :m_totalSize(totalSize),
- m_currentSize(0),
- m_dna(0),
- m_dnaLength(0),
- m_serializationFlags(0)
- {
- m_buffer = m_totalSize?(unsigned char*)b3AlignedAlloc(totalSize,16):0;
-
- const bool VOID_IS_8 = ((sizeof(void*)==8));
+ const bool VOID_IS_8 = ((sizeof(void*) == 8));
#ifdef B3_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES
- if (VOID_IS_8)
- {
+ if (VOID_IS_8)
+ {
#if _WIN64
- initDNA((const char*)b3s_bulletDNAstr64,b3s_bulletDNAlen64);
+ initDNA((const char*)b3s_bulletDNAstr64, b3s_bulletDNAlen64);
#else
- b3Assert(0);
+ b3Assert(0);
#endif
- } else
- {
+ }
+ else
+ {
#ifndef _WIN64
- initDNA((const char*)b3s_bulletDNAstr,b3s_bulletDNAlen);
+ initDNA((const char*)b3s_bulletDNAstr, b3s_bulletDNAlen);
#else
- b3Assert(0);
+ b3Assert(0);
#endif
- }
-
-#else //B3_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES
- if (VOID_IS_8)
- {
- initDNA((const char*)b3s_bulletDNAstr64,b3s_bulletDNAlen64);
- } else
- {
- initDNA((const char*)b3s_bulletDNAstr,b3s_bulletDNAlen);
- }
-#endif //B3_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES
-
}
- virtual ~b3DefaultSerializer()
+#else //B3_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES
+ if (VOID_IS_8)
{
- if (m_buffer)
- b3AlignedFree(m_buffer);
- if (m_dna)
- b3AlignedFree(m_dna);
+ initDNA((const char*)b3s_bulletDNAstr64, b3s_bulletDNAlen64);
}
-
- void writeHeader(unsigned char* buffer) const
+ else
{
-
+ initDNA((const char*)b3s_bulletDNAstr, b3s_bulletDNAlen);
+ }
+#endif //B3_INTERNAL_UPDATE_SERIALIZATION_STRUCTURES
+ }
-#ifdef B3_USE_DOUBLE_PRECISION
- memcpy(buffer, "BULLETd", 7);
+ virtual ~b3DefaultSerializer()
+ {
+ if (m_buffer)
+ b3AlignedFree(m_buffer);
+ if (m_dna)
+ b3AlignedFree(m_dna);
+ }
+
+ void writeHeader(unsigned char* buffer) const
+ {
+#ifdef B3_USE_DOUBLE_PRECISION
+ memcpy(buffer, "BULLETd", 7);
#else
- memcpy(buffer, "BULLETf", 7);
-#endif //B3_USE_DOUBLE_PRECISION
-
- int littleEndian= 1;
- littleEndian= ((char*)&littleEndian)[0];
+ memcpy(buffer, "BULLETf", 7);
+#endif //B3_USE_DOUBLE_PRECISION
- if (sizeof(void*)==8)
- {
- buffer[7] = '-';
- } else
- {
- buffer[7] = '_';
- }
+ int littleEndian = 1;
+ littleEndian = ((char*)&littleEndian)[0];
- if (littleEndian)
- {
- buffer[8]='v';
- } else
- {
- buffer[8]='V';
- }
+ if (sizeof(void*) == 8)
+ {
+ buffer[7] = '-';
+ }
+ else
+ {
+ buffer[7] = '_';
+ }
+ if (littleEndian)
+ {
+ buffer[8] = 'v';
+ }
+ else
+ {
+ buffer[8] = 'V';
+ }
- buffer[9] = '2';
- buffer[10] = '8';
- buffer[11] = '1';
+ buffer[9] = '2';
+ buffer[10] = '8';
+ buffer[11] = '1';
+ }
+ virtual void startSerialization()
+ {
+ m_uniqueIdGenerator = 1;
+ if (m_totalSize)
+ {
+ unsigned char* buffer = internalAlloc(B3_HEADER_LENGTH);
+ writeHeader(buffer);
}
+ }
+
+ virtual void finishSerialization()
+ {
+ writeDNA();
- virtual void startSerialization()
+ //if we didn't pre-allocate a buffer, we need to create a contiguous buffer now
+ int mysize = 0;
+ if (!m_totalSize)
{
- m_uniqueIdGenerator= 1;
- if (m_totalSize)
+ if (m_buffer)
+ b3AlignedFree(m_buffer);
+
+ m_currentSize += B3_HEADER_LENGTH;
+ m_buffer = (unsigned char*)b3AlignedAlloc(m_currentSize, 16);
+
+ unsigned char* currentPtr = m_buffer;
+ writeHeader(m_buffer);
+ currentPtr += B3_HEADER_LENGTH;
+ mysize += B3_HEADER_LENGTH;
+ for (int i = 0; i < m_chunkPtrs.size(); i++)
{
- unsigned char* buffer = internalAlloc(B3_HEADER_LENGTH);
- writeHeader(buffer);
+ int curLength = sizeof(b3Chunk) + m_chunkPtrs[i]->m_length;
+ memcpy(currentPtr, m_chunkPtrs[i], curLength);
+ b3AlignedFree(m_chunkPtrs[i]);
+ currentPtr += curLength;
+ mysize += curLength;
}
-
}
- virtual void finishSerialization()
+ mTypes.clear();
+ mStructs.clear();
+ mTlens.clear();
+ mStructReverse.clear();
+ mTypeLookup.clear();
+ m_chunkP.clear();
+ m_nameMap.clear();
+ m_uniquePointers.clear();
+ m_chunkPtrs.clear();
+ }
+
+ virtual void* getUniquePointer(void* oldPtr)
+ {
+ if (!oldPtr)
+ return 0;
+
+ b3PointerUid* uptr = (b3PointerUid*)m_uniquePointers.find(oldPtr);
+ if (uptr)
{
- writeDNA();
+ return uptr->m_ptr;
+ }
+ m_uniqueIdGenerator++;
- //if we didn't pre-allocate a buffer, we need to create a contiguous buffer now
- int mysize = 0;
- if (!m_totalSize)
- {
- if (m_buffer)
- b3AlignedFree(m_buffer);
+ b3PointerUid uid;
+ uid.m_uniqueIds[0] = m_uniqueIdGenerator;
+ uid.m_uniqueIds[1] = m_uniqueIdGenerator;
+ m_uniquePointers.insert(oldPtr, uid);
+ return uid.m_ptr;
+ }
- m_currentSize += B3_HEADER_LENGTH;
- m_buffer = (unsigned char*)b3AlignedAlloc(m_currentSize,16);
+ virtual const unsigned char* getBufferPointer() const
+ {
+ return m_buffer;
+ }
- unsigned char* currentPtr = m_buffer;
- writeHeader(m_buffer);
- currentPtr += B3_HEADER_LENGTH;
- mysize+=B3_HEADER_LENGTH;
- for (int i=0;i< m_chunkPtrs.size();i++)
- {
- int curLength = sizeof(b3Chunk)+m_chunkPtrs[i]->m_length;
- memcpy(currentPtr,m_chunkPtrs[i], curLength);
- b3AlignedFree(m_chunkPtrs[i]);
- currentPtr+=curLength;
- mysize+=curLength;
- }
- }
+ virtual int getCurrentBufferSize() const
+ {
+ return m_currentSize;
+ }
- mTypes.clear();
- mStructs.clear();
- mTlens.clear();
- mStructReverse.clear();
- mTypeLookup.clear();
- m_chunkP.clear();
- m_nameMap.clear();
- m_uniquePointers.clear();
- m_chunkPtrs.clear();
+ virtual void finalizeChunk(b3Chunk* chunk, const char* structType, int chunkCode, void* oldPtr)
+ {
+ if (!(m_serializationFlags & B3_SERIALIZE_NO_DUPLICATE_ASSERT))
+ {
+ b3Assert(!findPointer(oldPtr));
}
- virtual void* getUniquePointer(void*oldPtr)
- {
- if (!oldPtr)
- return 0;
+ chunk->m_dna_nr = getReverseType(structType);
- b3PointerUid* uptr = (b3PointerUid*)m_uniquePointers.find(oldPtr);
- if (uptr)
- {
- return uptr->m_ptr;
- }
- m_uniqueIdGenerator++;
-
- b3PointerUid uid;
- uid.m_uniqueIds[0] = m_uniqueIdGenerator;
- uid.m_uniqueIds[1] = m_uniqueIdGenerator;
- m_uniquePointers.insert(oldPtr,uid);
- return uid.m_ptr;
+ chunk->m_chunkCode = chunkCode;
- }
+ void* uniquePtr = getUniquePointer(oldPtr);
- virtual const unsigned char* getBufferPointer() const
- {
- return m_buffer;
- }
+ m_chunkP.insert(oldPtr, uniquePtr); //chunk->m_oldPtr);
+ chunk->m_oldPtr = uniquePtr; //oldPtr;
+ }
- virtual int getCurrentBufferSize() const
- {
- return m_currentSize;
- }
+ virtual unsigned char* internalAlloc(size_t size)
+ {
+ unsigned char* ptr = 0;
- virtual void finalizeChunk(b3Chunk* chunk, const char* structType, int chunkCode,void* oldPtr)
+ if (m_totalSize)
{
- if (!(m_serializationFlags&B3_SERIALIZE_NO_DUPLICATE_ASSERT))
- {
- b3Assert(!findPointer(oldPtr));
- }
-
- chunk->m_dna_nr = getReverseType(structType);
-
- chunk->m_chunkCode = chunkCode;
-
- void* uniquePtr = getUniquePointer(oldPtr);
-
- m_chunkP.insert(oldPtr,uniquePtr);//chunk->m_oldPtr);
- chunk->m_oldPtr = uniquePtr;//oldPtr;
-
+ ptr = m_buffer + m_currentSize;
+ m_currentSize += int(size);
+ b3Assert(m_currentSize < m_totalSize);
}
-
-
- virtual unsigned char* internalAlloc(size_t size)
+ else
{
- unsigned char* ptr = 0;
-
- if (m_totalSize)
- {
- ptr = m_buffer+m_currentSize;
- m_currentSize += int(size);
- b3Assert(m_currentSize<m_totalSize);
- } else
- {
- ptr = (unsigned char*)b3AlignedAlloc(size,16);
- m_currentSize += int(size);
- }
- return ptr;
+ ptr = (unsigned char*)b3AlignedAlloc(size, 16);
+ m_currentSize += int(size);
}
+ return ptr;
+ }
-
+ virtual b3Chunk* allocate(size_t size, int numElements)
+ {
+ unsigned char* ptr = internalAlloc(int(size) * numElements + sizeof(b3Chunk));
- virtual b3Chunk* allocate(size_t size, int numElements)
- {
+ unsigned char* data = ptr + sizeof(b3Chunk);
- unsigned char* ptr = internalAlloc(int(size)*numElements+sizeof(b3Chunk));
+ b3Chunk* chunk = (b3Chunk*)ptr;
+ chunk->m_chunkCode = 0;
+ chunk->m_oldPtr = data;
+ chunk->m_length = int(size) * numElements;
+ chunk->m_number = numElements;
- unsigned char* data = ptr + sizeof(b3Chunk);
-
- b3Chunk* chunk = (b3Chunk*)ptr;
- chunk->m_chunkCode = 0;
- chunk->m_oldPtr = data;
- chunk->m_length = int(size)*numElements;
- chunk->m_number = numElements;
-
- m_chunkPtrs.push_back(chunk);
-
+ m_chunkPtrs.push_back(chunk);
- 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 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 registerNameForPointer(const void* ptr, const char* name)
+ virtual void serializeName(const char* name)
+ {
+ if (name)
{
- m_nameMap.insert(ptr,name);
- }
+ //don't serialize name twice
+ if (findPointer((void*)name))
+ return;
- virtual void serializeName(const char* name)
- {
- if (name)
+ int len = b3StrLen(name);
+ if (len)
{
- //don't serialize name twice
- if (findPointer((void*)name))
- return;
-
- int len = b3StrLen(name);
- if (len)
+ int newLen = len + 1;
+ int padding = ((newLen + 3) & ~3) - newLen;
+ newLen += padding;
+
+ //serialize name string now
+ b3Chunk* chunk = allocate(sizeof(char), newLen);
+ char* destinationName = (char*)chunk->m_oldPtr;
+ for (int i = 0; i < len; i++)
{
-
- int newLen = len+1;
- int padding = ((newLen+3)&~3)-newLen;
- newLen += padding;
-
- //serialize name string now
- b3Chunk* 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",B3_ARRAY_CODE,(void*)name);
+ destinationName[i] = name[i];
}
+ destinationName[len] = 0;
+ finalizeChunk(chunk, "char", B3_ARRAY_CODE, (void*)name);
}
}
+ }
- virtual int getSerializationFlags() const
- {
- return m_serializationFlags;
- }
-
- virtual void setSerializationFlags(int flags)
- {
- m_serializationFlags = flags;
- }
+ virtual int getSerializationFlags() const
+ {
+ return m_serializationFlags;
+ }
+ virtual void setSerializationFlags(int flags)
+ {
+ m_serializationFlags = flags;
+ }
};
-
-#endif //B3_SERIALIZER_H
-
+#endif //B3_SERIALIZER_H