diff --git a/eagleye_core/coordinate/include/eagleye_coordinate/eagleye_coordinate.hpp b/eagleye_core/coordinate/include/eagleye_coordinate/eagleye_coordinate.hpp old mode 100755 new mode 100644 index 87c17e75..1ef31030 --- a/eagleye_core/coordinate/include/eagleye_coordinate/eagleye_coordinate.hpp +++ b/eagleye_core/coordinate/include/eagleye_coordinate/eagleye_coordinate.hpp @@ -33,8 +33,7 @@ #include #include -class ConvertHeight -{ +class ConvertHeight { public: ConvertHeight(); @@ -65,5 +64,4 @@ extern double geoid_per_degree(double, double); extern double geoid_per_minute(double, double, double**); extern double** read_geoid_map(); - #endif /*COORDINATE_H */ diff --git a/eagleye_core/coordinate/src/convertheight.cpp b/eagleye_core/coordinate/src/convertheight.cpp old mode 100755 new mode 100644 index 419bd04d..3beca23d --- a/eagleye_core/coordinate/src/convertheight.cpp +++ b/eagleye_core/coordinate/src/convertheight.cpp @@ -30,57 +30,48 @@ #include "eagleye_coordinate/eagleye_coordinate.hpp" -ConvertHeight::ConvertHeight() -{ -} +ConvertHeight::ConvertHeight() {} -void ConvertHeight::setLLH(double latitude,double longitude,double height) -{ - _latitude = latitude; +void ConvertHeight::setLLH(double latitude, double longitude, double height) { + _latitude = latitude; _longitude = longitude; - _height = height; + _height = height; } -double ConvertHeight::convert2altitude() -{ - try - { +double ConvertHeight::convert2altitude() { + try { GeographicLib::Geoid egm2008("egm2008-1"); - converted_height = egm2008.ConvertHeight(_latitude, _longitude, _height, GeographicLib::Geoid::ELLIPSOIDTOGEOID); - } - catch (const GeographicLib::GeographicErr err) - { - std::cerr << "\033[31;1mError: Failed to convert height from Ellipsoid to Altitude. " << err.what() << std::endl; + converted_height = + egm2008.ConvertHeight(_latitude, _longitude, _height, GeographicLib::Geoid::ELLIPSOIDTOGEOID); + } catch (const GeographicLib::GeographicErr err) { + std::cerr << "\033[31;1mError: Failed to convert height from Ellipsoid to Altitude. " + << err.what() << std::endl; exit(4); } return converted_height; } -double ConvertHeight::convert2ellipsoid() -{ - try - { +double ConvertHeight::convert2ellipsoid() { + try { GeographicLib::Geoid egm2008("egm2008-1"); - converted_height = egm2008.ConvertHeight(_latitude, _longitude, _height, GeographicLib::Geoid::GEOIDTOELLIPSOID); - } - catch (const GeographicLib::GeographicErr err) - { - std::cerr << "\033[31;1mError: Failed to convert height from Ellipsoid to Altitude. " << err.what() << std::endl; + converted_height = + egm2008.ConvertHeight(_latitude, _longitude, _height, GeographicLib::Geoid::GEOIDTOELLIPSOID); + } catch (const GeographicLib::GeographicErr err) { + std::cerr << "\033[31;1mError: Failed to convert height from Ellipsoid to Altitude. " + << err.what() << std::endl; exit(4); } return converted_height; } -double ConvertHeight::getGeoidPerDegree() -{ - geoid = geoid_per_degree(_latitude,_longitude); +double ConvertHeight::getGeoidPerDegree() { + geoid = geoid_per_degree(_latitude, _longitude); return geoid; } -double ConvertHeight::getGeoidPerMinute() -{ - geoid = geoid_per_minute(_latitude,_longitude,geoid_map_data); +double ConvertHeight::getGeoidPerMinute() { + geoid = geoid_per_minute(_latitude, _longitude, geoid_map_data); return geoid; } diff --git a/eagleye_core/coordinate/src/ecef2llh.cpp b/eagleye_core/coordinate/src/ecef2llh.cpp index ab1db7b3..9b8179f2 100644 --- a/eagleye_core/coordinate/src/ecef2llh.cpp +++ b/eagleye_core/coordinate/src/ecef2llh.cpp @@ -26,38 +26,37 @@ #include "eagleye_coordinate/eagleye_coordinate.hpp" #include - -void ecef2llh(double ecef_pos[3], double llh_pos[3]) -{ +void ecef2llh(double ecef_pos[3], double llh_pos[3]) { double semi_major_axis = 6378137.0000; double semi_minor_axis = 6356752.3142; double a1 = sqrt(1 - pow(semi_minor_axis / semi_major_axis, 2.0)); double a2 = sqrt((ecef_pos[0] * ecef_pos[0]) + (ecef_pos[1] * ecef_pos[1])); double a3 = 54 * (semi_minor_axis * semi_minor_axis) * (ecef_pos[2] * ecef_pos[2]); - double a4 = (a2 * a2) + (1 - (a1 * a1)) * (ecef_pos[2] * ecef_pos[2]) - (a1 * a1) * (semi_major_axis * semi_major_axis - semi_minor_axis * semi_minor_axis); + double a4 = (a2 * a2) + (1 - (a1 * a1)) * (ecef_pos[2] * ecef_pos[2]) - + (a1 * a1) * (semi_major_axis * semi_major_axis - semi_minor_axis * semi_minor_axis); double a5 = ((a1 * a1) * (a1 * a1) * a3 * (a2 * a2)) / (a4 * a4 * a4); double a6 = pow((1 + a5 + sqrt(a5 * a5 + 2 * a5)), 1.0 / 3.0); double a7 = a3 / (3 * pow((a6 + 1 / a6 + 1), 2.0) * a4 * a4); double a8 = sqrt(1 + 2 * (a1 * a1) * (a1 * a1) * a7); - double a9 = -(a7 * (a1 * a1) * a2) / (1 + a8) + sqrt((semi_major_axis * semi_major_axis / 2) * (1 + 1 / a8) - (a7 * (1 - (a1 * a1)) * (ecef_pos[2] * ecef_pos[2])) / (a8 * (1 + a8)) - a7 * (a2 * a2) / 2); + double a9 = -(a7 * (a1 * a1) * a2) / (1 + a8) + + sqrt((semi_major_axis * semi_major_axis / 2) * (1 + 1 / a8) - + (a7 * (1 - (a1 * a1)) * (ecef_pos[2] * ecef_pos[2])) / (a8 * (1 + a8)) - + a7 * (a2 * a2) / 2); double a10 = sqrt((pow((a2 - (a1 * a1) * a9), 2.0)) + (ecef_pos[2] * ecef_pos[2])); - double a11 = sqrt((pow((a2 - (a1 * a1) * a9), 2.0)) + (1 - (a1 * a1)) * (ecef_pos[2] * ecef_pos[2])); + double a11 = + sqrt((pow((a2 - (a1 * a1) * a9), 2.0)) + (1 - (a1 * a1)) * (ecef_pos[2] * ecef_pos[2])); double a12 = ((semi_minor_axis * semi_minor_axis) * ecef_pos[2]) / (semi_major_axis * a11); - llh_pos[0] = atan((ecef_pos[2] + (a1 * (semi_major_axis / semi_minor_axis)) * (a1 * (semi_major_axis / semi_minor_axis)) * a12) / a2); + llh_pos[0] = atan((ecef_pos[2] + (a1 * (semi_major_axis / semi_minor_axis)) * + (a1 * (semi_major_axis / semi_minor_axis)) * a12) / + a2); llh_pos[1] = 0; - if (ecef_pos[0] >= 0) - { + if (ecef_pos[0] >= 0) { llh_pos[1] = (atan(ecef_pos[1] / ecef_pos[0])); - } - else - { - if (ecef_pos[0] < 0 && ecef_pos[1] >= 0) - { + } else { + if (ecef_pos[0] < 0 && ecef_pos[1] >= 0) { llh_pos[1] = M_PI + (atan(ecef_pos[1] / ecef_pos[0])); - } - else - { + } else { llh_pos[1] = (atan(ecef_pos[1] / ecef_pos[0])) - M_PI; } } diff --git a/eagleye_core/coordinate/src/enu2llh.cpp b/eagleye_core/coordinate/src/enu2llh.cpp index 9e04bef7..b628d5fb 100644 --- a/eagleye_core/coordinate/src/enu2llh.cpp +++ b/eagleye_core/coordinate/src/enu2llh.cpp @@ -26,13 +26,19 @@ #include "eagleye_coordinate/eagleye_coordinate.hpp" #include -void enu2llh(double enu_pos[3], double ecef_base_pos[3], double llh_pos[3]) -{ +void enu2llh(double enu_pos[3], double ecef_base_pos[3], double llh_pos[3]) { double llh_base_pos[3]; double ecef_pos[3]; - ecef2llh(ecef_base_pos,llh_base_pos); - ecef_pos[0] = ecef_base_pos[0] + ((-(sin(llh_base_pos[1])) * enu_pos[0]) + (-(cos(llh_base_pos[1])) * (sin(llh_base_pos[0])) * enu_pos[1]) + ((cos(llh_base_pos[1])) * (cos(llh_base_pos[0])) * enu_pos[2])); - ecef_pos[1] = ecef_base_pos[1] + (((cos(llh_base_pos[1])) * enu_pos[0]) + (-(sin(llh_base_pos[1])) * (sin(llh_base_pos[0])) * enu_pos[1]) + ((sin(llh_base_pos[1])) * (cos(llh_base_pos[0])) * enu_pos[2])); - ecef_pos[2] = ecef_base_pos[2] + ((0 * enu_pos[0]) + ((cos(llh_base_pos[0])) * enu_pos[1]) + ((sin(llh_base_pos[0])) * enu_pos[2])); - ecef2llh(ecef_pos,llh_pos); + ecef2llh(ecef_base_pos, llh_base_pos); + ecef_pos[0] = + ecef_base_pos[0] + ((-(sin(llh_base_pos[1])) * enu_pos[0]) + + (-(cos(llh_base_pos[1])) * (sin(llh_base_pos[0])) * enu_pos[1]) + + ((cos(llh_base_pos[1])) * (cos(llh_base_pos[0])) * enu_pos[2])); + ecef_pos[1] = + ecef_base_pos[1] + (((cos(llh_base_pos[1])) * enu_pos[0]) + + (-(sin(llh_base_pos[1])) * (sin(llh_base_pos[0])) * enu_pos[1]) + + ((sin(llh_base_pos[1])) * (cos(llh_base_pos[0])) * enu_pos[2])); + ecef_pos[2] = ecef_base_pos[2] + ((0 * enu_pos[0]) + ((cos(llh_base_pos[0])) * enu_pos[1]) + + ((sin(llh_base_pos[0])) * enu_pos[2])); + ecef2llh(ecef_pos, llh_pos); } diff --git a/eagleye_core/coordinate/src/enu2xyz_vel.cpp b/eagleye_core/coordinate/src/enu2xyz_vel.cpp index 3aafd227..27d66a68 100644 --- a/eagleye_core/coordinate/src/enu2xyz_vel.cpp +++ b/eagleye_core/coordinate/src/enu2xyz_vel.cpp @@ -27,14 +27,14 @@ #include #include -void enu2xyz_vel(double enu_vel[3], double ecef_base_pos[3], double xyz_vel[3]) -{ +void enu2xyz_vel(double enu_vel[3], double ecef_base_pos[3], double xyz_vel[3]) { using namespace GeographicLib; Geocentric earth(Constants::WGS84_a(), Constants::WGS84_f()); std::vector rotation(9); double llh[3]; - earth.Reverse(ecef_base_pos[0], ecef_base_pos[1], ecef_base_pos[2], llh[0], llh[1], llh[2], rotation); + earth.Reverse(ecef_base_pos[0], ecef_base_pos[1], ecef_base_pos[2], llh[0], llh[1], llh[2], + rotation); Eigen::Matrix3d R(rotation.data()); Eigen::Vector3d v_enu(enu_vel); diff --git a/eagleye_core/coordinate/src/geoid_per_degree.cpp b/eagleye_core/coordinate/src/geoid_per_degree.cpp old mode 100755 new mode 100644 index 662de11a..4f82b6bd --- a/eagleye_core/coordinate/src/geoid_per_degree.cpp +++ b/eagleye_core/coordinate/src/geoid_per_degree.cpp @@ -25,7252 +25,7627 @@ #include "eagleye_coordinate/eagleye_coordinate.hpp" -static const double th_range[]={0.00,360.00,-90.00,90.00}; +static const double th_range[] = { 0.00, 360.00, -90.00, 90.00 }; -static const float geoid[361][181]={{ --29.534f,-27.880f,-24.897f,-21.973f,-18.154f,-15.493f,-14.636f,-12.657f,-10.648f, -9.301f, - -7.084f, -4.850f, -2.015f, 1.642f, 5.903f, 9.258f, 10.905f, 13.100f, 12.465f, 13.448f, - 14.464f, 10.528f, 10.660f, 10.931f, 12.894f, 13.775f, 13.406f, 13.503f, 13.701f, 14.329f, - 15.132f, 17.828f, 20.762f, 22.627f, 24.433f, 27.098f, 27.238f, 27.168f, 26.391f, 26.405f, - 25.022f, 23.761f, 23.319f, 22.775f, 22.479f, 21.243f, 20.774f, 18.793f, 23.573f, 17.031f, - 17.474f, 16.804f, 16.597f, 16.734f, 16.967f, 17.767f, 18.370f, 20.028f, 20.044f, 20.940f, - 21.409f, 21.247f, 20.852f, 20.564f, 20.098f, 19.847f, 18.959f, 18.146f, 17.336f, 16.808f, - 16.339f, 16.371f, 15.504f, 14.713f, 14.061f, 13.421f, 12.683f, 11.942f, 11.145f, 11.092f, - 11.477f, 11.602f, 13.059f, 15.223f, 16.411f, 16.838f, 17.664f, 18.217f, 18.196f, 17.846f, - 17.162f, 16.992f, 16.895f, 16.616f, 17.673f, 20.453f, 25.912f, 26.234f, 25.914f, 24.272f, - 23.262f, 23.412f, 24.155f, 25.095f, 23.751f, 22.245f, 24.140f, 27.104f, 28.980f, 30.837f, - 31.445f, 30.261f, 30.432f, 29.865f, 29.163f, 27.348f, 25.617f, 25.845f, 28.325f, 30.965f, - 35.389f, 39.102f, 41.083f, 45.020f, 48.293f, 49.580f, 47.460f, 46.235f, 49.156f, 49.913f, - 51.091f, 50.314f, 49.985f, 52.108f, 48.706f, 47.140f, 48.169f, 47.587f, 47.370f, 47.048f, - 45.038f, 45.301f, 46.300f, 46.367f, 45.821f, 46.184f, 46.676f, 47.262f, 47.762f, 46.927f, - 48.227f, 49.454f, 50.172f, 49.071f, 49.781f, 50.804f, 50.320f, 48.953f, 48.675f, 48.539f, - 48.836f, 50.053f, 50.553f, 48.925f, 46.724f, 43.723f, 43.370f, 41.560f, 38.495f, 36.215f, - 33.895f, 32.344f, 30.978f, 28.477f, 27.419f, 25.076f, 22.659f, 20.147f, 17.632f, 15.452f, - 13.606f -},{ --29.534f,-27.872f,-24.818f,-21.917f,-18.173f,-15.402f,-14.776f,-12.758f,-10.529f, -9.116f, - -6.976f, -4.953f, -2.543f, 1.310f, 5.640f, 8.533f, 10.927f, 13.842f, 12.831f, 12.856f, - 14.414f, 10.363f, 11.018f, 11.346f, 13.963f, 15.276f, 14.385f, 13.940f, 14.094f, 14.546f, - 15.512f, 17.859f, 20.624f, 22.106f, 24.013f, 25.824f, 27.236f, 27.060f, 26.242f, 25.680f, - 24.794f, 23.590f, 22.886f, 22.182f, 21.504f, 21.160f, 21.131f, 20.380f, 21.356f, 18.016f, - 17.639f, 17.348f, 16.947f, 17.054f, 17.591f, 18.255f, 19.837f, 19.761f, 20.307f, 21.184f, - 22.997f, 22.284f, 22.086f, 21.615f, 21.142f, 20.632f, 20.144f, 19.147f, 18.136f, 17.373f, - 16.785f, 16.271f, 15.632f, 14.847f, 14.130f, 13.408f, 12.631f, 11.798f, 11.082f, 10.733f, - 10.329f, 10.127f, 12.546f, 12.820f, 15.290f, 15.546f, 16.568f, 18.234f, 18.361f, 17.446f, - 16.997f, 16.742f, 16.948f, 16.553f, 17.426f, 19.542f, 24.700f, 26.558f, 25.574f, 23.570f, - 21.963f, 22.519f, 23.588f, 23.959f, 22.591f, 22.114f, 23.332f, 26.426f, 28.284f, 30.341f, - 31.433f, 31.283f, 31.117f, 31.596f, 30.563f, 28.159f, 25.538f, 25.691f, 27.841f, 28.600f, - 32.533f, 36.899f, 38.970f, 41.651f, 46.206f, 48.666f, 48.107f, 45.242f, 47.015f, 48.806f, - 49.616f, 49.832f, 50.005f, 51.846f, 49.203f, 48.970f, 48.786f, 47.510f, 46.237f, 45.552f, - 45.048f, 44.938f, 45.371f, 45.013f, 44.036f, 44.361f, 45.252f, 46.356f, 47.067f, 46.723f, - 47.361f, 47.685f, 48.633f, 48.060f, 48.638f, 49.669f, 49.180f, 48.457f, 48.343f, 47.985f, - 48.113f, 49.355f, 49.970f, 48.839f, 46.055f, 43.870f, 43.379f, 41.425f, 38.629f, 36.716f, - 34.188f, 32.741f, 31.166f, 28.361f, 27.379f, 25.135f, 22.684f, 20.156f, 17.609f, 15.446f, - 13.606f -},{ --29.534f,-27.865f,-24.741f,-21.844f,-18.189f,-15.386f,-14.844f,-12.759f,-10.339f, -8.906f, - -6.689f, -4.647f, -2.412f, 1.357f, 5.676f, 9.011f, 12.056f, 14.836f, 13.289f, 12.278f, - 14.264f, 10.369f, 11.217f, 11.990f, 14.534f, 16.613f, 15.894f, 14.464f, 14.419f, 14.737f, - 15.552f, 17.503f, 20.371f, 21.913f, 23.853f, 25.577f, 26.714f, 27.074f, 26.194f, 25.353f, - 24.914f, 23.342f, 22.596f, 21.805f, 21.324f, 21.433f, 21.171f, 21.243f, 21.521f, 18.293f, - 18.301f, 18.016f, 17.562f, 17.604f, 18.234f, 19.057f, 19.765f, 22.960f, 22.922f, 21.914f, - 22.944f, 24.099f, 23.245f, 22.425f, 22.109f, 21.822f, 21.210f, 20.463f, 19.201f, 18.137f, - 16.982f, 16.273f, 15.655f, 14.998f, 14.191f, 13.418f, 12.485f, 11.826f, 11.096f, 10.563f, - 10.033f, 9.905f, 10.429f, 10.989f, 11.786f, 13.499f, 15.282f, 17.237f, 17.811f, 17.591f, - 16.757f, 16.210f, 16.158f, 15.951f, 15.816f, 17.326f, 20.984f, 25.957f, 26.021f, 25.190f, - 23.883f, 21.991f, 22.407f, 22.965f, 23.025f, 22.790f, 24.188f, 25.330f, 26.929f, 30.179f, - 31.546f, 31.718f, 31.502f, 32.046f, 31.603f, 28.279f, 26.031f, 24.934f, 26.527f, 27.728f, - 30.134f, 34.456f, 38.013f, 40.139f, 44.998f, 46.912f, 47.887f, 44.456f, 46.072f, 48.802f, - 47.837f, 48.677f, 51.152f, 50.728f, 50.571f, 50.685f, 50.028f, 47.513f, 45.615f, 44.643f, - 44.892f, 44.441f, 44.538f, 44.131f, 42.692f, 43.024f, 44.565f, 45.533f, 45.788f, 46.040f, - 46.826f, 47.043f, 47.789f, 47.210f, 46.716f, 48.096f, 47.357f, 48.183f, 48.079f, 47.224f, - 47.473f, 48.408f, 49.272f, 48.533f, 45.403f, 44.082f, 42.920f, 41.345f, 38.921f, 36.961f, - 34.468f, 32.717f, 31.112f, 28.276f, 27.259f, 25.151f, 22.681f, 20.170f, 17.589f, 15.439f, - 13.606f -},{ --29.534f,-27.858f,-24.665f,-21.753f,-18.195f,-15.452f,-14.835f,-12.659f,-10.107f, -8.614f, - -6.205f, -3.991f, -1.675f, 1.769f, 5.916f, 10.055f, 13.417f, 15.862f, 14.224f, 12.716f, - 14.619f, 10.803f, 11.632f, 12.865f, 14.739f, 17.272f, 16.934f, 15.039f, 14.977f, 15.045f, - 15.547f, 17.438f, 19.743f, 22.194f, 24.179f, 25.803f, 27.246f, 26.646f, 26.346f, 25.153f, - 24.467f, 23.726f, 22.471f, 21.860f, 21.231f, 21.588f, 21.070f, 21.128f, 19.511f, 19.079f, - 18.796f, 18.945f, 18.551f, 17.949f, 18.620f, 19.614f, 20.048f, 20.934f, 21.138f, 24.234f, - 25.249f, 24.186f, 24.752f, 24.201f, 23.339f, 22.729f, 22.350f, 21.693f, 20.519f, 19.023f, - 17.573f, 16.519f, 15.752f, 15.071f, 14.152f, 13.391f, 12.539f, 11.840f, 11.210f, 10.474f, - 9.890f, 9.404f, 9.648f, 9.593f, 10.888f, 11.683f, 13.659f, 15.487f, 16.908f, 17.157f, - 16.942f, 16.466f, 15.867f, 15.076f, 14.806f, 16.182f, 18.527f, 24.702f, 25.834f, 24.851f, - 24.082f, 22.824f, 22.397f, 22.366f, 22.361f, 22.268f, 23.071f, 23.606f, 25.512f, 27.653f, - 30.007f, 31.606f, 32.335f, 33.284f, 32.620f, 30.289f, 27.742f, 25.887f, 27.412f, 28.285f, - 29.022f, 32.069f, 35.868f, 39.096f, 42.115f, 44.076f, 46.268f, 44.511f, 45.338f, 47.426f, - 48.638f, 47.538f, 49.946f, 49.958f, 51.977f, 52.593f, 50.290f, 47.902f, 46.000f, 44.714f, - 44.569f, 44.694f, 44.059f, 42.913f, 41.445f, 42.459f, 43.830f, 44.198f, 44.724f, 44.971f, - 45.367f, 46.038f, 47.165f, 46.513f, 44.688f, 46.149f, 45.965f, 46.815f, 47.523f, 46.682f, - 46.880f, 47.220f, 48.557f, 48.093f, 44.877f, 43.904f, 42.567f, 41.466f, 39.437f, 37.085f, - 34.733f, 32.390f, 30.947f, 28.200f, 27.066f, 25.126f, 22.654f, 20.185f, 17.570f, 15.431f, - 13.606f -},{ --29.534f,-27.853f,-24.591f,-21.645f,-18.181f,-15.590f,-14.763f,-12.487f, -9.869f, -8.231f, - -5.629f, -3.271f, -0.833f, 2.365f, 6.334f, 10.625f, 14.113f, 16.758f, 15.703f, 13.417f, - 14.793f, 11.489f, 12.038f, 13.143f, 14.829f, 17.094f, 17.228f, 16.001f, 15.661f, 15.448f, - 15.894f, 17.342f, 19.200f, 21.642f, 24.267f, 26.250f, 27.707f, 26.574f, 26.004f, 25.197f, - 24.562f, 24.092f, 22.633f, 22.110f, 21.742f, 22.345f, 21.296f, 21.180f, 20.181f, 19.475f, - 19.345f, 19.445f, 19.421f, 19.152f, 19.198f, 19.921f, 20.557f, 21.618f, 22.933f, 22.642f, - 22.478f, 23.033f, 24.020f, 26.116f, 24.905f, 23.921f, 23.911f, 22.839f, 21.555f, 20.361f, - 18.372f, 16.821f, 15.775f, 15.094f, 14.295f, 13.570f, 12.784f, 12.027f, 11.389f, 10.493f, - 9.780f, 9.152f, 9.006f, 9.111f, 9.411f, 10.193f, 11.846f, 14.082f, 16.287f, 16.712f, - 16.617f, 16.232f, 15.606f, 14.330f, 16.558f, 18.130f, 19.340f, 24.026f, 25.344f, 24.359f, - 23.284f, 21.650f, 20.171f, 20.802f, 21.103f, 20.681f, 21.466f, 22.402f, 23.756f, 25.827f, - 28.106f, 30.013f, 31.334f, 33.168f, 33.658f, 33.426f, 30.368f, 27.193f, 28.160f, 27.771f, - 27.461f, 29.163f, 32.442f, 35.690f, 38.945f, 42.108f, 44.068f, 44.542f, 44.446f, 45.654f, - 48.376f, 46.319f, 47.110f, 49.680f, 50.915f, 52.964f, 50.246f, 48.196f, 46.384f, 45.423f, - 45.712f, 45.111f, 43.604f, 42.290f, 41.365f, 41.790f, 43.021f, 43.171f, 43.635f, 44.465f, - 44.783f, 45.372f, 45.910f, 45.481f, 42.712f, 44.601f, 44.929f, 44.814f, 46.503f, 46.011f, - 46.213f, 46.320f, 47.778f, 47.537f, 44.576f, 43.583f, 42.642f, 41.609f, 39.981f, 37.323f, - 34.987f, 31.998f, 30.825f, 28.104f, 26.822f, 25.069f, 22.607f, 20.201f, 17.555f, 15.423f, - 13.606f -},{ --29.534f,-27.848f,-24.521f,-21.520f,-18.139f,-15.771f,-14.651f,-12.289f, -9.660f, -7.801f, - -5.090f, -2.710f, -0.272f, 2.978f, 6.889f, 10.628f, 14.298f, 17.657f, 17.063f, 13.906f, - 14.875f, 12.449f, 12.338f, 13.218f, 15.054f, 16.980f, 17.334f, 16.820f, 16.579f, 16.177f, - 16.516f, 17.416f, 19.038f, 20.935f, 23.615f, 26.014f, 27.547f, 26.127f, 25.595f, 24.695f, - 24.802f, 24.617f, 23.232f, 22.784f, 22.287f, 21.921f, 22.085f, 21.845f, 20.674f, 19.881f, - 19.615f, 19.811f, 20.174f, 20.307f, 20.120f, 20.208f, 20.724f, 21.813f, 22.621f, 22.759f, - 23.471f, 23.658f, 24.010f, 25.421f, 26.892f, 25.756f, 26.050f, 24.699f, 22.533f, 21.972f, - 19.429f, 17.607f, 16.271f, 15.167f, 14.390f, 13.610f, 12.930f, 12.399f, 11.697f, 10.703f, - 9.923f, 9.386f, 8.763f, 8.690f, 8.648f, 9.241f, 10.701f, 12.881f, 15.101f, 16.232f, - 16.254f, 16.002f, 15.280f, 15.548f, 19.235f, 20.892f, 19.610f, 23.241f, 25.027f, 23.769f, - 23.077f, 21.308f, 19.886f, 19.779f, 20.147f, 20.817f, 21.613f, 22.690f, 23.438f, 24.999f, - 26.666f, 29.152f, 31.820f, 34.425f, 35.793f, 35.128f, 32.418f, 29.146f, 27.687f, 26.968f, - 26.463f, 27.412f, 29.614f, 32.045f, 34.360f, 37.402f, 43.444f, 43.043f, 43.578f, 44.710f, - 45.486f, 45.808f, 46.589f, 48.893f, 50.381f, 50.720f, 49.311f, 48.285f, 47.377f, 46.672f, - 46.709f, 45.442f, 43.418f, 42.007f, 40.648f, 40.924f, 42.127f, 42.530f, 42.778f, 44.391f, - 44.966f, 45.949f, 45.463f, 45.186f, 42.236f, 43.936f, 43.966f, 43.324f, 45.195f, 45.051f, - 45.466f, 45.571f, 46.719f, 46.813f, 44.714f, 43.615f, 42.818f, 41.516f, 40.197f, 37.757f, - 35.205f, 31.739f, 30.846f, 27.965f, 26.564f, 24.992f, 22.551f, 20.214f, 17.541f, 15.414f, - 13.606f -},{ --29.534f,-27.844f,-24.454f,-21.380f,-18.059f,-15.950f,-14.517f,-12.098f, -9.510f, -7.400f, - -4.653f, -2.299f, 0.079f, 3.514f, 7.382f, 10.761f, 14.603f, 18.434f, 17.697f, 14.096f, - 14.871f, 13.127f, 12.795f, 13.861f, 15.200f, 17.027f, 17.405f, 17.421f, 17.593f, 17.118f, - 16.896f, 17.665f, 18.825f, 20.440f, 22.505f, 25.907f, 27.382f, 26.365f, 25.635f, 25.146f, - 24.473f, 24.494f, 23.834f, 23.578f, 23.041f, 22.849f, 22.969f, 22.872f, 21.633f, 20.593f, - 20.033f, 20.359f, 20.982f, 21.274f, 20.968f, 20.775f, 21.250f, 22.204f, 22.763f, 22.981f, - 23.564f, 24.142f, 24.538f, 24.686f, 28.629f, 28.327f, 27.073f, 25.850f, 24.353f, 22.283f, - 20.479f, 18.566f, 17.106f, 15.736f, 14.633f, 13.861f, 13.264f, 12.844f, 12.149f, 11.290f, - 10.216f, 9.382f, 8.487f, 7.872f, 7.869f, 8.443f, 9.403f, 11.327f, 13.967f, 15.677f, - 16.804f, 15.432f, 15.102f, 17.403f, 20.866f, 19.099f, 18.549f, 22.326f, 24.098f, 24.508f, - 24.169f, 22.182f, 20.792f, 19.493f, 19.081f, 20.190f, 20.819f, 22.097f, 22.998f, 24.003f, - 25.489f, 27.853f, 31.410f, 36.313f, 36.965f, 35.964f, 33.889f, 30.188f, 28.047f, 27.069f, - 26.381f, 26.753f, 28.247f, 29.939f, 30.694f, 36.085f, 43.335f, 43.467f, 42.678f, 44.277f, - 44.986f, 45.025f, 45.603f, 47.975f, 51.084f, 52.180f, 49.330f, 49.635f, 48.018f, 47.150f, - 48.087f, 45.700f, 43.694f, 41.611f, 39.777f, 40.626f, 41.818f, 41.680f, 42.158f, 44.184f, - 44.452f, 45.957f, 45.242f, 45.196f, 43.352f, 42.783f, 43.393f, 42.573f, 43.844f, 44.224f, - 44.808f, 44.702f, 45.589f, 46.096f, 45.145f, 43.790f, 42.637f, 41.178f, 39.905f, 38.250f, - 35.352f, 31.672f, 31.018f, 27.779f, 26.327f, 24.912f, 22.497f, 20.221f, 17.529f, 15.404f, - 13.606f -},{ --29.534f,-27.841f,-24.390f,-21.229f,-17.938f,-16.080f,-14.370f,-11.927f, -9.433f, -7.085f, - -4.283f, -1.891f, 0.525f, 3.940f, 7.644f, 11.373f, 15.108f, 18.532f, 17.439f, 13.633f, - 14.591f, 13.377f, 13.473f, 14.576f, 15.444f, 16.873f, 17.630f, 17.824f, 18.531f, 17.993f, - 17.492f, 17.772f, 18.992f, 19.870f, 21.651f, 25.845f, 26.556f, 26.396f, 25.794f, 25.476f, - 25.119f, 24.255f, 24.205f, 25.014f, 24.014f, 23.629f, 24.111f, 23.849f, 22.925f, 21.710f, - 20.827f, 21.040f, 21.635f, 22.412f, 21.917f, 21.464f, 21.842f, 22.901f, 23.404f, 23.830f, - 24.222f, 24.359f, 24.644f, 24.768f, 24.342f, 25.604f, 25.050f, 24.853f, 24.518f, 22.725f, - 20.790f, 19.248f, 17.555f, 15.881f, 14.741f, 14.402f, 14.005f, 13.472f, 12.914f, 11.945f, - 10.675f, 9.484f, 8.362f, 7.522f, 7.189f, 7.625f, 8.341f, 9.911f, 12.455f, 14.390f, - 16.331f, 15.955f, 15.972f, 17.036f, 19.374f, 18.789f, 20.377f, 21.712f, 23.681f, 25.011f, - 24.881f, 22.413f, 21.035f, 19.929f, 19.285f, 19.383f, 20.505f, 21.650f, 22.839f, 23.268f, - 24.178f, 26.177f, 29.701f, 33.566f, 36.582f, 36.022f, 33.149f, 29.679f, 27.527f, 27.080f, - 26.407f, 26.617f, 27.890f, 28.934f, 29.298f, 37.322f, 43.291f, 42.751f, 42.135f, 43.562f, - 44.224f, 44.773f, 45.549f, 45.828f, 51.578f, 52.963f, 51.283f, 49.310f, 49.141f, 48.396f, - 48.733f, 46.870f, 44.141f, 41.230f, 39.540f, 40.296f, 41.312f, 40.885f, 41.829f, 45.263f, - 45.307f, 45.594f, 45.572f, 44.547f, 43.190f, 41.290f, 42.911f, 42.322f, 42.287f, 43.497f, - 44.151f, 44.039f, 44.665f, 45.508f, 45.203f, 43.430f, 42.155f, 40.799f, 39.322f, 38.584f, - 35.413f, 31.721f, 31.268f, 27.559f, 26.134f, 24.841f, 22.454f, 20.222f, 17.519f, 15.393f, - 13.606f -},{ --29.534f,-27.838f,-24.330f,-21.070f,-17.776f,-16.117f,-14.200f,-11.756f, -9.418f, -6.869f, - -3.907f, -1.399f, 1.173f, 4.303f, 7.820f, 12.096f, 15.555f, 17.964f, 16.519f, 12.815f, - 14.465f, 13.556f, 13.988f, 14.877f, 15.863f, 16.730f, 17.919f, 18.421f, 19.514f, 18.884f, - 18.241f, 18.232f, 19.498f, 19.446f, 21.528f, 25.300f, 26.074f, 27.017f, 25.964f, 25.697f, - 23.581f, 25.107f, 25.961f, 26.093f, 24.159f, 24.672f, 24.250f, 24.518f, 24.000f, 23.171f, - 22.081f, 22.059f, 22.507f, 23.115f, 22.884f, 22.214f, 22.567f, 23.023f, 24.088f, 24.469f, - 24.913f, 24.668f, 24.779f, 25.331f, 24.728f, 23.617f, 22.854f, 23.789f, 23.733f, 23.227f, - 21.197f, 19.255f, 17.480f, 16.093f, 14.877f, 14.638f, 14.597f, 14.202f, 13.809f, 12.801f, - 11.271f, 9.841f, 8.417f, 7.415f, 7.209f, 7.341f, 7.621f, 7.748f, 11.371f, 14.324f, - 13.662f, 14.059f, 14.148f, 15.824f, 18.235f, 20.255f, 21.128f, 21.908f, 22.085f, 23.126f, - 23.888f, 22.158f, 21.603f, 20.888f, 20.143f, 19.409f, 20.876f, 22.493f, 24.230f, 24.776f, - 24.607f, 26.040f, 29.836f, 33.258f, 34.752f, 35.717f, 33.239f, 29.754f, 28.955f, 27.320f, - 26.524f, 27.292f, 28.717f, 29.407f, 29.607f, 38.465f, 43.029f, 42.697f, 41.625f, 45.074f, - 45.807f, 46.017f, 45.813f, 45.739f, 48.571f, 44.668f, 51.853f, 48.389f, 49.306f, 48.233f, - 48.497f, 48.385f, 44.503f, 41.177f, 39.194f, 40.626f, 40.872f, 40.445f, 40.740f, 43.606f, - 44.699f, 45.209f, 46.153f, 43.589f, 42.118f, 40.714f, 41.948f, 42.618f, 41.043f, 42.604f, - 43.381f, 43.593f, 43.736f, 44.866f, 44.488f, 42.496f, 41.729f, 40.488f, 38.887f, 38.637f, - 35.418f, 31.760f, 31.488f, 27.340f, 25.997f, 24.790f, 22.432f, 20.213f, 17.509f, 15.382f, - 13.606f -},{ --29.534f,-27.837f,-24.272f,-20.906f,-17.576f,-16.031f,-13.991f,-11.555f, -9.432f, -6.722f, - -3.481f, -0.881f, 1.823f, 4.715f, 8.213f, 12.545f, 15.960f, 17.613f, 15.652f, 12.250f, - 14.387f, 13.581f, 14.070f, 15.049f, 16.031f, 16.940f, 18.184f, 19.253f, 19.977f, 19.755f, - 19.078f, 18.582f, 19.134f, 19.592f, 21.792f, 24.516f, 25.942f, 26.723f, 26.439f, 25.567f, - 24.658f, 23.199f, 24.912f, 24.808f, 25.002f, 25.723f, 25.305f, 24.953f, 24.926f, 24.637f, - 23.628f, 22.890f, 22.708f, 23.378f, 23.609f, 23.157f, 23.476f, 23.664f, 24.301f, 25.152f, - 25.625f, 25.319f, 25.191f, 25.186f, 24.776f, 23.915f, 22.905f, 21.959f, 22.510f, 22.956f, - 22.698f, 19.039f, 17.490f, 16.650f, 15.258f, 14.987f, 14.960f, 15.060f, 14.745f, 13.517f, - 11.930f, 10.287f, 8.526f, 7.441f, 7.301f, 7.121f, 4.554f, 7.567f, 10.487f, 12.113f, - 12.343f, 13.445f, 13.439f, 15.328f, 20.480f, 21.327f, 21.736f, 21.333f, 20.872f, 22.753f, - 23.894f, 22.135f, 21.395f, 20.969f, 20.431f, 20.108f, 21.291f, 23.873f, 27.037f, 28.501f, - 26.649f, 27.712f, 29.742f, 31.482f, 34.439f, 34.874f, 31.979f, 29.649f, 28.740f, 27.964f, - 26.717f, 28.181f, 30.031f, 30.806f, 31.529f, 37.213f, 42.088f, 43.112f, 42.876f, 46.097f, - 48.223f, 48.052f, 50.617f, 47.476f, 45.549f, 41.503f, 47.574f, 47.703f, 48.101f, 48.414f, - 48.236f, 47.941f, 44.853f, 40.853f, 39.449f, 40.381f, 40.477f, 39.426f, 39.184f, 41.661f, - 41.977f, 43.124f, 44.902f, 42.426f, 41.314f, 40.404f, 40.709f, 42.485f, 40.898f, 41.457f, - 42.597f, 42.993f, 42.837f, 44.091f, 43.422f, 41.650f, 41.334f, 40.126f, 38.836f, 38.412f, - 35.411f, 31.706f, 31.596f, 27.162f, 25.906f, 24.764f, 22.435f, 20.195f, 17.500f, 15.371f, - 13.606f -},{ --29.534f,-27.836f,-24.217f,-20.744f,-17.349f,-15.811f,-13.726f,-11.301f, -9.422f, -6.597f, - -3.031f, -0.437f, 2.245f, 5.216f, 8.829f, 12.838f, 16.435f, 17.910f, 15.459f, 11.825f, - 14.062f, 14.179f, 14.615f, 15.578f, 16.567f, 17.494f, 18.453f, 19.944f, 20.579f, 20.770f, - 19.934f, 19.012f, 19.207f, 20.006f, 22.100f, 24.237f, 26.653f, 27.013f, 27.080f, 26.766f, - 25.100f, 25.440f, 26.439f, 25.798f, 25.368f, 26.060f, 26.398f, 26.397f, 25.761f, 25.697f, - 24.771f, 23.851f, 23.321f, 23.731f, 24.177f, 24.075f, 24.035f, 24.290f, 24.967f, 25.765f, - 25.904f, 25.760f, 25.543f, 25.288f, 24.599f, 23.915f, 22.918f, 22.423f, 22.387f, 22.403f, - 23.065f, 19.606f, 18.388f, 17.649f, 16.277f, 16.191f, 15.558f, 15.867f, 15.806f, 14.483f, - 12.982f, 10.964f, 9.002f, 8.046f, 7.983f, 5.531f, 5.286f, 7.046f, 6.526f, 9.303f, - 9.000f, 11.431f, 12.674f, 14.569f, 16.015f, 20.145f, 22.538f, 20.179f, 20.136f, 20.630f, - 21.569f, 21.015f, 20.507f, 19.677f, 20.178f, 19.774f, 20.885f, 22.985f, 25.402f, 26.481f, - 26.504f, 27.053f, 27.404f, 29.286f, 32.656f, 32.577f, 31.143f, 29.343f, 28.412f, 28.505f, - 27.749f, 29.019f, 32.060f, 32.830f, 33.460f, 36.839f, 40.039f, 42.474f, 43.499f, 43.900f, - 45.726f, 47.020f, 47.223f, 48.546f, 46.414f, 39.049f, 48.953f, 48.668f, 46.634f, 48.345f, - 48.029f, 47.138f, 44.395f, 41.003f, 39.506f, 40.019f, 39.343f, 38.490f, 38.129f, 40.336f, - 40.457f, 40.397f, 41.717f, 41.486f, 40.655f, 40.107f, 39.595f, 41.118f, 41.162f, 40.202f, - 41.764f, 42.337f, 42.334f, 43.339f, 42.586f, 41.173f, 40.599f, 39.589f, 38.901f, 37.953f, - 35.405f, 31.561f, 31.559f, 27.055f, 25.843f, 24.760f, 22.466f, 20.166f, 17.492f, 15.359f, - 13.606f -},{ --29.534f,-27.836f,-24.164f,-20.587f,-17.108f,-15.473f,-13.402f,-11.000f, -9.337f, -6.449f, - -2.621f, -0.081f, 2.463f, 5.670f, 9.330f, 13.263f, 16.866f, 18.298f, 15.582f, 11.374f, - 14.352f, 15.483f, 15.627f, 15.922f, 17.481f, 17.975f, 18.802f, 20.620f, 21.822f, 21.876f, - 20.926f, 19.731f, 19.492f, 20.188f, 22.091f, 24.209f, 27.029f, 28.154f, 28.613f, 26.876f, - 26.493f, 26.264f, 26.011f, 25.938f, 26.021f, 26.320f, 27.135f, 27.514f, 26.345f, 26.679f, - 25.629f, 24.868f, 24.113f, 24.425f, 24.887f, 24.950f, 24.639f, 24.863f, 25.372f, 25.643f, - 25.942f, 26.109f, 25.610f, 25.321f, 24.629f, 23.804f, 23.389f, 22.994f, 23.014f, 23.088f, - 23.512f, 22.296f, 20.461f, 21.282f, 19.670f, 17.937f, 17.237f, 16.669f, 16.623f, 15.230f, - 14.320f, 11.443f, 10.281f, 10.681f, 8.987f, 5.623f, 5.295f, 4.294f, 5.356f, 8.141f, - 9.154f, 10.954f, 11.653f, 13.161f, 15.020f, 18.332f, 20.108f, 20.026f, 19.385f, 19.103f, - 19.019f, 19.259f, 18.843f, 18.694f, 18.923f, 18.788f, 18.831f, 21.135f, 22.949f, 24.652f, - 25.056f, 25.013f, 27.014f, 28.892f, 30.358f, 30.499f, 29.130f, 28.704f, 28.291f, 28.480f, - 29.004f, 31.021f, 32.540f, 33.083f, 33.722f, 36.441f, 39.322f, 42.077f, 43.169f, 43.186f, - 44.352f, 46.020f, 47.718f, 48.848f, 44.595f, 40.733f, 49.278f, 49.611f, 45.956f, 46.995f, - 47.189f, 46.464f, 44.308f, 40.701f, 39.290f, 38.628f, 37.660f, 37.940f, 36.775f, 37.784f, - 38.595f, 38.163f, 38.809f, 39.656f, 38.901f, 39.329f, 38.713f, 39.795f, 41.126f, 39.381f, - 40.837f, 41.728f, 41.908f, 42.652f, 41.955f, 40.662f, 39.610f, 38.958f, 38.492f, 37.293f, - 35.353f, 31.390f, 31.388f, 27.031f, 25.781f, 24.769f, 22.520f, 20.128f, 17.484f, 15.346f, - 13.606f -},{ --29.534f,-27.837f,-24.112f,-20.440f,-16.868f,-15.055f,-13.039f,-10.694f, -9.143f, -6.249f, - -2.288f, 0.269f, 2.693f, 5.911f, 9.509f, 13.805f, 17.195f, 18.505f, 15.444f, 11.145f, - 15.693f, 15.637f, 15.369f, 15.624f, 18.247f, 18.334f, 19.261f, 21.250f, 22.895f, 22.852f, - 21.985f, 20.671f, 19.988f, 20.470f, 22.434f, 24.446f, 27.722f, 28.618f, 29.866f, 27.253f, - 26.336f, 26.855f, 26.229f, 26.005f, 26.679f, 26.778f, 27.348f, 27.784f, 27.409f, 26.967f, - 26.421f, 25.929f, 25.140f, 24.919f, 25.311f, 25.451f, 25.458f, 25.615f, 26.531f, 26.602f, - 26.532f, 26.835f, 26.651f, 26.420f, 25.843f, 25.429f, 25.204f, 24.397f, 24.348f, 24.512f, - 25.081f, 24.463f, 22.243f, 21.840f, 22.758f, 20.970f, 18.972f, 18.321f, 17.239f, 16.663f, - 15.327f, 12.786f, 11.138f, 12.795f, 10.655f, 4.414f, 2.715f, 3.764f, 7.300f, 8.246f, - 7.836f, 9.161f, 9.427f, 11.343f, 13.952f, 15.763f, 17.547f, 19.005f, 18.225f, 18.578f, - 18.132f, 18.077f, 17.383f, 17.326f, 16.934f, 16.708f, 17.222f, 19.977f, 21.997f, 22.852f, - 22.833f, 23.772f, 25.195f, 26.539f, 28.185f, 28.569f, 28.266f, 28.163f, 28.573f, 29.077f, - 30.290f, 31.888f, 32.318f, 33.102f, 33.438f, 36.376f, 39.411f, 41.920f, 43.318f, 43.082f, - 44.248f, 46.068f, 48.386f, 48.411f, 42.135f, 42.678f, 47.630f, 49.545f, 45.186f, 46.210f, - 47.303f, 45.847f, 43.060f, 40.459f, 38.592f, 37.468f, 36.597f, 37.256f, 35.538f, 35.119f, - 35.762f, 35.574f, 37.018f, 37.262f, 36.107f, 37.513f, 37.149f, 38.287f, 40.858f, 39.063f, - 40.008f, 40.944f, 41.245f, 42.070f, 41.202f, 39.991f, 39.113f, 38.369f, 37.226f, 36.511f, - 35.172f, 31.258f, 31.105f, 27.072f, 25.702f, 24.780f, 22.591f, 20.083f, 17.475f, 15.333f, - 13.606f -},{ --29.534f,-27.838f,-24.060f,-20.307f,-16.644f,-14.608f,-12.674f,-10.450f, -8.839f, -5.974f, - -2.015f, 0.676f, 3.083f, 6.003f, 9.612f, 14.250f, 17.561f, 18.917f, 15.476f, 11.353f, - 16.826f, 14.923f, 14.371f, 15.671f, 18.777f, 18.848f, 19.712f, 21.692f, 23.315f, 23.646f, - 22.824f, 21.535f, 20.554f, 21.343f, 23.019f, 25.351f, 27.599f, 29.875f, 30.967f, 29.473f, - 26.998f, 27.670f, 27.119f, 26.712f, 27.343f, 27.378f, 27.524f, 27.986f, 28.238f, 27.088f, - 26.635f, 26.356f, 25.526f, 25.477f, 25.543f, 25.774f, 25.870f, 26.575f, 27.104f, 27.692f, - 27.990f, 28.499f, 28.495f, 28.214f, 27.868f, 27.657f, 27.927f, 27.802f, 26.778f, 25.866f, - 24.724f, 24.367f, 24.619f, 23.382f, 23.857f, 22.393f, 21.322f, 21.982f, 19.394f, 18.226f, - 17.424f, 15.666f, 13.215f, 11.099f, 7.473f, 4.232f, 3.476f, 4.735f, 6.980f, 6.231f, - 6.074f, 6.566f, 7.388f, 8.256f, 12.298f, 14.098f, 14.671f, 16.806f, 16.363f, 16.488f, - 16.953f, 16.352f, 15.956f, 15.424f, 15.232f, 15.278f, 16.707f, 18.870f, 20.076f, 20.576f, - 21.220f, 22.225f, 23.673f, 25.094f, 26.433f, 26.872f, 26.785f, 26.897f, 28.994f, 30.354f, - 31.289f, 31.472f, 33.021f, 32.466f, 32.984f, 35.842f, 37.965f, 40.279f, 43.700f, 42.787f, - 44.180f, 47.154f, 49.299f, 47.124f, 40.782f, 43.195f, 44.762f, 48.629f, 44.741f, 46.606f, - 46.695f, 44.492f, 41.808f, 39.402f, 37.155f, 35.793f, 36.318f, 36.169f, 34.405f, 32.938f, - 32.610f, 33.576f, 35.295f, 34.957f, 33.958f, 35.803f, 34.847f, 35.543f, 39.433f, 38.724f, - 39.415f, 40.161f, 40.962f, 41.673f, 40.302f, 39.725f, 39.522f, 37.711f, 35.339f, 35.782f, - 34.795f, 31.184f, 30.720f, 27.135f, 25.595f, 24.780f, 22.671f, 20.031f, 17.465f, 15.319f, - 13.606f -},{ --29.534f,-27.841f,-24.007f,-20.191f,-16.452f,-14.189f,-12.359f,-10.329f, -8.454f, -5.599f, - -1.736f, 1.126f, 3.576f, 6.245f, 10.028f, 14.562f, 17.953f, 19.368f, 16.025f, 12.169f, - 16.837f, 15.423f, 14.549f, 16.062f, 18.410f, 19.497f, 20.165f, 21.927f, 23.536f, 23.848f, - 23.249f, 22.330f, 21.632f, 22.066f, 24.115f, 25.906f, 27.974f, 31.002f, 31.430f, 30.884f, - 28.346f, 28.432f, 28.075f, 27.025f, 27.479f, 28.200f, 28.047f, 27.649f, 28.346f, 28.887f, - 26.091f, 28.275f, 26.014f, 26.193f, 25.584f, 25.569f, 25.914f, 26.714f, 27.673f, 28.559f, - 29.431f, 29.943f, 30.080f, 31.186f, 30.606f, 30.384f, 29.205f, 29.349f, 27.831f, 25.377f, - 25.459f, 25.660f, 25.577f, 23.555f, 23.975f, 24.410f, 21.556f, 20.704f, 20.884f, 18.497f, - 17.230f, 15.554f, 13.150f, 9.760f, 5.594f, 3.099f, 2.861f, 4.359f, 4.401f, 3.820f, - 3.243f, 3.743f, 4.407f, 5.894f, 9.800f, 12.047f, 12.415f, 15.100f, 14.310f, 13.704f, - 14.584f, 14.839f, 14.408f, 13.911f, 13.536f, 14.532f, 15.413f, 17.109f, 18.005f, 18.568f, - 20.012f, 21.100f, 23.179f, 25.388f, 25.774f, 25.632f, 26.257f, 27.149f, 29.421f, 30.674f, - 31.063f, 30.891f, 31.772f, 31.357f, 32.230f, 34.107f, 36.779f, 38.398f, 42.250f, 43.028f, - 45.255f, 47.572f, 48.498f, 43.147f, 42.194f, 44.444f, 46.672f, 48.473f, 45.159f, 46.836f, - 45.781f, 43.576f, 40.854f, 37.483f, 35.772f, 34.340f, 34.841f, 33.912f, 32.508f, 30.912f, - 30.724f, 32.050f, 33.962f, 33.061f, 32.366f, 34.155f, 33.515f, 32.860f, 35.936f, 38.192f, - 38.900f, 39.591f, 41.002f, 41.056f, 39.422f, 40.130f, 40.056f, 36.661f, 33.539f, 35.295f, - 34.207f, 31.135f, 30.225f, 27.167f, 25.460f, 24.759f, 22.748f, 19.975f, 17.454f, 15.305f, - 13.606f -},{ --29.534f,-27.844f,-23.953f,-20.093f,-16.300f,-13.850f,-12.137f,-10.356f, -8.031f, -5.111f, - -1.385f, 1.561f, 4.046f, 6.853f, 10.786f, 14.904f, 18.190f, 19.313f, 16.249f, 13.385f, - 16.750f, 16.351f, 15.101f, 15.846f, 17.792f, 19.747f, 20.495f, 22.175f, 23.826f, 24.022f, - 23.640f, 22.987f, 22.811f, 23.395f, 24.992f, 26.929f, 28.757f, 31.543f, 32.671f, 31.200f, - 29.694f, 28.919f, 28.625f, 28.179f, 28.500f, 28.456f, 28.109f, 28.417f, 28.588f, 28.686f, - 27.889f, 26.652f, 27.357f, 26.233f, 25.897f, 25.500f, 25.875f, 27.174f, 28.637f, 29.020f, - 31.714f, 31.624f, 31.542f, 31.601f, 32.328f, 31.618f, 30.666f, 30.016f, 29.281f, 26.991f, - 25.870f, 24.663f, 23.765f, 22.282f, 21.637f, 22.453f, 22.419f, 22.303f, 21.653f, 19.860f, - 17.204f, 14.950f, 12.048f, 8.885f, 5.173f, 2.021f, 1.060f, 2.143f, 1.539f, 0.082f, - -1.156f, -0.314f, 0.287f, 3.495f, 7.870f, 9.020f, 10.118f, 11.949f, 11.841f, 12.036f, - 12.599f, 12.759f, 13.004f, 13.225f, 13.683f, 13.685f, 14.118f, 14.891f, 16.294f, 17.911f, - 20.147f, 22.067f, 24.184f, 26.087f, 25.918f, 25.256f, 26.239f, 28.042f, 29.953f, 31.016f, - 29.809f, 29.556f, 30.270f, 29.779f, 31.795f, 33.889f, 37.763f, 41.384f, 42.496f, 43.180f, - 46.366f, 48.151f, 46.227f, 43.084f, 43.049f, 45.537f, 46.977f, 47.768f, 46.447f, 46.411f, - 44.796f, 42.758f, 39.731f, 35.775f, 34.742f, 33.733f, 33.053f, 32.420f, 31.152f, 29.320f, - 29.331f, 30.658f, 32.361f, 31.863f, 31.097f, 32.129f, 32.982f, 31.089f, 31.938f, 37.221f, - 38.095f, 38.734f, 40.058f, 39.600f, 38.571f, 40.408f, 39.403f, 35.074f, 32.406f, 35.063f, - 33.444f, 31.056f, 29.615f, 27.120f, 25.308f, 24.710f, 22.812f, 19.917f, 17.443f, 15.290f, - 13.606f -},{ --29.534f,-27.848f,-23.897f,-20.014f,-16.194f,-13.622f,-12.031f,-10.502f, -7.612f, -4.520f, - -0.938f, 1.967f, 4.487f, 7.709f, 11.554f, 15.321f, 18.315f, 19.190f, 16.006f, 14.331f, - 17.584f, 16.305f, 14.808f, 15.479f, 17.562f, 19.140f, 20.857f, 22.181f, 23.701f, 24.182f, - 24.340f, 23.620f, 23.253f, 24.642f, 26.214f, 27.794f, 29.464f, 32.374f, 33.128f, 31.974f, - 30.727f, 29.606f, 29.510f, 29.019f, 29.112f, 29.412f, 29.369f, 29.004f, 28.734f, 28.779f, - 27.769f, 27.558f, 26.582f, 26.182f, 26.637f, 26.321f, 26.712f, 27.770f, 30.501f, 31.119f, - 30.758f, 31.246f, 32.488f, 33.354f, 33.627f, 33.277f, 32.511f, 31.783f, 29.821f, 28.852f, - 26.204f, 22.785f, 21.058f, 20.689f, 20.169f, 20.305f, 20.720f, 21.632f, 21.372f, 19.485f, - 16.402f, 12.684f, 10.016f, 7.395f, 3.669f, 0.299f, -2.046f, -2.433f, -3.124f, -4.257f, - -3.744f, -2.665f, -0.843f, 1.096f, 4.763f, 5.939f, 7.923f, 8.266f, 8.611f, 8.914f, - 10.228f, 11.350f, 12.026f, 12.213f, 12.541f, 12.896f, 13.041f, 13.607f, 15.226f, 17.702f, - 21.541f, 24.675f, 26.439f, 26.578f, 26.850f, 27.011f, 28.153f, 29.622f, 30.246f, 30.410f, - 29.526f, 28.521f, 28.693f, 28.794f, 30.528f, 33.128f, 31.055f, 30.834f, 37.560f, 44.374f, - 44.921f, 47.591f, 47.390f, 43.123f, 44.225f, 46.475f, 46.046f, 46.594f, 46.296f, 46.198f, - 44.127f, 42.374f, 38.764f, 34.287f, 33.721f, 32.698f, 31.814f, 30.485f, 29.280f, 27.720f, - 27.167f, 28.865f, 30.000f, 30.666f, 30.251f, 30.617f, 32.282f, 30.483f, 30.005f, 35.460f, - 36.785f, 37.200f, 37.936f, 37.440f, 37.622f, 39.508f, 37.215f, 33.223f, 31.917f, 34.829f, - 32.579f, 30.905f, 28.914f, 26.970f, 25.151f, 24.633f, 22.857f, 19.861f, 17.430f, 15.275f, - 13.606f -},{ --29.534f,-27.853f,-23.839f,-19.951f,-16.130f,-13.515f,-12.028f,-10.682f, -7.216f, -3.868f, - -0.429f, 2.372f, 4.998f, 8.513f, 12.087f, 15.651f, 18.541f, 19.667f, 16.516f, 14.980f, - 18.122f, 15.894f, 14.248f, 15.595f, 17.049f, 18.554f, 20.751f, 22.353f, 23.742f, 24.410f, - 24.901f, 24.066f, 24.065f, 25.418f, 27.152f, 28.563f, 30.759f, 33.035f, 33.759f, 32.430f, - 31.463f, 30.281f, 29.918f, 30.242f, 30.449f, 30.033f, 29.686f, 29.388f, 29.255f, 29.023f, - 28.775f, 27.226f, 27.046f, 26.921f, 27.222f, 28.041f, 28.629f, 31.070f, 30.447f, 30.889f, - 31.533f, 32.311f, 31.879f, 33.245f, 33.624f, 32.760f, 32.075f, 32.401f, 30.653f, 28.287f, - 26.372f, 22.204f, 19.766f, 19.091f, 18.425f, 18.037f, 17.959f, 18.473f, 19.251f, 15.996f, - 13.119f, 9.789f, 7.110f, 4.675f, 1.484f, -2.369f, -5.508f, -7.503f, -7.303f, -7.689f, - -8.208f, -6.206f, -3.087f, -0.471f, 2.909f, 4.301f, 5.029f, 5.880f, 5.693f, 5.505f, - 7.937f, 9.695f, 10.634f, 10.716f, 11.205f, 11.686f, 12.295f, 12.873f, 14.868f, 17.831f, - 22.845f, 28.835f, 28.132f, 27.267f, 27.281f, 28.047f, 29.539f, 30.860f, 30.212f, 29.249f, - 28.869f, 28.431f, 27.188f, 27.655f, 29.100f, 29.407f, 28.620f, 28.950f, 31.298f, 37.090f, - 37.884f, 45.798f, 43.624f, 43.273f, 46.350f, 46.312f, 45.433f, 45.356f, 44.001f, 43.452f, - 44.025f, 40.745f, 37.069f, 33.332f, 31.646f, 31.384f, 29.869f, 28.159f, 27.248f, 25.776f, - 25.200f, 25.821f, 26.646f, 28.517f, 29.642f, 29.746f, 31.455f, 30.975f, 30.383f, 33.375f, - 35.149f, 35.266f, 35.894f, 35.212f, 36.423f, 37.348f, 34.492f, 31.588f, 31.558f, 34.236f, - 31.701f, 30.669f, 28.187f, 26.717f, 25.000f, 24.533f, 22.876f, 19.808f, 17.415f, 15.260f, - 13.606f -},{ --29.534f,-27.858f,-23.777f,-19.902f,-16.102f,-13.510f,-12.081f,-10.776f, -6.838f, -3.218f, - 0.070f, 2.788f, 5.617f, 9.120f, 12.469f, 15.796f, 18.842f, 20.134f, 17.530f, 15.651f, - 17.031f, 15.404f, 14.150f, 15.814f, 16.946f, 18.897f, 19.954f, 22.355f, 23.888f, 24.697f, - 25.255f, 24.696f, 25.277f, 26.437f, 27.946f, 29.783f, 31.495f, 33.914f, 34.648f, 32.637f, - 32.004f, 31.073f, 30.646f, 30.844f, 31.388f, 31.142f, 30.473f, 29.846f, 29.394f, 29.425f, - 29.365f, 27.526f, 27.338f, 27.263f, 28.404f, 29.606f, 31.187f, 31.180f, 32.208f, 32.143f, - 33.847f, 32.489f, 32.068f, 30.946f, 29.678f, 29.299f, 29.226f, 29.793f, 28.795f, 28.643f, - 25.099f, 21.969f, 19.177f, 17.835f, 17.055f, 16.414f, 15.941f, 15.278f, 14.629f, 12.643f, - 10.560f, 7.984f, 5.528f, 3.110f, -0.850f, -5.602f, -8.504f,-10.739f,-11.015f,-13.061f, --11.410f,-10.020f, -6.514f, -3.274f, -2.799f, -1.130f, 1.203f, 2.623f, 3.976f, 3.572f, - 5.661f, 7.552f, 8.302f, 9.655f, 10.096f, 10.491f, 10.872f, 10.981f, 13.151f, 16.926f, - 24.088f, 29.591f, 28.108f, 26.639f, 26.077f, 26.481f, 28.154f, 29.715f, 28.533f, 28.517f, - 28.358f, 28.132f, 26.711f, 27.158f, 27.733f, 28.211f, 28.503f, 28.259f, 29.470f, 29.527f, - 39.073f, 39.786f, 39.050f, 42.868f, 46.822f, 46.065f, 44.912f, 45.104f, 43.596f, 43.159f, - 42.673f, 39.458f, 34.870f, 30.947f, 30.065f, 29.471f, 27.717f, 26.519f, 25.097f, 23.652f, - 22.891f, 23.220f, 23.422f, 25.233f, 28.403f, 28.766f, 30.359f, 31.118f, 31.451f, 31.776f, - 33.355f, 33.175f, 34.316f, 33.169f, 34.863f, 34.797f, 32.418f, 30.438f, 30.915f, 33.125f, - 30.905f, 30.357f, 27.525f, 26.390f, 24.860f, 24.421f, 22.868f, 19.761f, 17.399f, 15.244f, - 13.606f -},{ --29.534f,-27.865f,-23.712f,-19.863f,-16.097f,-13.569f,-12.118f,-10.668f, -6.446f, -2.626f, - 0.501f, 3.170f, 6.213f, 9.608f, 12.862f, 15.888f, 19.000f, 19.948f, 17.478f, 15.943f, - 15.701f, 14.913f, 14.702f, 15.883f, 17.413f, 19.059f, 19.790f, 21.941f, 24.240f, 24.911f, - 25.338f, 25.250f, 25.704f, 27.054f, 29.127f, 30.680f, 32.334f, 34.538f, 35.061f, 33.691f, - 32.538f, 32.258f, 31.927f, 31.372f, 32.005f, 32.032f, 31.441f, 30.297f, 29.658f, 29.365f, - 29.264f, 28.848f, 26.861f, 27.143f, 29.276f, 31.041f, 31.621f, 32.835f, 33.015f, 32.916f, - 34.822f, 32.115f, 31.913f, 31.906f, 28.358f, 27.643f, 27.118f, 26.503f, 26.912f, 27.515f, - 23.455f, 20.878f, 18.494f, 16.505f, 15.583f, 14.740f, 13.918f, 13.072f, 11.975f, 10.365f, - 8.374f, 6.413f, 4.035f, 0.550f, -3.867f, -8.310f,-10.484f,-13.130f,-14.556f,-14.998f, --15.079f,-12.667f,-10.069f, -6.918f, -6.313f, -5.191f, -2.758f, -0.369f, 1.935f, 0.709f, - 3.734f, 5.846f, 7.459f, 8.111f, 9.383f, 10.028f, 10.453f, 10.034f, 12.230f, 15.752f, - 20.298f, 24.499f, 25.715f, 24.964f, 25.083f, 24.702f, 26.094f, 26.641f, 26.261f, 26.146f, - 26.941f, 26.870f, 26.957f, 27.023f, 26.096f, 26.413f, 26.515f, 27.235f, 25.130f, 29.055f, - 34.161f, 35.293f, 36.853f, 44.137f, 46.377f, 45.082f, 44.650f, 43.717f, 43.887f, 43.032f, - 41.969f, 38.109f, 33.099f, 29.817f, 29.154f, 27.570f, 25.903f, 24.540f, 22.483f, 21.339f, - 20.260f, 21.474f, 22.235f, 22.149f, 26.188f, 27.286f, 29.188f, 30.557f, 31.729f, 31.040f, - 31.377f, 31.067f, 32.646f, 31.432f, 33.025f, 32.658f, 31.231f, 29.706f, 30.074f, 31.689f, - 30.265f, 29.980f, 27.005f, 26.028f, 24.728f, 24.308f, 22.834f, 19.720f, 17.382f, 15.227f, - 13.606f -},{ --29.534f,-27.871f,-23.644f,-19.827f,-16.099f,-13.641f,-12.061f,-10.280f, -5.999f, -2.112f, - 0.850f, 3.473f, 6.624f, 10.064f, 13.230f, 16.069f, 18.901f, 19.793f, 17.079f, 16.160f, - 15.908f, 15.082f, 15.187f, 15.909f, 17.533f, 18.759f, 19.981f, 21.813f, 24.062f, 25.170f, - 25.447f, 25.722f, 26.287f, 27.769f, 29.436f, 31.591f, 33.330f, 35.298f, 35.502f, 34.060f, - 33.226f, 32.657f, 32.301f, 31.924f, 32.384f, 32.462f, 31.888f, 30.988f, 30.094f, 29.555f, - 29.418f, 29.232f, 27.802f, 28.893f, 30.850f, 31.538f, 32.708f, 33.553f, 34.923f, 35.139f, - 33.695f, 31.271f, 30.187f, 29.771f, 29.044f, 27.603f, 26.235f, 24.964f, 24.947f, 24.054f, - 21.570f, 19.539f, 17.272f, 15.293f, 14.025f, 13.039f, 11.955f, 11.000f, 9.822f, 8.378f, - 6.333f, 3.927f, 1.269f, -2.368f, -6.429f, -9.731f,-12.792f,-15.168f,-17.660f,-18.760f, --17.336f,-15.490f,-14.135f,-10.131f, -8.206f, -7.529f, -5.639f, -1.890f, -0.587f, -0.867f, - 1.623f, 4.240f, 5.436f, 6.766f, 8.198f, 10.061f, 11.305f, 11.301f, 11.837f, 12.916f, - 14.434f, 16.606f, 19.863f, 21.806f, 22.411f, 22.090f, 23.884f, 25.218f, 24.534f, 24.702f, - 25.833f, 26.931f, 29.200f, 27.904f, 25.473f, 23.041f, 20.530f, 23.124f, 23.303f, 26.731f, - 34.187f, 37.167f, 40.781f, 45.690f, 45.268f, 44.007f, 43.669f, 42.814f, 42.729f, 42.772f, - 40.009f, 36.729f, 32.511f, 30.627f, 29.276f, 26.520f, 24.840f, 22.961f, 20.671f, 19.467f, - 18.615f, 20.337f, 21.007f, 19.592f, 23.769f, 25.206f, 27.593f, 29.653f, 30.598f, 30.833f, - 29.535f, 29.403f, 30.863f, 30.238f, 31.164f, 31.083f, 30.399f, 29.188f, 29.428f, 30.305f, - 29.804f, 29.555f, 26.652f, 25.672f, 24.597f, 24.207f, 22.776f, 19.687f, 17.363f, 15.210f, - 13.606f -},{ --29.534f,-27.879f,-23.572f,-19.791f,-16.091f,-13.672f,-11.843f, -9.598f, -5.456f, -1.653f, - 1.156f, 3.726f, 6.861f, 10.455f, 13.457f, 16.282f, 18.566f, 19.899f, 18.064f, 17.738f, - 17.223f, 15.681f, 15.046f, 15.764f, 17.542f, 18.890f, 20.284f, 22.179f, 23.652f, 25.288f, - 25.608f, 26.138f, 26.749f, 28.134f, 30.119f, 32.039f, 34.373f, 35.903f, 35.839f, 34.203f, - 33.751f, 33.061f, 32.456f, 32.271f, 32.748f, 32.759f, 32.140f, 31.589f, 30.590f, 29.908f, - 29.355f, 29.302f, 29.370f, 28.631f, 31.136f, 30.816f, 32.512f, 34.167f, 37.119f, 34.901f, - 33.039f, 30.714f, 30.876f, 29.373f, 28.406f, 27.020f, 25.663f, 23.086f, 21.256f, 20.509f, - 18.527f, 16.614f, 14.188f, 12.736f, 11.980f, 10.873f, 9.127f, 7.864f, 7.181f, 6.150f, - 4.160f, 1.580f, -1.450f, -4.765f, -7.626f,-11.797f,-14.364f,-14.966f,-19.525f,-20.620f, --19.364f,-17.872f,-15.890f,-12.894f, -9.424f, -7.728f, -6.113f, -2.680f, -0.794f, -1.452f, - 0.094f, 3.354f, 5.211f, 6.400f, 8.326f, 9.268f, 10.654f, 10.986f, 10.981f, 11.465f, - 12.137f, 14.245f, 16.810f, 18.545f, 19.548f, 20.291f, 21.972f, 23.260f, 22.952f, 23.202f, - 24.049f, 26.192f, 30.234f, 27.817f, 22.736f, 17.233f, 14.199f, 21.025f, 25.067f, 28.379f, - 36.194f, 42.536f, 44.511f, 44.537f, 43.787f, 42.885f, 42.745f, 42.160f, 41.302f, 40.773f, - 37.209f, 35.823f, 32.028f, 30.485f, 28.659f, 25.978f, 24.584f, 22.128f, 20.053f, 17.998f, - 18.779f, 19.478f, 19.376f, 18.308f, 21.194f, 22.680f, 25.398f, 28.263f, 29.132f, 30.210f, - 28.462f, 28.437f, 29.084f, 29.237f, 29.419f, 29.850f, 29.511f, 28.740f, 29.137f, 29.215f, - 29.462f, 29.105f, 26.424f, 25.349f, 24.459f, 24.124f, 22.700f, 19.661f, 17.343f, 15.193f, - 13.606f -},{ --29.534f,-27.887f,-23.497f,-19.746f,-16.059f,-13.619f,-11.433f, -8.672f, -4.791f, -1.201f, - 1.482f, 4.023f, 7.133f, 10.776f, 13.642f, 16.407f, 18.170f, 19.376f, 19.419f, 20.288f, - 18.798f, 16.026f, 15.033f, 15.451f, 17.588f, 19.025f, 20.643f, 22.436f, 24.066f, 24.973f, - 26.099f, 26.436f, 27.634f, 28.887f, 30.637f, 32.720f, 35.168f, 36.476f, 36.415f, 34.654f, - 34.147f, 33.315f, 32.419f, 32.575f, 33.032f, 33.238f, 32.651f, 32.583f, 31.397f, 30.222f, - 29.838f, 29.838f, 29.088f, 29.374f, 30.313f, 29.993f, 31.749f, 32.252f, 35.859f, 35.396f, - 32.954f, 32.178f, 31.122f, 28.433f, 26.670f, 25.547f, 24.040f, 21.820f, 19.297f, 17.666f, - 16.393f, 13.942f, 12.351f, 11.133f, 10.099f, 8.759f, 6.025f, 5.136f, 5.085f, 4.070f, - 1.916f, -0.484f, -3.429f, -6.780f, -9.741f,-13.555f,-15.184f,-18.309f,-20.584f,-21.231f, --19.952f,-19.080f,-17.552f,-13.627f, -9.624f, -7.288f, -5.858f, -3.475f, -2.324f, -1.289f, - -0.453f, 2.838f, 4.950f, 7.183f, 9.591f, 10.720f, 11.496f, 11.883f, 10.974f, 11.221f, - 11.896f, 13.392f, 14.688f, 16.084f, 17.340f, 18.853f, 21.164f, 21.819f, 21.544f, 22.143f, - 22.826f, 24.197f, 27.446f, 28.706f, 18.511f, 11.647f, 11.431f, 25.490f, 29.204f, 33.303f, - 39.531f, 43.995f, 44.481f, 43.828f, 43.254f, 43.254f, 42.269f, 41.583f, 39.929f, 38.812f, - 35.166f, 34.133f, 30.466f, 29.055f, 28.280f, 25.430f, 24.335f, 21.951f, 19.912f, 18.877f, - 19.383f, 18.744f, 18.814f, 17.958f, 19.017f, 20.332f, 23.352f, 26.427f, 28.319f, 28.939f, - 27.925f, 27.731f, 27.179f, 27.709f, 27.760f, 28.802f, 28.607f, 28.277f, 28.892f, 28.367f, - 29.120f, 28.674f, 26.224f, 25.069f, 24.310f, 24.061f, 22.610f, 19.644f, 17.322f, 15.176f, - 13.606f -},{ --29.534f,-27.896f,-23.420f,-19.690f,-15.991f,-13.458f,-10.839f, -7.599f, -3.996f, -0.705f, - 1.870f, 4.430f, 7.622f, 11.158f, 14.023f, 16.472f, 18.030f, 18.860f, 19.954f, 21.793f, - 20.328f, 16.184f, 15.322f, 15.335f, 17.419f, 19.270f, 20.779f, 22.449f, 24.428f, 25.177f, - 26.289f, 27.034f, 27.200f, 29.060f, 31.176f, 33.130f, 35.879f, 37.078f, 36.469f, 35.329f, - 34.591f, 33.523f, 32.871f, 32.534f, 33.073f, 33.449f, 32.928f, 33.265f, 32.494f, 31.204f, - 30.241f, 29.688f, 28.643f, 28.865f, 27.502f, 29.129f, 30.525f, 31.107f, 34.524f, 34.612f, - 32.924f, 32.113f, 32.884f, 28.662f, 26.678f, 24.401f, 22.929f, 20.929f, 19.257f, 17.636f, - 15.281f, 12.899f, 11.103f, 9.988f, 8.338f, 6.925f, 5.428f, 3.513f, 2.751f, 1.311f, - -1.592f, -3.139f, -5.479f, -9.444f,-12.677f,-15.005f,-16.878f,-19.555f,-20.833f,-21.359f, --20.823f,-18.733f,-15.890f,-12.937f,-10.578f, -8.736f, -7.062f, -4.985f, -3.136f, -0.711f, - -0.009f, 2.220f, 4.540f, 7.214f, 9.143f, 10.621f, 12.146f, 12.948f, 11.688f, 11.655f, - 12.433f, 12.730f, 13.343f, 14.242f, 15.334f, 17.256f, 19.169f, 20.116f, 21.178f, 22.784f, - 22.319f, 22.740f, 24.742f, 22.974f, 13.159f, 9.244f, 18.650f, 31.255f, 35.799f, 38.473f, - 40.470f, 42.733f, 44.752f, 43.810f, 40.494f, 41.763f, 42.273f, 41.317f, 38.639f, 36.707f, - 32.941f, 31.339f, 29.090f, 28.342f, 27.518f, 24.964f, 23.441f, 21.279f, 19.576f, 20.005f, - 19.513f, 18.869f, 18.589f, 17.872f, 17.835f, 18.747f, 21.557f, 24.381f, 27.109f, 27.757f, - 26.790f, 26.739f, 25.502f, 25.747f, 26.211f, 27.858f, 27.800f, 27.722f, 28.234f, 27.549f, - 28.662f, 28.307f, 25.942f, 24.823f, 24.147f, 24.014f, 22.512f, 19.633f, 17.299f, 15.158f, - 13.606f -},{ --29.534f,-27.906f,-23.341f,-19.616f,-15.881f,-13.186f,-10.107f, -6.489f, -3.093f, -0.140f, - 2.314f, 4.903f, 8.251f, 11.696f, 14.601f, 16.579f, 18.223f, 20.262f, 21.149f, 22.179f, - 21.156f, 16.557f, 15.614f, 15.593f, 17.354f, 19.420f, 21.126f, 22.571f, 24.233f, 26.056f, - 26.273f, 27.719f, 28.079f, 29.140f, 31.160f, 33.292f, 36.201f, 37.750f, 36.552f, 35.593f, - 35.068f, 34.374f, 33.208f, 32.565f, 32.848f, 33.327f, 33.375f, 33.432f, 34.127f, 32.608f, - 31.928f, 30.254f, 29.254f, 28.273f, 27.679f, 28.566f, 29.572f, 28.943f, 34.105f, 34.527f, - 32.527f, 30.796f, 31.022f, 28.443f, 25.617f, 24.309f, 22.194f, 19.435f, 17.732f, 16.229f, - 13.829f, 12.140f, 9.965f, 8.741f, 7.307f, 5.328f, 3.908f, 2.150f, 1.026f, -1.122f, - -4.390f, -5.625f, -6.965f,-10.433f,-14.581f,-15.899f,-17.661f,-18.931f,-20.582f,-21.303f, --20.906f,-18.880f,-15.666f,-12.359f,-10.656f, -8.876f, -7.504f, -6.115f, -4.669f, -1.813f, - -0.226f, 1.500f, 3.913f, 7.607f, 8.626f, 9.609f, 11.097f, 12.399f, 12.617f, 12.698f, - 13.283f, 13.216f, 13.357f, 13.686f, 14.486f, 15.552f, 16.913f, 18.028f, 19.708f, 21.249f, - 22.278f, 21.741f, 21.601f, 14.446f, 9.019f, 16.803f, 27.551f, 35.626f, 39.142f, 39.545f, - 40.758f, 42.225f, 43.346f, 42.330f, 39.958f, 38.406f, 41.328f, 39.103f, 38.413f, 33.114f, - 31.034f, 29.524f, 28.027f, 27.903f, 26.798f, 24.514f, 22.697f, 20.439f, 19.280f, 19.810f, - 19.017f, 19.044f, 18.311f, 18.137f, 17.417f, 17.957f, 20.311f, 22.889f, 25.180f, 26.797f, - 25.140f, 25.454f, 24.385f, 24.068f, 24.864f, 26.858f, 26.994f, 27.029f, 27.053f, 26.650f, - 28.038f, 28.028f, 25.508f, 24.594f, 23.975f, 23.969f, 22.407f, 19.628f, 17.275f, 15.140f, - 13.606f -},{ --29.534f,-27.916f,-23.261f,-19.522f,-15.728f,-12.823f, -9.311f, -5.442f, -2.135f, 0.489f, - 2.769f, 5.311f, 8.736f, 12.255f, 15.064f, 16.735f, 18.428f, 22.714f, 23.043f, 22.456f, - 21.201f, 17.175f, 16.108f, 16.043f, 17.720f, 19.423f, 21.232f, 22.521f, 24.222f, 26.095f, - 27.169f, 27.659f, 28.309f, 29.469f, 30.751f, 33.734f, 35.811f, 37.852f, 37.140f, 35.937f, - 35.116f, 34.166f, 33.218f, 33.014f, 32.906f, 33.301f, 33.634f, 33.717f, 35.063f, 34.837f, - 34.104f, 32.397f, 30.717f, 29.730f, 27.782f, 26.017f, 27.859f, 27.626f, 33.892f, 33.867f, - 32.289f, 31.145f, 29.856f, 28.733f, 26.239f, 23.783f, 20.625f, 18.333f, 16.316f, 14.651f, - 12.508f, 11.189f, 9.140f, 7.106f, 6.684f, 4.455f, 2.717f, 1.177f, -0.303f, -0.690f, - -5.234f, -7.556f, -7.818f,-11.187f,-14.893f,-16.502f,-18.094f,-19.400f,-20.283f,-19.783f, --19.028f,-17.853f,-14.730f,-11.730f,-10.546f, -9.884f, -9.317f, -8.577f, -5.203f, -3.052f, - -1.302f, 0.161f, 2.957f, 5.523f, 7.084f, 8.815f, 9.907f, 11.193f, 12.194f, 12.449f, - 13.656f, 14.913f, 14.794f, 14.487f, 14.763f, 14.870f, 15.404f, 15.743f, 17.209f, 19.677f, - 21.221f, 21.498f, 18.231f, 9.542f, 9.130f, 19.955f, 30.870f, 37.645f, 38.886f, 39.648f, - 40.268f, 40.967f, 41.084f, 41.153f, 38.556f, 36.509f, 39.493f, 39.401f, 35.937f, 32.465f, - 31.923f, 29.809f, 27.672f, 26.803f, 26.051f, 24.171f, 21.834f, 20.706f, 19.368f, 18.921f, - 17.680f, 18.266f, 18.450f, 18.282f, 17.783f, 17.704f, 19.611f, 21.791f, 23.652f, 25.774f, - 24.482f, 24.184f, 23.380f, 22.890f, 23.754f, 25.647f, 26.068f, 26.207f, 25.669f, 25.749f, - 27.288f, 27.814f, 24.916f, 24.357f, 23.797f, 23.911f, 22.298f, 19.628f, 17.250f, 15.121f, - 13.606f -},{ --29.534f,-27.926f,-23.182f,-19.407f,-15.535f,-12.400f, -8.532f, -4.521f, -1.195f, 1.147f, - 3.181f, 5.554f, 8.879f, 12.601f, 15.201f, 16.882f, 18.527f, 23.159f, 22.930f, 22.022f, - 21.169f, 17.725f, 16.344f, 16.580f, 18.034f, 19.782f, 21.399f, 22.840f, 24.507f, 26.201f, - 27.746f, 28.079f, 28.904f, 29.556f, 31.618f, 32.843f, 36.510f, 37.953f, 36.986f, 37.058f, - 35.666f, 34.917f, 33.871f, 33.244f, 33.018f, 33.258f, 33.626f, 34.059f, 35.263f, 35.528f, - 35.035f, 33.502f, 31.445f, 30.270f, 27.968f, 27.418f, 27.202f, 28.673f, 33.448f, 34.987f, - 34.296f, 31.267f, 30.281f, 28.819f, 26.242f, 22.380f, 18.644f, 17.472f, 15.550f, 14.109f, - 11.134f, 9.582f, 7.587f, 7.024f, 4.659f, 2.882f, 1.103f, 0.167f, -1.707f, -2.549f, - -4.977f, -9.657f,-12.094f,-13.183f,-15.095f,-16.427f,-17.525f,-18.054f,-18.837f,-18.437f, --17.391f,-16.123f,-13.774f,-11.500f,-10.624f,-11.120f,-11.345f, -8.675f, -6.108f, -3.976f, - -2.305f, -0.924f, 1.255f, 3.654f, 5.393f, 7.304f, 8.755f, 10.156f, 11.361f, 12.362f, - 13.576f, 15.147f, 15.399f, 14.914f, 14.414f, 13.629f, 13.805f, 14.514f, 15.352f, 17.707f, - 20.579f, 20.898f, 13.858f, 7.480f, 5.654f, 16.864f, 29.289f, 37.017f, 38.538f, 39.785f, - 39.887f, 40.649f, 39.782f, 39.567f, 36.894f, 34.317f, 37.340f, 36.162f, 33.961f, 33.543f, - 32.377f, 29.968f, 27.334f, 25.826f, 25.177f, 23.413f, 21.484f, 21.033f, 19.674f, 18.067f, - 16.416f, 16.530f, 18.547f, 18.202f, 17.929f, 17.735f, 18.865f, 20.431f, 22.584f, 24.876f, - 24.746f, 23.079f, 22.188f, 21.948f, 22.882f, 24.296f, 25.076f, 25.285f, 24.466f, 24.979f, - 26.508f, 27.589f, 24.233f, 24.092f, 23.615f, 23.822f, 22.183f, 19.629f, 17.224f, 15.103f, - 13.606f -},{ --29.534f,-27.938f,-23.103f,-19.272f,-15.312f,-11.958f, -7.839f, -3.755f, -0.360f, 1.775f, - 3.518f, 5.641f, 8.784f, 12.710f, 15.184f, 16.983f, 18.810f, 21.506f, 20.989f, 20.584f, - 20.999f, 18.122f, 16.417f, 17.239f, 18.210f, 19.866f, 21.644f, 23.278f, 24.795f, 27.067f, - 28.268f, 29.008f, 28.988f, 29.928f, 31.466f, 32.873f, 34.366f, 37.307f, 38.243f, 37.291f, - 36.728f, 35.451f, 34.242f, 33.561f, 33.457f, 33.211f, 33.229f, 33.478f, 34.801f, 35.385f, - 34.514f, 33.136f, 31.353f, 29.792f, 28.004f, 27.510f, 29.114f, 29.470f, 33.060f, 35.622f, - 33.209f, 31.242f, 30.441f, 28.941f, 25.873f, 21.264f, 16.690f, 15.893f, 14.360f, 13.348f, - 10.621f, 7.747f, 4.059f, 6.725f, 3.043f, 1.515f, -0.081f, -2.330f, -2.670f, -4.212f, - -7.489f, -8.873f,-13.589f,-15.855f,-15.602f,-16.321f,-16.492f,-16.417f,-17.178f,-16.259f, --15.482f,-14.365f,-13.083f,-11.617f,-11.045f,-11.623f,-10.600f, -8.248f, -6.620f, -5.493f, - -3.270f, -2.499f, -0.043f, 2.469f, 3.808f, 6.605f, 8.437f, 9.749f, 10.616f, 12.525f, - 13.519f, 13.799f, 13.787f, 13.969f, 13.690f, 12.950f, 12.938f, 14.474f, 15.000f, 15.835f, - 18.165f, 19.342f, 11.348f, 6.977f, 1.286f, 9.732f, 24.622f, 34.466f, 38.207f, 40.044f, - 39.971f, 39.347f, 39.535f, 37.944f, 36.039f, 32.271f, 32.466f, 33.107f, 33.795f, 33.731f, - 31.988f, 29.884f, 26.140f, 23.990f, 24.012f, 22.101f, 21.045f, 19.963f, 19.246f, 17.422f, - 15.598f, 15.477f, 18.502f, 18.171f, 17.715f, 17.541f, 18.272f, 19.308f, 21.524f, 23.858f, - 24.197f, 22.156f, 21.102f, 21.056f, 22.161f, 23.060f, 24.124f, 24.263f, 23.520f, 24.345f, - 25.790f, 27.267f, 23.562f, 23.787f, 23.429f, 23.687f, 22.063f, 19.632f, 17.196f, 15.084f, - 13.606f -},{ --29.534f,-27.949f,-23.028f,-19.121f,-15.070f,-11.533f, -7.275f, -3.142f, 0.294f, 2.298f, - 3.762f, 5.662f, 8.732f, 12.756f, 15.259f, 16.989f, 19.167f, 20.510f, 20.423f, 19.645f, - 20.472f, 18.480f, 16.964f, 17.791f, 18.666f, 20.276f, 21.991f, 23.522f, 25.386f, 27.601f, - 28.627f, 29.495f, 30.188f, 30.813f, 31.976f, 33.563f, 35.466f, 35.558f, 36.682f, 37.508f, - 37.135f, 36.809f, 35.280f, 34.144f, 33.321f, 33.257f, 33.319f, 33.704f, 34.478f, 34.636f, - 34.116f, 32.397f, 31.284f, 29.443f, 28.143f, 27.013f, 27.752f, 29.566f, 31.017f, 35.513f, - 36.054f, 34.344f, 32.366f, 29.259f, 25.634f, 21.118f, 18.589f, 15.084f, 12.553f, 12.236f, - 10.384f, 5.764f, 3.254f, -0.041f, 1.663f, -0.146f, -2.396f, -4.645f, -5.347f, -5.577f, - -6.384f, -8.392f,-11.365f,-15.325f,-15.123f,-15.092f,-14.994f,-13.950f,-13.702f,-11.885f, --11.529f,-12.869f,-12.702f,-11.562f,-11.173f,-10.885f, -9.767f, -8.451f, -7.307f, -5.958f, - -4.551f, -3.146f, -0.038f, 1.947f, 3.956f, 5.522f, 7.436f, 8.500f, 9.032f, 10.535f, - 11.873f, 12.526f, 13.033f, 13.221f, 13.379f, 13.166f, 12.697f, 14.148f, 14.514f, 15.292f, - 16.834f, 16.598f, 10.659f, 6.757f, 1.395f, 5.655f, 16.483f, 30.479f, 36.429f, 39.284f, - 38.778f, 38.116f, 38.473f, 35.717f, 34.973f, 32.970f, 31.186f, 32.543f, 32.628f, 32.703f, - 31.206f, 27.660f, 23.557f, 22.102f, 22.557f, 21.479f, 19.944f, 18.801f, 17.963f, 16.702f, - 15.289f, 15.465f, 18.459f, 18.188f, 17.720f, 17.417f, 18.128f, 18.370f, 20.550f, 22.339f, - 22.661f, 21.328f, 20.158f, 20.065f, 21.326f, 22.093f, 23.166f, 23.159f, 22.636f, 23.723f, - 25.182f, 26.800f, 22.999f, 23.439f, 23.237f, 23.496f, 21.935f, 19.634f, 17.168f, 15.065f, - 13.606f -},{ --29.534f,-27.961f,-22.956f,-18.956f,-14.821f,-11.152f, -6.854f, -2.664f, 0.725f, 2.638f, - 3.891f, 5.683f, 8.864f, 12.793f, 15.253f, 16.825f, 18.966f, 20.803f, 21.445f, 19.979f, - 20.365f, 19.236f, 17.333f, 18.271f, 19.375f, 20.764f, 22.492f, 23.920f, 25.774f, 27.776f, - 28.984f, 29.814f, 30.773f, 31.589f, 32.798f, 34.030f, 36.004f, 37.317f, 36.174f, 35.986f, - 38.018f, 38.196f, 37.196f, 35.409f, 34.328f, 33.372f, 33.204f, 33.549f, 33.603f, 33.264f, - 33.317f, 32.678f, 31.019f, 29.619f, 28.161f, 26.334f, 26.137f, 28.603f, 30.733f, 32.035f, - 34.574f, 35.394f, 31.757f, 29.125f, 26.711f, 19.442f, 18.437f, 14.780f, 10.968f, 10.291f, - 9.964f, 5.686f, 2.002f, -0.522f, -2.655f, -3.096f, -4.585f, -4.673f, -7.226f, -9.234f, - -9.328f,-12.226f,-11.672f,-10.940f,-12.566f,-13.284f,-12.341f, -9.406f, -6.610f, -7.340f, - -6.690f,-11.415f,-11.423f,-10.876f,-10.877f,-10.812f,-10.341f, -9.501f, -8.511f, -7.478f, - -5.989f, -2.586f, -0.172f, 1.989f, 3.322f, 4.712f, 6.216f, 7.703f, 8.344f, 9.142f, - 10.783f, 11.327f, 11.988f, 12.708f, 13.082f, 13.127f, 12.463f, 13.626f, 15.046f, 16.219f, - 16.653f, 14.804f, 12.453f, 8.888f, 5.161f, 5.671f, 12.443f, 27.555f, 35.551f, 40.028f, - 38.296f, 37.431f, 33.713f, 30.903f, 33.248f, 32.149f, 30.877f, 30.868f, 31.076f, 30.726f, - 29.283f, 25.338f, 21.069f, 20.400f, 20.691f, 20.446f, 19.291f, 18.589f, 16.656f, 15.875f, - 15.408f, 15.954f, 18.097f, 17.648f, 17.735f, 18.036f, 18.038f, 17.625f, 19.620f, 21.021f, - 21.217f, 20.225f, 19.223f, 18.931f, 20.259f, 21.322f, 22.082f, 22.047f, 21.664f, 23.020f, - 24.685f, 26.210f, 22.593f, 23.058f, 23.034f, 23.247f, 21.798f, 19.634f, 17.137f, 15.045f, - 13.606f -},{ --29.534f,-27.974f,-22.890f,-18.785f,-14.578f,-10.827f, -6.558f, -2.305f, 0.938f, 2.740f, - 3.869f, 5.694f, 9.044f, 12.622f, 14.723f, 16.467f, 18.208f, 20.753f, 21.808f, 20.839f, - 20.784f, 20.986f, 17.658f, 18.415f, 19.949f, 21.132f, 22.732f, 24.372f, 26.137f, 27.775f, - 28.907f, 30.247f, 31.697f, 32.448f, 33.640f, 34.610f, 35.569f, 37.032f, 39.020f, 38.414f, - 37.602f, 38.913f, 39.401f, 37.492f, 35.496f, 34.290f, 33.655f, 32.996f, 32.863f, 33.250f, - 32.979f, 31.983f, 31.399f, 29.282f, 27.799f, 26.327f, 25.710f, 25.333f, 27.185f, 30.251f, - 30.214f, 28.887f, 28.155f, 28.342f, 26.103f, 20.967f, 15.193f, 14.073f, 10.393f, 7.793f, - 7.253f, 5.958f, 3.090f, 1.048f, -5.203f, -7.980f, -7.079f, -6.085f, -8.684f,-10.049f, --12.651f,-13.808f,-11.391f,-11.023f,-13.173f,-14.782f,-11.881f, -8.983f, -8.357f, -8.251f, - -9.817f,-12.472f,-10.932f,-11.434f,-11.722f,-11.460f,-11.451f,-10.559f, -9.863f, -8.283f, - -5.324f, -2.019f, -0.617f, 0.954f, 2.179f, 3.651f, 5.088f, 6.592f, 7.460f, 7.925f, - 9.543f, 10.155f, 10.947f, 11.228f, 12.255f, 12.857f, 13.077f, 13.325f, 14.561f, 15.773f, - 16.214f, 15.258f, 16.110f, 11.527f, 7.537f, 6.814f, 15.178f, 29.386f, 36.680f, 39.885f, - 38.505f, 36.454f, 30.448f, 29.434f, 32.364f, 30.976f, 29.128f, 28.662f, 29.717f, 28.436f, - 27.298f, 24.603f, 21.752f, 19.331f, 19.581f, 19.388f, 18.506f, 17.644f, 15.546f, 15.179f, - 15.988f, 16.453f, 17.598f, 17.140f, 17.631f, 17.970f, 17.548f, 17.566f, 18.711f, 20.313f, - 19.931f, 18.703f, 18.483f, 17.921f, 19.281f, 20.608f, 20.910f, 21.007f, 20.679f, 22.283f, - 24.270f, 25.578f, 22.328f, 22.666f, 22.817f, 22.948f, 21.652f, 19.631f, 17.105f, 15.026f, - 13.606f -},{ --29.534f,-27.987f,-22.830f,-18.615f,-14.353f,-10.557f, -6.357f, -2.052f, 0.979f, 2.602f, - 3.667f, 5.633f, 9.040f, 12.119f, 13.627f, 15.963f, 17.762f, 20.302f, 21.564f, 21.542f, - 20.688f, 22.637f, 19.213f, 18.117f, 19.256f, 21.245f, 22.813f, 24.642f, 26.458f, 28.060f, - 29.009f, 30.428f, 32.286f, 33.468f, 34.548f, 35.412f, 36.125f, 37.019f, 38.750f, 39.577f, - 40.460f, 39.546f, 40.035f, 40.313f, 37.691f, 35.281f, 34.236f, 33.291f, 33.114f, 33.167f, - 32.943f, 31.795f, 31.038f, 29.889f, 28.067f, 27.055f, 25.914f, 24.551f, 24.263f, 25.052f, - 28.194f, 26.734f, 25.688f, 24.140f, 20.004f, 15.112f, 11.071f, 11.525f, 10.160f, 4.655f, - 4.730f, 5.589f, 4.034f, 0.528f, -9.399f, -9.057f,-11.342f,-10.171f,-10.246f,-11.045f, --11.682f,-13.169f,-14.031f,-12.946f,-13.498f,-14.663f,-14.623f,-12.763f,-12.163f,-12.372f, --11.860f,-13.023f,-12.620f,-12.937f,-12.507f,-12.287f,-11.882f,-11.292f,-10.109f, -7.715f, - -5.758f, -3.350f, -1.318f, -0.539f, 1.076f, 2.900f, 4.607f, 5.453f, 6.456f, 7.636f, - 8.622f, 9.392f, 9.938f, 10.070f, 11.684f, 12.576f, 12.683f, 12.814f, 13.856f, 15.124f, - 15.500f, 15.533f, 18.877f, 14.373f, 9.980f, 6.975f, 14.589f, 28.515f, 37.041f, 38.985f, - 38.510f, 35.772f, 28.393f, 28.491f, 29.301f, 29.374f, 26.920f, 27.505f, 28.115f, 25.988f, - 24.798f, 24.750f, 23.322f, 18.844f, 18.303f, 18.547f, 17.406f, 16.319f, 15.324f, 14.825f, - 15.931f, 16.462f, 17.312f, 16.460f, 16.743f, 16.842f, 17.264f, 17.381f, 18.130f, 19.436f, - 18.624f, 17.337f, 17.852f, 17.225f, 18.675f, 19.889f, 19.845f, 20.038f, 19.852f, 21.624f, - 23.889f, 24.998f, 22.138f, 22.289f, 22.586f, 22.614f, 21.497f, 19.623f, 17.071f, 15.006f, - 13.606f -},{ --29.534f,-28.001f,-22.779f,-18.453f,-14.153f,-10.330f, -6.216f, -1.902f, 0.910f, 2.289f, - 3.304f, 5.464f, 8.796f, 11.531f, 12.582f, 15.426f, 18.006f, 20.663f, 21.889f, 21.635f, - 20.390f, 22.862f, 21.672f, 19.553f, 19.298f, 20.047f, 22.604f, 24.483f, 26.472f, 28.386f, - 29.427f, 30.954f, 32.603f, 34.001f, 35.470f, 36.379f, 36.937f, 37.740f, 38.452f, 39.735f, - 40.121f, 42.287f, 41.385f, 40.972f, 39.963f, 37.990f, 35.138f, 33.900f, 33.436f, 33.210f, - 34.210f, 32.260f, 31.245f, 30.229f, 29.520f, 28.297f, 26.938f, 24.928f, 23.110f, 22.302f, - 23.908f, 24.618f, 23.923f, 22.382f, 19.006f, 15.017f, 12.455f, 9.544f, 7.559f, 4.251f, - 0.996f, 1.758f, 1.971f, -3.298f, -8.223f, -9.677f,-11.470f,-14.336f,-13.239f,-12.221f, --11.387f,-11.259f,-13.854f,-14.459f,-15.470f,-16.077f,-16.724f,-16.437f,-16.292f,-14.464f, --12.084f,-13.583f,-14.285f,-14.064f,-13.161f,-13.121f,-12.676f,-11.660f,-10.516f, -9.198f, - -6.735f, -4.579f, -2.907f, -1.533f, -0.176f, 1.800f, 3.059f, 4.283f, 5.635f, 7.188f, - 8.645f, 9.505f, 9.243f, 9.700f, 11.500f, 12.528f, 12.594f, 12.975f, 14.083f, 16.041f, - 16.305f, 16.326f, 17.496f, 15.483f, 12.808f, 17.308f, 20.881f, 33.139f, 36.927f, 37.378f, - 37.691f, 36.097f, 27.341f, 25.597f, 24.510f, 27.059f, 24.625f, 25.371f, 25.093f, 23.263f, - 23.131f, 22.831f, 21.188f, 17.991f, 17.088f, 17.466f, 17.359f, 16.038f, 15.533f, 15.194f, - 15.795f, 15.672f, 16.828f, 15.455f, 16.032f, 16.576f, 17.422f, 16.817f, 18.074f, 18.287f, - 17.561f, 16.605f, 16.974f, 16.696f, 18.151f, 19.144f, 19.013f, 19.095f, 19.220f, 21.063f, - 23.487f, 24.520f, 21.942f, 21.950f, 22.345f, 22.264f, 21.338f, 19.610f, 17.035f, 14.987f, - 13.606f -},{ --29.534f,-28.015f,-22.736f,-18.308f,-13.983f,-10.130f, -6.109f, -1.849f, 0.784f, 1.916f, - 2.870f, 5.218f, 8.471f, 11.252f, 12.264f, 15.101f, 18.355f, 21.524f, 22.462f, 21.064f, - 21.026f, 23.108f, 23.292f, 22.119f, 21.867f, 20.540f, 22.804f, 24.767f, 26.622f, 28.761f, - 30.237f, 31.700f, 33.080f, 34.192f, 36.120f, 37.358f, 38.088f, 38.722f, 39.014f, 39.442f, - 40.163f, 41.602f, 43.548f, 43.267f, 41.743f, 39.174f, 37.844f, 35.388f, 33.799f, 32.710f, - 33.728f, 32.260f, 31.410f, 30.604f, 30.034f, 29.659f, 29.109f, 25.612f, 23.124f, 22.265f, - 21.191f, 19.295f, 18.744f, 18.097f, 15.585f, 11.892f, 9.064f, 5.901f, 3.615f, 3.179f, - 1.165f, -1.619f, -3.881f, -8.901f,-10.352f,-10.872f,-11.560f,-12.395f,-13.288f,-14.001f, --11.897f,-12.184f,-15.458f,-15.702f,-18.367f,-19.163f,-19.256f,-18.277f,-17.536f,-16.564f, --14.069f,-13.704f,-14.430f,-13.163f,-11.621f,-12.521f,-13.194f,-12.908f,-11.676f,-10.065f, - -7.791f, -5.126f, -3.892f, -2.426f, -1.050f, 0.291f, 2.337f, 3.523f, 5.339f, 6.409f, - 8.002f, 9.187f, 9.205f, 9.495f, 10.353f, 11.712f, 13.301f, 14.219f, 13.473f, 13.579f, - 16.883f, 17.302f, 16.770f, 15.698f, 14.292f, 27.906f, 26.707f, 32.900f, 35.977f, 36.522f, - 36.716f, 35.371f, 27.678f, 22.512f, 21.533f, 25.829f, 23.296f, 23.718f, 23.794f, 22.832f, - 21.303f, 20.435f, 19.671f, 17.348f, 16.634f, 16.804f, 17.422f, 16.648f, 15.349f, 16.471f, - 15.834f, 15.072f, 15.970f, 15.009f, 16.029f, 17.028f, 17.535f, 16.827f, 18.217f, 17.488f, - 16.603f, 16.215f, 16.058f, 16.207f, 17.301f, 18.348f, 18.338f, 18.197f, 18.663f, 20.490f, - 23.014f, 24.121f, 21.677f, 21.659f, 22.099f, 21.918f, 21.176f, 19.590f, 16.997f, 14.967f, - 13.606f -},{ --29.534f,-28.029f,-22.703f,-18.185f,-13.847f, -9.944f, -6.029f, -1.889f, 0.622f, 1.602f, - 2.499f, 4.975f, 8.253f, 11.347f, 12.672f, 15.260f, 18.391f, 21.790f, 23.161f, 20.783f, - 21.722f, 24.116f, 23.286f, 22.228f, 22.993f, 22.804f, 23.695f, 25.782f, 27.260f, 29.226f, - 30.959f, 32.493f, 33.718f, 34.913f, 36.743f, 38.185f, 39.207f, 39.741f, 39.735f, 39.921f, - 40.615f, 42.232f, 43.643f, 44.702f, 44.549f, 42.333f, 39.551f, 37.417f, 35.463f, 33.316f, - 33.173f, 32.156f, 32.228f, 31.018f, 30.456f, 29.746f, 29.401f, 27.337f, 24.162f, 22.378f, - 21.063f, 18.321f, 17.558f, 15.416f, 13.053f, 10.874f, 8.282f, 5.563f, 3.230f, 0.277f, - -1.184f, -4.876f, -7.920f,-10.708f,-11.831f,-10.077f,-10.743f,-15.370f,-16.181f,-14.547f, --16.749f,-13.597f,-16.573f,-16.335f,-18.226f,-20.154f,-20.437f,-18.512f,-18.401f,-17.429f, --16.410f,-15.725f,-15.754f,-13.252f,-11.177f,-12.835f,-13.375f,-12.488f,-11.531f, -7.793f, - -4.444f, -3.891f, -4.673f, -3.533f, -1.604f, 0.055f, 1.846f, 2.844f, 4.312f, 5.411f, - 6.952f, 8.507f, 10.308f, 10.923f, 11.289f, 13.007f, 13.941f, 12.667f, 10.781f, 13.477f, - 16.521f, 17.056f, 16.446f, 15.961f, 15.355f, 24.295f, 24.730f, 32.362f, 35.371f, 36.234f, - 34.646f, 33.528f, 29.121f, 20.609f, 20.391f, 25.691f, 21.664f, 22.318f, 22.490f, 20.769f, - 19.478f, 17.879f, 18.218f, 16.766f, 16.112f, 16.249f, 16.830f, 16.091f, 15.472f, 17.211f, - 16.123f, 15.153f, 14.830f, 14.503f, 15.710f, 17.237f, 17.690f, 17.295f, 18.053f, 16.774f, - 15.675f, 15.790f, 15.456f, 15.730f, 16.271f, 17.501f, 17.656f, 17.413f, 18.068f, 19.790f, - 22.451f, 23.732f, 21.329f, 21.404f, 21.850f, 21.597f, 21.016f, 19.564f, 16.956f, 14.947f, - 13.606f -},{ --29.534f,-28.043f,-22.681f,-18.092f,-13.746f, -9.765f, -5.985f, -2.008f, 0.415f, 1.425f, - 2.302f, 4.813f, 8.194f, 11.489f, 13.177f, 15.800f, 18.297f, 21.572f, 24.514f, 21.450f, - 21.411f, 23.912f, 23.221f, 21.717f, 22.679f, 23.599f, 25.008f, 26.671f, 28.067f, 29.875f, - 31.634f, 32.898f, 34.231f, 35.658f, 37.457f, 39.003f, 40.169f, 40.902f, 41.184f, 40.892f, - 40.737f, 42.383f, 44.048f, 45.406f, 45.450f, 43.888f, 41.659f, 39.526f, 36.999f, 34.632f, - 33.085f, 32.178f, 31.103f, 29.807f, 29.439f, 28.915f, 28.909f, 28.835f, 25.332f, 22.349f, - 20.392f, 18.110f, 16.659f, 14.273f, 12.009f, 10.714f, 8.808f, 5.544f, 1.769f, -1.764f, - -4.036f, -6.365f, -9.594f,-10.772f,-10.537f,-12.240f,-15.556f,-18.885f,-18.815f,-16.822f, --15.318f,-13.424f,-14.931f,-18.736f,-20.346f,-18.771f,-19.232f,-17.751f,-16.910f,-15.285f, --16.299f,-12.138f,-15.343f,-15.407f,-13.815f,-13.371f,-12.716f,-11.802f, -9.737f, -4.041f, - -3.994f, -4.914f, -5.454f, -4.005f, -1.779f, 0.014f, 0.960f, 2.606f, 3.980f, 4.885f, - 6.321f, 8.654f, 10.523f, 10.530f, 11.416f, 11.606f, 11.576f, 12.159f, 13.322f, 14.796f, - 17.320f, 17.542f, 20.302f, 20.325f, 17.920f, 19.447f, 23.257f, 28.885f, 35.700f, 35.653f, - 33.882f, 30.682f, 26.731f, 20.152f, 16.699f, 21.651f, 19.705f, 21.078f, 21.264f, 18.545f, - 15.996f, 16.039f, 16.079f, 15.905f, 15.788f, 15.684f, 15.711f, 14.434f, 15.331f, 16.207f, - 15.537f, 14.036f, 13.858f, 13.708f, 15.205f, 17.406f, 17.259f, 17.671f, 17.548f, 15.743f, - 14.992f, 15.254f, 14.892f, 15.114f, 15.423f, 16.604f, 16.887f, 16.748f, 17.447f, 18.993f, - 21.816f, 23.282f, 20.924f, 21.159f, 21.602f, 21.310f, 20.863f, 19.529f, 16.913f, 14.927f, - 13.606f -},{ --29.534f,-28.058f,-22.670f,-18.031f,-13.679f, -9.596f, -5.997f, -2.195f, 0.148f, 1.398f, - 2.318f, 4.775f, 8.228f, 11.407f, 13.232f, 16.110f, 18.117f, 21.455f, 25.728f, 22.263f, - 20.929f, 22.397f, 24.382f, 22.630f, 23.363f, 24.145f, 26.054f, 27.431f, 28.868f, 30.625f, - 32.027f, 33.201f, 34.575f, 36.465f, 38.248f, 39.957f, 41.298f, 42.273f, 42.524f, 42.095f, - 41.815f, 42.613f, 43.471f, 44.921f, 45.874f, 46.218f, 43.924f, 40.580f, 38.213f, 35.997f, - 33.627f, 31.987f, 30.092f, 28.573f, 27.146f, 26.522f, 26.461f, 25.918f, 24.203f, 21.635f, - 19.567f, 17.595f, 15.215f, 12.853f, 10.037f, 8.347f, 5.921f, 2.882f, -0.504f, -4.500f, - -4.025f, -6.721f,-10.140f,-11.451f,-10.280f,-13.711f,-17.063f,-17.190f,-18.878f,-18.165f, --18.540f,-19.301f,-17.204f,-20.382f,-19.732f,-18.800f,-19.140f,-18.337f,-18.877f,-14.724f, --14.050f,-15.821f,-16.531f,-16.509f,-16.085f,-14.984f,-13.229f,-10.916f, -7.740f, -6.645f, - -5.010f, -4.549f, -4.028f, -3.396f, -2.742f, -0.934f, 0.268f, 2.089f, 3.506f, 5.429f, - 7.074f, 7.837f, 8.445f, 7.943f, 8.790f, 9.821f, 11.368f, 14.383f, 17.860f, 19.593f, - 19.290f, 20.190f, 20.915f, 23.566f, 27.636f, 24.190f, 25.229f, 29.579f, 35.006f, 35.648f, - 32.134f, 28.318f, 24.576f, 19.461f, 17.437f, 17.655f, 17.423f, 19.790f, 19.895f, 17.004f, - 13.989f, 14.288f, 14.175f, 13.928f, 14.684f, 15.231f, 15.383f, 13.293f, 14.440f, 15.253f, - 13.752f, 12.637f, 13.963f, 13.918f, 14.955f, 17.469f, 16.189f, 17.718f, 16.862f, 14.696f, - 14.334f, 14.508f, 14.083f, 14.322f, 14.709f, 15.621f, 16.049f, 16.098f, 16.874f, 18.255f, - 21.146f, 22.738f, 20.521f, 20.889f, 21.352f, 21.064f, 20.720f, 19.485f, 16.866f, 14.907f, - 13.606f -},{ --29.534f,-28.073f,-22.671f,-18.006f,-13.643f, -9.446f, -6.085f, -2.434f, -0.176f, 1.480f, - 2.512f, 4.863f, 8.291f, 11.179f, 12.853f, 15.685f, 17.796f, 21.503f, 25.818f, 22.345f, - 20.403f, 21.301f, 25.269f, 22.819f, 23.380f, 25.079f, 26.572f, 28.134f, 29.565f, 31.072f, - 32.438f, 33.595f, 35.346f, 37.262f, 38.978f, 41.127f, 42.585f, 43.518f, 43.977f, 43.349f, - 42.765f, 43.018f, 43.353f, 44.456f, 45.672f, 46.454f, 45.429f, 42.885f, 39.905f, 36.911f, - 34.441f, 32.245f, 30.254f, 28.399f, 26.584f, 24.883f, 23.321f, 21.658f, 19.956f, 17.330f, - 15.554f, 13.161f, 12.324f, 11.395f, 9.985f, 6.681f, 4.479f, 1.428f, -1.510f, -5.450f, - -9.344f, -7.249f, -9.252f,-11.743f,-13.682f,-16.147f,-18.903f,-21.205f,-22.632f,-22.424f, --21.520f,-21.351f,-21.973f,-21.859f,-18.554f,-17.816f,-17.978f,-16.080f,-15.433f,-15.681f, --12.102f,-14.132f,-16.114f,-17.511f,-16.660f,-14.392f,-12.686f,-10.726f, -8.381f, -7.091f, - -6.420f, -3.451f, -2.352f, -3.119f, -4.783f, -2.816f, 0.481f, 0.727f, 2.987f, 4.790f, - 5.667f, 6.432f, 6.226f, 6.517f, 7.500f, 9.396f, 12.641f, 15.406f, 16.536f, 16.975f, - 16.960f, 17.657f, 19.778f, 23.767f, 25.538f, 25.788f, 26.980f, 29.763f, 34.238f, 33.849f, - 30.346f, 26.351f, 21.725f, 20.051f, 15.254f, 16.098f, 14.532f, 17.790f, 17.974f, 15.402f, - 12.378f, 12.876f, 13.000f, 12.385f, 12.854f, 15.040f, 15.499f, 13.424f, 14.186f, 14.496f, - 11.790f, 11.657f, 13.703f, 13.837f, 14.804f, 16.686f, 15.355f, 16.833f, 15.930f, 13.761f, - 13.591f, 13.446f, 13.152f, 13.530f, 13.889f, 14.560f, 15.168f, 15.381f, 16.341f, 17.689f, - 20.464f, 22.115f, 20.179f, 20.569f, 21.097f, 20.852f, 20.588f, 19.430f, 16.816f, 14.887f, - 13.606f -},{ --29.534f,-28.088f,-22.684f,-18.017f,-13.636f, -9.331f, -6.259f, -2.720f, -0.517f, 1.619f, - 2.828f, 5.049f, 8.357f, 11.018f, 12.432f, 14.838f, 17.802f, 21.866f, 25.525f, 21.993f, - 19.439f, 20.912f, 25.116f, 22.876f, 23.309f, 25.577f, 27.265f, 28.645f, 30.213f, 31.626f, - 32.661f, 34.171f, 36.202f, 38.196f, 39.765f, 42.603f, 43.950f, 45.148f, 45.093f, 44.393f, - 43.229f, 42.213f, 42.709f, 46.260f, 45.670f, 46.635f, 45.719f, 43.277f, 41.099f, 38.340f, - 35.237f, 32.803f, 31.169f, 29.095f, 26.998f, 25.099f, 22.913f, 20.449f, 18.039f, 15.876f, - 13.917f, 11.721f, 9.849f, 7.341f, 6.199f, 5.670f, 3.695f, 0.423f, -2.502f, -4.836f, --11.044f,-11.054f,-10.677f,-12.871f,-15.499f,-17.881f,-20.051f,-21.816f,-24.062f,-24.569f, --23.453f,-23.807f,-24.773f,-24.531f,-23.038f,-22.755f,-20.729f,-19.503f,-20.029f,-19.718f, --19.258f,-19.298f,-19.739f,-19.611f,-16.406f,-14.688f,-13.129f,-11.399f, -8.533f, -7.035f, - -7.431f, -6.454f, -1.881f, -1.214f, -5.438f, -2.834f, 1.353f, 0.144f, 0.495f, 1.809f, - 2.647f, 4.088f, 4.951f, 5.555f, 7.658f, 10.236f, 12.170f, 13.797f, 14.024f, 14.142f, - 14.395f, 15.689f, 18.837f, 20.772f, 22.277f, 24.782f, 25.755f, 27.104f, 30.609f, 30.616f, - 29.007f, 24.856f, 20.114f, 17.979f, 12.709f, 14.151f, 13.224f, 15.420f, 16.107f, 12.603f, - 10.993f, 11.656f, 11.891f, 11.127f, 11.363f, 13.983f, 14.267f, 13.315f, 13.733f, 13.774f, - 11.391f, 12.143f, 13.187f, 12.845f, 14.364f, 15.003f, 14.820f, 15.517f, 14.902f, 13.001f, - 12.898f, 12.109f, 12.082f, 12.691f, 13.008f, 13.525f, 14.236f, 14.641f, 15.745f, 17.239f, - 19.762f, 21.456f, 19.944f, 20.193f, 20.835f, 20.667f, 20.467f, 19.363f, 16.763f, 14.867f, - 13.606f -},{ --29.534f,-28.104f,-22.708f,-18.062f,-13.656f, -9.267f, -6.510f, -3.048f, -0.811f, 1.780f, - 3.234f, 5.304f, 8.422f, 10.947f, 12.298f, 14.460f, 18.539f, 22.721f, 25.628f, 21.774f, - 19.509f, 21.367f, 25.187f, 23.923f, 23.829f, 25.971f, 27.829f, 29.277f, 31.001f, 32.284f, - 33.323f, 34.760f, 36.763f, 38.689f, 40.631f, 43.515f, 45.382f, 46.330f, 46.156f, 45.533f, - 44.323f, 43.339f, 43.135f, 43.349f, 45.147f, 46.411f, 45.694f, 43.685f, 41.734f, 39.479f, - 36.592f, 34.153f, 32.279f, 30.051f, 27.421f, 25.144f, 23.009f, 20.591f, 18.144f, 15.842f, - 13.427f, 11.255f, 8.466f, 6.099f, 5.413f, 4.325f, 2.964f, 0.689f, -2.316f, -6.218f, - -9.384f,-12.082f,-13.348f,-12.770f,-15.734f,-18.889f,-20.470f,-21.368f,-23.633f,-24.281f, --23.793f,-25.244f,-26.750f,-26.759f,-28.048f,-26.906f,-24.208f,-24.984f,-24.951f,-24.078f, --22.920f,-23.673f,-22.748f,-21.455f,-18.133f,-17.290f,-14.193f,-11.028f,-10.619f, -8.136f, - -8.274f, -6.547f, -3.246f, -1.819f, -1.557f, 1.058f, -0.581f, -1.139f, -1.238f, 0.964f, - 1.960f, 3.388f, 4.498f, 5.930f, 8.391f, 10.170f, 11.558f, 12.219f, 11.957f, 11.590f, - 11.824f, 14.214f, 17.641f, 19.007f, 19.504f, 22.167f, 23.978f, 25.272f, 27.850f, 30.397f, - 29.789f, 24.428f, 19.437f, 14.943f, 15.834f, 12.611f, 12.159f, 13.552f, 14.155f, 10.270f, - 10.943f, 11.073f, 10.693f, 9.959f, 10.236f, 12.013f, 12.731f, 12.865f, 12.780f, 13.586f, - 11.745f, 12.268f, 12.332f, 12.532f, 13.946f, 13.497f, 14.646f, 14.880f, 13.927f, 12.549f, - 11.909f, 10.737f, 10.847f, 11.612f, 12.180f, 12.584f, 13.243f, 13.961f, 15.017f, 16.737f, - 19.029f, 20.803f, 19.837f, 19.785f, 20.563f, 20.494f, 20.356f, 19.284f, 16.707f, 14.848f, - 13.606f -},{ --29.534f,-28.119f,-22.744f,-18.137f,-13.699f, -9.263f, -6.812f, -3.418f, -1.005f, 1.944f, - 3.724f, 5.616f, 8.499f, 10.879f, 12.487f, 14.989f, 19.457f, 23.500f, 25.618f, 21.625f, - 20.876f, 22.729f, 25.362f, 24.860f, 24.232f, 26.407f, 28.325f, 29.917f, 31.559f, 32.552f, - 33.728f, 35.362f, 37.133f, 38.907f, 41.196f, 44.486f, 46.516f, 47.267f, 47.044f, 46.068f, - 44.974f, 44.024f, 43.733f, 44.768f, 45.564f, 46.354f, 46.194f, 44.833f, 42.531f, 40.311f, - 38.227f, 36.083f, 33.756f, 30.947f, 28.037f, 25.600f, 23.215f, 21.016f, 18.549f, 16.077f, - 13.593f, 10.999f, 8.564f, 6.127f, 4.139f, 3.425f, 2.296f, -0.286f, -2.123f, -6.924f, --10.480f,-12.939f,-14.381f,-14.881f,-15.452f,-20.155f,-22.058f,-21.590f,-23.436f,-24.017f, --26.714f,-31.129f,-29.374f,-30.361f,-31.845f,-29.931f,-31.048f,-29.865f,-28.786f,-28.080f, --26.981f,-26.236f,-24.565f,-23.769f,-22.428f,-20.885f,-18.227f,-14.108f,-12.381f,-12.253f, - -9.728f, -8.925f, -7.977f, -4.688f, -3.661f, -3.579f, -3.289f, -1.881f, -1.096f, -0.255f, - 1.925f, 4.492f, 5.790f, 6.769f, 7.916f, 9.510f, 11.251f, 11.317f, 10.327f, 9.510f, - 9.797f, 12.351f, 14.922f, 16.578f, 17.642f, 19.715f, 22.302f, 22.996f, 25.829f, 29.310f, - 29.469f, 24.190f, 18.764f, 17.115f, 20.900f, 12.924f, 10.809f, 11.390f, 11.844f, 9.566f, - 10.526f, 9.907f, 9.587f, 9.005f, 9.265f, 11.094f, 11.565f, 12.105f, 11.935f, 13.042f, - 11.428f, 11.482f, 11.463f, 12.092f, 13.486f, 12.542f, 14.135f, 14.141f, 12.661f, 11.933f, - 10.668f, 9.716f, 9.785f, 10.462f, 11.285f, 11.666f, 12.222f, 13.316f, 14.226f, 16.084f, - 18.290f, 20.184f, 19.860f, 19.385f, 20.285f, 20.321f, 20.251f, 19.190f, 16.647f, 14.828f, - 13.606f -},{ --29.534f,-28.135f,-22.792f,-18.237f,-13.763f, -9.322f, -7.122f, -3.819f, -1.084f, 2.092f, - 4.266f, 5.989f, 8.640f, 10.861f, 12.794f, 15.873f, 19.765f, 23.512f, 25.265f, 21.556f, - 21.755f, 23.756f, 24.834f, 25.516f, 24.843f, 27.033f, 28.957f, 30.354f, 31.962f, 32.968f, - 34.191f, 35.807f, 37.461f, 39.066f, 41.412f, 44.614f, 47.414f, 48.297f, 49.219f, 46.372f, - 44.988f, 44.373f, 44.086f, 43.865f, 44.993f, 45.954f, 45.620f, 45.415f, 43.619f, 41.663f, - 39.577f, 37.498f, 34.821f, 31.342f, 28.335f, 26.066f, 24.231f, 22.104f, 19.953f, 16.364f, - 13.900f, 11.622f, 9.643f, 7.011f, 4.521f, 3.119f, 1.585f, -0.144f, -2.885f, -6.321f, - -9.610f,-12.141f,-14.986f,-18.452f,-21.550f,-23.311f,-24.009f,-25.446f,-26.124f,-27.032f, --31.052f,-33.349f,-33.689f,-34.031f,-34.491f,-34.426f,-32.783f,-31.462f,-30.646f,-31.366f, --30.343f,-29.016f,-27.679f,-26.704f,-26.079f,-24.052f,-22.869f,-19.336f,-15.611f,-12.328f, --12.455f,-10.783f, -9.002f, -8.007f, -6.290f, -5.935f, -4.078f, -2.966f, -2.272f, -0.529f, - 1.880f, 5.798f, 5.899f, 6.278f, 7.785f, 9.272f, 10.150f, 9.645f, 8.390f, 7.513f, - 7.119f, 8.806f, 11.351f, 12.856f, 14.439f, 16.922f, 19.864f, 21.553f, 23.366f, 28.121f, - 28.816f, 24.136f, 18.191f, 21.772f, 20.146f, 12.761f, 9.115f, 9.024f, 9.246f, 8.577f, - 9.525f, 8.804f, 8.175f, 8.298f, 9.343f, 10.176f, 10.350f, 10.570f, 11.486f, 12.895f, - 11.292f, 11.377f, 11.614f, 11.629f, 12.712f, 12.019f, 12.902f, 12.850f, 11.325f, 11.024f, - 9.925f, 9.131f, 9.056f, 9.558f, 10.249f, 10.708f, 11.274f, 12.609f, 13.523f, 15.364f, - 17.619f, 19.621f, 19.992f, 19.031f, 20.005f, 20.139f, 20.147f, 19.082f, 16.585f, 14.808f, - 13.606f -},{ --29.534f,-28.150f,-22.849f,-18.356f,-13.844f, -9.435f, -7.396f, -4.233f, -1.088f, 2.195f, - 4.768f, 6.415f, 8.879f, 11.015f, 12.939f, 16.235f, 19.591f, 22.912f, 24.804f, 22.013f, - 22.876f, 24.295f, 24.474f, 26.007f, 25.408f, 27.589f, 29.257f, 30.660f, 32.060f, 33.152f, - 34.478f, 35.892f, 37.398f, 38.993f, 41.519f, 44.612f, 47.087f, 47.881f, 48.713f, 46.593f, - 44.978f, 44.576f, 43.702f, 43.021f, 46.470f, 45.588f, 44.485f, 43.785f, 44.036f, 42.680f, - 40.867f, 38.586f, 35.782f, 32.244f, 29.686f, 27.101f, 25.055f, 23.266f, 21.124f, 17.652f, - 14.720f, 11.911f, 9.927f, 7.436f, 5.000f, 3.003f, 1.305f, -0.504f, -3.026f, -6.299f, - -9.408f,-11.340f,-14.012f,-16.639f,-19.694f,-21.241f,-23.057f,-27.099f,-26.724f,-26.803f, --29.794f,-33.389f,-35.345f,-36.494f,-37.493f,-37.531f,-37.061f,-37.760f,-37.644f,-33.533f, --32.985f,-31.161f,-29.548f,-29.229f,-29.885f,-29.165f,-26.443f,-23.311f,-18.715f,-14.179f, --13.437f,-11.547f, -9.757f, -9.041f, -8.390f, -7.279f, -5.370f, -3.543f, -2.002f, 0.775f, - 3.462f, 3.880f, 4.151f, 4.580f, 6.216f, 7.760f, 7.898f, 7.239f, 5.705f, 5.089f, - 4.860f, 5.287f, 6.831f, 8.310f, 10.380f, 13.497f, 16.489f, 18.907f, 23.479f, 26.890f, - 27.274f, 24.623f, 20.179f, 23.316f, 18.426f, 11.277f, 7.320f, 6.992f, 6.835f, 7.370f, - 7.756f, 7.130f, 7.148f, 7.582f, 8.039f, 8.568f, 9.100f, 9.204f, 10.942f, 12.697f, - 11.232f, 11.146f, 11.129f, 11.223f, 11.873f, 11.342f, 12.034f, 12.111f, 10.702f, 10.395f, - 9.573f, 8.710f, 8.446f, 8.827f, 9.279f, 9.819f, 10.518f, 11.833f, 12.990f, 14.761f, - 17.085f, 19.136f, 20.185f, 18.738f, 19.728f, 19.943f, 20.040f, 18.960f, 16.519f, 14.788f, - 13.606f -},{ --29.534f,-28.166f,-22.916f,-18.487f,-13.938f, -9.587f, -7.596f, -4.624f, -1.084f, 2.226f, - 5.101f, 6.838f, 9.141f, 11.223f, 12.796f, 15.917f, 19.555f, 22.187f, 23.668f, 22.714f, - 25.470f, 25.430f, 25.016f, 26.025f, 26.348f, 27.636f, 29.045f, 30.669f, 32.034f, 33.133f, - 34.522f, 35.937f, 37.361f, 39.153f, 41.301f, 44.481f, 46.543f, 48.490f, 47.499f, 46.455f, - 44.856f, 44.221f, 43.257f, 43.058f, 45.870f, 45.261f, 44.434f, 43.487f, 43.285f, 42.670f, - 42.023f, 39.765f, 37.201f, 34.085f, 31.871f, 30.291f, 28.000f, 26.113f, 23.752f, 20.198f, - 15.247f, 11.346f, 9.112f, 6.817f, 4.435f, 1.986f, -0.081f, -1.423f, -1.672f, -4.853f, - -7.836f,-10.239f,-13.656f,-15.893f,-21.432f,-23.297f,-25.008f,-27.757f,-25.931f,-28.662f, --31.801f,-34.383f,-36.273f,-37.302f,-38.636f,-39.603f,-39.769f,-39.880f,-40.519f,-39.688f, --35.341f,-33.241f,-30.366f,-30.012f,-30.496f,-29.856f,-29.050f,-25.359f,-20.502f,-16.541f, --14.519f,-13.356f,-11.710f,-10.961f, -9.862f, -8.962f, -5.987f, -3.819f, -0.441f, -0.172f, - -1.151f, -0.433f, 1.105f, 2.052f, 3.911f, 5.274f, 4.877f, 4.027f, 2.860f, 2.486f, - 2.491f, 2.179f, 2.373f, 3.323f, 5.698f, 9.633f, 13.996f, 18.438f, 24.181f, 26.122f, - 25.964f, 25.697f, 20.348f, 21.591f, 13.829f, 8.209f, 5.686f, 5.130f, 4.350f, 4.702f, - 5.482f, 6.041f, 6.509f, 6.594f, 7.033f, 7.234f, 8.308f, 8.771f, 10.080f, 11.206f, - 11.163f, 10.676f, 10.939f, 11.149f, 11.040f, 10.008f, 11.859f, 11.854f, 10.566f, 9.818f, - 8.889f, 8.347f, 7.877f, 8.039f, 8.501f, 9.132f, 9.975f, 11.113f, 12.556f, 14.384f, - 16.698f, 18.754f, 20.366f, 18.488f, 19.458f, 19.733f, 19.925f, 18.824f, 16.452f, 14.768f, - 13.606f -},{ --29.534f,-28.181f,-22.992f,-18.622f,-14.040f, -9.755f, -7.702f, -4.952f, -1.132f, 2.192f, - 5.200f, 7.161f, 9.249f, 11.142f, 12.510f, 15.584f, 19.692f, 21.509f, 21.763f, 22.793f, - 27.139f, 26.841f, 25.537f, 25.721f, 27.149f, 27.702f, 28.928f, 30.497f, 31.913f, 33.012f, - 34.443f, 35.954f, 37.487f, 39.140f, 41.270f, 44.141f, 45.625f, 50.892f, 46.969f, 46.556f, - 44.527f, 43.767f, 43.905f, 43.947f, 43.911f, 45.364f, 44.479f, 43.615f, 43.571f, 43.362f, - 42.612f, 40.413f, 38.416f, 36.366f, 33.774f, 32.517f, 31.378f, 30.967f, 26.327f, 22.452f, - 18.067f, 13.217f, 8.474f, 5.754f, 5.257f, 4.739f, 4.932f, 3.333f, 0.085f, -3.651f, - -6.700f, -9.556f,-11.028f,-14.223f,-19.413f,-24.457f,-26.387f,-27.145f,-23.729f,-29.225f, --32.410f,-34.702f,-36.543f,-38.236f,-39.337f,-40.713f,-41.262f,-40.740f,-41.072f,-41.620f, --41.311f,-36.186f,-32.683f,-31.031f,-30.568f,-31.328f,-30.155f,-26.215f,-21.917f,-18.244f, --18.174f,-17.102f,-15.072f,-11.331f, -7.649f, -5.347f, -4.542f, -4.340f, -3.549f, -4.652f, - -5.087f, -3.833f, -2.317f, 0.225f, 1.592f, 1.970f, 1.506f, 0.529f, -0.178f, -0.181f, - -0.320f, -1.309f, -2.168f, -1.306f, 1.331f, 6.326f, 13.335f, 19.033f, 23.647f, 23.986f, - 22.407f, 23.199f, 18.835f, 16.774f, 6.502f, 4.202f, 3.435f, 2.467f, 0.784f, 1.410f, - 3.434f, 4.705f, 5.506f, 5.210f, 6.794f, 6.460f, 7.874f, 8.354f, 9.332f, 10.071f, - 10.977f, 9.788f, 10.435f, 10.682f, 9.930f, 8.882f, 11.771f, 11.037f, 10.274f, 8.894f, - 8.001f, 8.013f, 7.372f, 7.231f, 7.768f, 8.587f, 9.503f, 10.530f, 12.083f, 14.160f, - 16.381f, 18.480f, 20.440f, 18.236f, 19.196f, 19.515f, 19.798f, 18.676f, 16.382f, 14.748f, - 13.606f -},{ --29.534f,-28.197f,-23.075f,-18.756f,-14.144f, -9.917f, -7.716f, -5.179f, -1.243f, 2.149f, - 5.127f, 7.308f, 9.098f, 10.659f, 12.330f, 15.720f, 19.565f, 21.039f, 20.844f, 22.654f, - 26.662f, 27.814f, 25.834f, 26.537f, 27.357f, 28.160f, 28.863f, 30.495f, 31.668f, 32.970f, - 34.436f, 36.075f, 37.586f, 39.266f, 41.370f, 43.920f, 45.258f, 50.084f, 47.001f, 46.493f, - 44.850f, 43.936f, 44.044f, 45.165f, 46.320f, 45.642f, 44.514f, 43.655f, 43.534f, 43.715f, - 42.759f, 40.832f, 38.833f, 36.922f, 34.526f, 33.176f, 32.986f, 30.260f, 25.874f, 22.480f, - 19.151f, 14.569f, 11.983f, 9.279f, 7.991f, 8.033f, 7.268f, 3.887f, 0.084f, -3.033f, - -6.410f, -8.221f, -9.514f,-12.145f,-17.883f,-26.089f,-26.579f,-22.107f,-26.892f,-30.300f, --32.638f,-35.044f,-37.679f,-39.119f,-39.993f,-41.755f,-42.903f,-43.223f,-43.700f,-42.830f, --43.372f,-41.997f,-36.292f,-34.601f,-34.095f,-33.942f,-32.393f,-28.403f,-24.624f,-22.029f, --20.486f,-19.775f,-16.827f,-14.769f, -9.855f, -8.346f, -8.618f, -8.488f, -9.151f,-10.146f, - -9.909f, -8.183f, -5.739f, -3.249f, -1.827f, -1.520f, -1.297f, -2.264f, -3.094f, -3.301f, - -4.183f, -5.786f, -6.555f, -4.387f, 0.251f, 5.885f, 13.440f, 19.625f, 20.481f, 20.675f, - 20.256f, 18.466f, 14.051f, 11.916f, 2.029f, 0.569f, 1.063f, -1.057f, -3.035f, -2.642f, - 0.420f, 2.822f, 3.504f, 4.575f, 6.093f, 6.429f, 6.795f, 8.618f, 9.047f, 9.106f, - 10.002f, 9.369f, 9.264f, 9.205f, 8.955f, 8.185f, 10.472f, 9.382f, 9.889f, 8.150f, - 7.254f, 7.508f, 6.884f, 6.545f, 7.057f, 8.009f, 8.934f, 9.998f, 11.507f, 13.899f, - 16.019f, 18.280f, 20.321f, 17.928f, 18.938f, 19.294f, 19.656f, 18.519f, 16.311f, 14.728f, - 13.606f -},{ --29.534f,-28.212f,-23.164f,-18.882f,-14.247f,-10.052f, -7.657f, -5.285f, -1.376f, 2.170f, - 5.052f, 7.281f, 8.795f, 10.134f, 12.303f, 15.899f, 19.028f, 21.004f, 21.935f, 23.366f, - 26.410f, 28.243f, 27.065f, 28.901f, 28.227f, 28.759f, 28.946f, 30.717f, 31.461f, 32.401f, - 34.398f, 36.043f, 37.601f, 39.257f, 41.414f, 44.018f, 45.061f, 46.548f, 47.243f, 46.147f, - 45.218f, 44.775f, 44.949f, 46.380f, 47.213f, 46.176f, 44.189f, 43.344f, 42.746f, 42.639f, - 43.013f, 41.192f, 39.142f, 36.725f, 34.687f, 32.871f, 31.428f, 28.235f, 24.966f, 21.988f, - 18.928f, 14.888f, 12.325f, 10.177f, 8.844f, 9.039f, 7.655f, 6.443f, 3.654f, 0.123f, - -2.206f, -2.871f, -7.154f,-13.120f,-17.663f,-23.013f,-25.482f,-27.321f,-28.059f,-31.223f, --33.384f,-37.016f,-39.639f,-40.348f,-40.966f,-42.039f,-43.625f,-44.925f,-45.387f,-44.924f, --45.018f,-44.108f,-40.355f,-37.364f,-36.852f,-36.250f,-34.423f,-31.084f,-28.057f,-24.644f, --22.862f,-21.244f,-18.965f,-17.970f,-13.512f,-12.188f,-11.807f,-12.281f,-14.086f,-14.789f, --15.181f,-13.296f, -9.883f, -7.509f, -5.438f, -4.993f, -4.729f, -5.785f, -6.578f, -6.915f, - -8.492f,-10.325f, -9.907f, -5.385f, 4.182f, 8.703f, 14.988f, 17.319f, 18.466f, 18.292f, - 19.194f, 11.180f, 11.506f, 4.940f, -2.073f, -2.133f, -1.481f, -3.511f, -5.029f, -5.434f, - -4.604f, -0.533f, 1.625f, 3.778f, 4.961f, 5.718f, 6.420f, 7.852f, 8.803f, 8.516f, - 8.474f, 9.142f, 8.839f, 8.968f, 8.897f, 7.565f, 7.839f, 7.806f, 9.418f, 7.649f, - 6.466f, 6.782f, 6.431f, 5.960f, 6.545f, 7.337f, 8.269f, 9.374f, 10.881f, 13.454f, - 15.546f, 18.083f, 19.964f, 17.534f, 18.678f, 19.079f, 19.499f, 18.356f, 16.239f, 14.708f, - 13.606f -},{ --29.534f,-28.227f,-23.259f,-18.997f,-14.341f,-10.146f, -7.553f, -5.273f, -1.465f, 2.296f, - 5.123f, 7.163f, 8.582f, 10.014f, 12.276f, 15.501f, 18.370f, 21.279f, 23.354f, 24.451f, - 26.877f, 27.529f, 28.687f, 30.834f, 29.440f, 29.547f, 29.445f, 30.724f, 31.430f, 32.247f, - 33.949f, 35.798f, 37.487f, 39.032f, 41.409f, 43.819f, 44.282f, 45.796f, 46.872f, 45.506f, - 45.257f, 45.077f, 45.361f, 46.152f, 46.733f, 45.757f, 44.154f, 43.399f, 42.843f, 42.593f, - 42.294f, 42.614f, 40.913f, 36.995f, 34.064f, 31.870f, 29.516f, 26.222f, 23.434f, 20.901f, - 17.670f, 14.852f, 11.982f, 9.299f, 6.850f, 6.852f, 5.851f, 2.854f, 3.336f, 2.588f, - 1.160f, -1.018f, -4.768f,-11.276f,-16.658f,-19.795f,-24.261f,-26.891f,-28.573f,-30.438f, --33.880f,-33.617f,-35.514f,-43.055f,-41.887f,-42.893f,-44.186f,-45.181f,-46.922f,-47.533f, --47.756f,-47.352f,-45.566f,-40.641f,-38.786f,-38.789f,-36.616f,-33.118f,-29.030f,-26.842f, --24.822f,-23.982f,-21.311f,-19.199f,-16.791f,-14.618f,-14.846f,-16.229f,-17.825f,-18.700f, --19.773f,-19.076f,-15.872f,-12.522f,-10.780f, -9.579f, -9.926f,-10.420f,-10.734f,-10.742f, --12.531f,-14.250f,-12.139f, -3.315f, 4.943f, 11.241f, 14.971f, 15.984f, 16.204f, 13.538f, - 10.657f, 5.424f, 9.426f, -1.051f, -5.499f, -4.279f, -3.783f, -5.539f, -8.507f, -6.938f, - -7.245f, -4.074f, -0.047f, 2.883f, 4.117f, 5.138f, 6.191f, 6.977f, 7.872f, 7.750f, - 7.338f, 8.112f, 8.392f, 9.374f, 8.911f, 7.061f, 6.174f, 7.332f, 8.659f, 6.777f, - 5.591f, 5.828f, 5.862f, 5.308f, 6.129f, 6.639f, 7.652f, 8.659f, 10.294f, 12.817f, - 14.986f, 17.815f, 19.400f, 17.066f, 18.412f, 18.871f, 19.329f, 18.191f, 16.166f, 14.687f, - 13.606f -},{ --29.534f,-28.241f,-23.357f,-19.098f,-14.425f,-10.196f, -7.434f, -5.172f, -1.454f, 2.493f, - 5.341f, 7.062f, 8.585f, 10.272f, 12.201f, 14.856f, 17.993f, 21.532f, 23.606f, 24.934f, - 26.607f, 26.456f, 29.791f, 31.995f, 30.181f, 30.371f, 29.206f, 30.111f, 31.343f, 32.194f, - 33.481f, 35.286f, 37.159f, 38.765f, 40.991f, 43.334f, 44.809f, 47.002f, 45.583f, 45.112f, - 45.185f, 44.956f, 44.727f, 44.632f, 44.653f, 44.824f, 44.107f, 43.582f, 42.776f, 42.123f, - 41.590f, 41.941f, 40.721f, 37.605f, 34.239f, 31.114f, 28.051f, 25.263f, 22.620f, 18.774f, - 16.392f, 14.549f, 12.074f, 8.040f, 4.757f, 2.898f, 2.331f, 1.018f, -0.252f, -0.880f, - -1.203f, -1.914f, -5.049f, -8.427f,-12.921f,-18.044f,-18.404f,-20.627f,-24.911f,-31.190f, --32.786f,-38.067f,-39.892f,-43.131f,-41.520f,-43.280f,-44.276f,-46.008f,-47.171f,-48.813f, --49.225f,-49.776f,-49.929f,-47.004f,-42.804f,-40.935f,-39.501f,-35.695f,-30.560f,-27.947f, --25.992f,-25.411f,-23.435f,-21.380f,-19.048f,-15.833f,-17.389f,-19.810f,-21.959f,-23.147f, --24.113f,-24.198f,-22.583f,-19.599f,-17.502f,-15.755f,-15.298f,-15.359f,-14.782f,-14.510f, --15.071f,-16.147f,-14.092f, -3.308f, 5.392f, 11.243f, 11.993f, 11.809f, 13.048f, 10.623f, - 3.137f, 4.660f, -1.376f, -6.393f, -7.392f, -6.251f, -5.663f, -8.324f,-11.823f, -8.645f, - -8.315f, -6.367f, -1.080f, 1.481f, 2.989f, 4.080f, 5.094f, 6.417f, 7.115f, 7.276f, - 6.953f, 7.458f, 7.757f, 9.298f, 8.036f, 6.593f, 6.313f, 7.508f, 7.539f, 5.557f, - 4.745f, 4.602f, 4.869f, 4.430f, 5.419f, 5.939f, 7.129f, 7.989f, 9.759f, 12.089f, - 14.422f, 17.435f, 18.736f, 16.576f, 18.136f, 18.673f, 19.147f, 18.028f, 16.093f, 14.667f, - 13.606f -},{ --29.534f,-28.256f,-23.458f,-19.184f,-14.493f,-10.204f, -7.318f, -5.021f, -1.333f, 2.678f, - 5.562f, 7.050f, 8.709f, 10.471f, 12.261f, 14.941f, 18.120f, 21.594f, 23.650f, 25.213f, - 26.208f, 27.265f, 31.976f, 33.005f, 30.178f, 30.513f, 28.779f, 29.413f, 30.957f, 31.859f, - 33.084f, 34.740f, 36.588f, 38.304f, 40.360f, 41.886f, 43.322f, 45.143f, 44.993f, 44.605f, - 44.876f, 44.999f, 44.554f, 44.600f, 47.419f, 44.489f, 43.915f, 43.661f, 42.751f, 41.608f, - 40.969f, 41.241f, 40.916f, 38.699f, 34.498f, 31.117f, 27.612f, 24.673f, 21.446f, 17.533f, - 14.934f, 13.375f, 10.620f, 6.332f, 3.352f, 1.268f, -0.748f, -2.888f, -5.310f, -6.095f, - -6.641f, -6.863f, -7.032f, -9.143f,-10.283f,-13.726f,-15.688f,-18.313f,-24.050f,-30.456f, --33.197f,-34.567f,-37.521f,-38.502f,-41.763f,-43.094f,-44.221f,-45.848f,-47.423f,-48.425f, --49.549f,-50.778f,-51.348f,-49.509f,-46.861f,-46.408f,-42.027f,-39.071f,-34.192f,-30.473f, --28.290f,-27.710f,-25.809f,-23.461f,-21.517f,-17.942f,-19.302f,-21.895f,-25.308f,-26.843f, --28.025f,-28.013f,-27.327f,-25.813f,-24.150f,-22.180f,-20.990f,-19.967f,-18.624f,-18.237f, --17.356f,-15.800f,-12.388f, -0.104f, 6.095f, 9.295f, 10.020f, 7.863f, 4.931f, -0.492f, - -7.695f, -6.319f, -7.977f, -7.770f, -8.958f, -8.902f, -7.998f,-11.148f,-12.915f,-11.655f, --10.037f, -8.435f, -2.524f, 0.172f, 1.561f, 2.505f, 3.908f, 5.132f, 5.898f, 6.738f, - 6.847f, 6.956f, 6.612f, 8.245f, 6.773f, 6.452f, 6.558f, 7.222f, 6.025f, 4.489f, - 3.860f, 3.481f, 3.696f, 3.396f, 4.432f, 5.202f, 6.563f, 7.452f, 9.216f, 11.375f, - 13.911f, 16.961f, 18.121f, 16.140f, 17.851f, 18.481f, 18.958f, 17.872f, 16.021f, 14.647f, - 13.606f -},{ --29.534f,-28.270f,-23.561f,-19.256f,-14.546f,-10.180f, -7.208f, -4.856f, -1.136f, 2.787f, - 5.635f, 7.163f, 8.794f, 10.360f, 12.602f, 15.907f, 18.552f, 21.364f, 24.289f, 25.706f, - 26.665f, 29.431f, 35.043f, 33.821f, 30.889f, 30.106f, 28.749f, 29.196f, 30.669f, 31.628f, - 32.927f, 34.177f, 36.278f, 37.762f, 39.694f, 40.810f, 42.965f, 44.213f, 44.436f, 44.354f, - 44.541f, 44.975f, 44.910f, 46.184f, 51.917f, 44.892f, 43.542f, 43.280f, 42.081f, 40.996f, - 40.493f, 40.262f, 40.554f, 38.520f, 34.527f, 30.898f, 27.533f, 24.079f, 20.799f, 17.158f, - 14.436f, 11.130f, 7.991f, 4.911f, 2.482f, 0.768f, -1.814f, -4.217f, -6.696f, -9.080f, --11.206f,-12.877f,-13.381f,-12.770f,-14.040f,-14.761f,-16.316f,-20.562f,-26.311f,-30.344f, --32.479f,-34.386f,-36.194f,-38.646f,-40.838f,-42.761f,-44.190f,-45.374f,-46.812f,-48.509f, --48.937f,-49.266f,-49.658f,-50.201f,-49.067f,-48.652f,-48.502f,-43.523f,-38.655f,-34.465f, --32.070f,-27.935f,-28.455f,-25.906f,-24.073f,-21.102f,-21.086f,-22.782f,-26.825f,-29.328f, --30.885f,-31.342f,-30.836f,-29.788f,-28.219f,-26.843f,-26.188f,-24.735f,-23.139f,-20.572f, --17.681f,-11.346f, -3.974f, 4.108f, 5.902f, 6.475f, 5.497f, 4.637f, -7.703f,-11.868f, --15.891f,-15.991f,-11.229f, -8.968f,-10.584f,-10.968f,-10.426f,-13.687f,-14.187f,-13.591f, --11.801f,-10.247f, -4.185f, -1.011f, 0.407f, 1.604f, 2.607f, 3.753f, 5.131f, 5.689f, - 6.032f, 6.178f, 5.519f, 6.126f, 5.733f, 6.356f, 5.744f, 5.885f, 4.626f, 3.798f, - 3.015f, 2.791f, 2.931f, 2.555f, 3.646f, 4.464f, 5.867f, 6.981f, 8.625f, 10.714f, - 13.438f, 16.458f, 17.683f, 15.825f, 17.561f, 18.291f, 18.767f, 17.729f, 15.950f, 14.626f, - 13.606f -},{ --29.534f,-28.284f,-23.663f,-19.317f,-14.583f,-10.137f, -7.096f, -4.696f, -0.915f, 2.846f, - 5.582f, 7.433f, 8.847f, 10.203f, 13.080f, 16.724f, 18.754f, 20.833f, 24.282f, 25.745f, - 27.406f, 31.048f, 36.330f, 35.690f, 33.133f, 30.102f, 28.943f, 29.207f, 30.555f, 31.477f, - 32.761f, 34.083f, 35.700f, 37.371f, 39.230f, 40.781f, 44.195f, 44.857f, 44.329f, 44.337f, - 44.466f, 44.856f, 44.876f, 47.874f, 50.171f, 44.569f, 43.164f, 42.604f, 41.604f, 40.885f, - 40.080f, 39.882f, 39.463f, 37.705f, 34.206f, 30.691f, 27.184f, 23.597f, 20.237f, 16.898f, - 13.585f, 10.184f, 7.185f, 4.202f, 2.021f, 0.608f, -1.815f, -4.644f, -6.665f, -9.197f, --11.251f,-13.315f,-15.304f,-17.019f,-17.586f,-19.425f,-21.902f,-25.500f,-28.525f,-30.681f, --30.190f,-33.971f,-36.926f,-38.188f,-40.360f,-42.082f,-43.787f,-44.867f,-46.313f,-48.051f, --49.168f,-49.990f,-50.323f,-51.695f,-52.660f,-52.663f,-52.086f,-51.120f,-47.127f,-41.718f, --36.516f,-33.254f,-30.413f,-28.087f,-26.305f,-23.966f,-22.699f,-23.773f,-27.731f,-31.364f, --32.930f,-33.140f,-32.774f,-31.814f,-30.803f,-29.863f,-28.480f,-27.083f,-25.661f,-21.075f, --13.200f, -5.293f, -1.135f, 3.136f, 3.915f, 1.294f, 4.962f, -2.919f,-11.902f,-17.313f, --20.601f,-16.263f,-11.810f,-10.022f,-11.722f,-12.476f,-12.435f,-15.269f,-15.811f,-15.283f, --13.562f,-11.463f, -5.724f, -2.094f, 0.022f, 0.655f, 0.966f, 2.106f, 3.775f, 4.616f, - 4.859f, 5.153f, 3.714f, 4.107f, 4.751f, 5.378f, 4.229f, 3.987f, 3.837f, 3.135f, - 2.412f, 2.177f, 2.576f, 2.128f, 3.180f, 3.832f, 5.199f, 6.469f, 8.024f, 10.092f, - 12.939f, 15.993f, 17.470f, 15.657f, 17.273f, 18.098f, 18.579f, 17.600f, 15.880f, 14.605f, - 13.606f -},{ --29.534f,-28.297f,-23.765f,-19.369f,-14.607f,-10.091f, -6.970f, -4.535f, -0.703f, 2.976f, - 5.634f, 7.890f, 9.051f, 10.391f, 13.426f, 16.594f, 18.440f, 20.243f, 22.892f, 24.990f, - 28.035f, 32.532f, 36.854f, 38.580f, 34.267f, 30.317f, 29.145f, 29.159f, 30.370f, 31.334f, - 32.739f, 34.176f, 35.270f, 36.919f, 38.706f, 40.883f, 44.714f, 43.020f, 43.284f, 44.033f, - 44.343f, 44.580f, 44.523f, 47.603f, 47.302f, 43.762f, 42.848f, 42.256f, 40.472f, 39.963f, - 38.797f, 37.546f, 37.344f, 36.245f, 33.963f, 30.432f, 26.754f, 22.973f, 19.607f, 16.596f, - 13.623f, 10.343f, 6.937f, 3.712f, 1.961f, 0.730f, -1.361f, -4.018f, -6.530f, -8.774f, --11.308f,-13.570f,-15.820f,-17.478f,-19.352f,-21.683f,-23.746f,-26.202f,-28.703f,-30.415f, --32.430f,-33.776f,-36.261f,-38.323f,-40.366f,-41.775f,-44.105f,-45.486f,-47.305f,-48.442f, --49.270f,-50.387f,-50.861f,-50.847f,-54.319f,-54.008f,-53.493f,-53.357f,-51.651f,-48.516f, --44.219f,-40.175f,-34.328f,-31.252f,-29.289f,-26.846f,-25.776f,-25.137f,-28.915f,-32.286f, --34.250f,-34.652f,-33.895f,-33.241f,-32.567f,-31.067f,-30.199f,-28.749f,-24.016f,-14.869f, - -6.978f, -3.041f, -1.414f, 1.378f, -0.558f, -1.998f, 0.894f, -7.336f,-12.491f,-16.910f, --18.034f,-11.441f,-10.923f,-11.745f,-12.605f,-14.077f,-14.755f,-16.382f,-16.913f,-16.019f, --14.870f,-12.846f, -7.175f, -2.767f, -1.154f, -0.263f, -0.575f, 0.476f, 2.344f, 3.552f, - 3.816f, 3.470f, 1.886f, 2.411f, 3.643f, 3.543f, 2.659f, 2.651f, 3.008f, 2.111f, - 1.894f, 1.499f, 2.338f, 1.958f, 2.635f, 3.284f, 4.776f, 5.914f, 7.485f, 9.504f, - 12.384f, 15.604f, 17.432f, 15.616f, 16.992f, 17.898f, 18.397f, 17.491f, 15.812f, 14.583f, - 13.606f -},{ --29.534f,-28.310f,-23.865f,-19.418f,-14.622f,-10.053f, -6.823f, -4.353f, -0.494f, 3.312f, - 6.080f, 8.521f, 9.524f, 10.901f, 13.512f, 15.913f, 17.875f, 19.721f, 21.464f, 24.032f, - 28.396f, 33.533f, 38.369f, 40.727f, 35.252f, 30.790f, 28.792f, 29.093f, 30.393f, 31.368f, - 32.864f, 34.127f, 35.174f, 36.212f, 38.517f, 40.609f, 42.582f, 43.049f, 43.441f, 43.913f, - 43.972f, 44.203f, 44.083f, 45.400f, 44.427f, 43.201f, 42.829f, 41.937f, 40.227f, 39.140f, - 37.746f, 36.578f, 35.864f, 35.616f, 33.380f, 30.843f, 27.020f, 23.499f, 19.911f, 16.754f, - 14.525f, 11.228f, 6.841f, 3.628f, 1.852f, 0.586f, -1.137f, -2.923f, -5.782f, -8.952f, --11.171f,-13.405f,-15.659f,-17.516f,-19.722f,-22.314f,-24.465f,-27.204f,-29.567f,-31.264f, --32.654f,-35.927f,-37.097f,-39.090f,-39.039f,-41.361f,-44.041f,-46.327f,-47.989f,-49.096f, --50.034f,-50.927f,-52.064f,-52.513f,-52.219f,-54.406f,-54.728f,-54.190f,-52.654f,-51.051f, --47.700f,-44.040f,-36.869f,-34.173f,-31.011f,-29.138f,-28.683f,-28.492f,-32.067f,-34.320f, --35.340f,-35.230f,-34.316f,-33.491f,-33.131f,-32.310f,-31.243f,-27.982f,-20.640f,-12.366f, - -8.173f, -3.668f, -1.699f, -0.601f, -2.591f, -4.580f, -1.862f, -9.472f,-13.231f,-17.996f, --15.373f,-11.910f,-11.991f,-13.780f,-14.779f,-16.175f,-16.119f,-17.617f,-18.108f,-16.107f, --15.055f,-14.239f, -8.235f, -4.022f, -2.938f, -1.967f, -2.366f, -1.420f, 0.799f, 2.227f, - 3.146f, 2.599f, 0.766f, 1.304f, 2.293f, 1.839f, 1.503f, 1.932f, 1.727f, 1.109f, - 1.067f, 1.105f, 2.201f, 1.883f, 1.938f, 2.651f, 4.559f, 5.406f, 7.036f, 8.993f, - 11.826f, 15.274f, 17.451f, 15.643f, 16.723f, 17.690f, 18.226f, 17.402f, 15.746f, 14.561f, - 13.606f -},{ --29.534f,-28.322f,-23.963f,-19.468f,-14.634f,-10.034f, -6.660f, -4.133f, -0.252f, 3.892f, - 7.005f, 9.223f, 10.125f, 11.318f, 13.357f, 15.412f, 17.427f, 19.181f, 21.082f, 23.500f, - 27.868f, 32.256f, 38.374f, 41.107f, 36.953f, 31.126f, 28.822f, 29.196f, 30.511f, 31.491f, - 32.768f, 34.150f, 35.086f, 36.263f, 38.174f, 39.741f, 41.400f, 41.964f, 43.024f, 43.123f, - 43.430f, 43.660f, 43.855f, 43.528f, 43.209f, 42.752f, 41.875f, 40.553f, 38.939f, 37.190f, - 36.109f, 35.056f, 33.721f, 33.029f, 32.872f, 30.329f, 27.781f, 23.718f, 20.412f, 17.604f, - 14.865f, 11.355f, 7.507f, 4.183f, 2.337f, 0.594f, -0.752f, -2.569f, -5.069f, -8.144f, --10.702f,-13.340f,-15.781f,-17.828f,-19.914f,-22.578f,-25.087f,-27.876f,-30.008f,-31.964f, --33.364f,-35.422f,-37.899f,-39.210f,-41.172f,-43.127f,-43.612f,-46.116f,-47.961f,-49.507f, --50.660f,-51.800f,-52.594f,-52.543f,-53.388f,-53.397f,-54.210f,-56.069f,-53.792f,-51.842f, --49.528f,-46.813f,-40.523f,-36.768f,-33.698f,-31.622f,-30.876f,-32.009f,-34.441f,-36.191f, --36.372f,-35.917f,-34.430f,-33.236f,-33.170f,-32.932f,-31.976f,-25.591f,-18.940f,-13.467f, - -7.788f, -4.698f, -2.778f, -3.641f, -5.479f, -7.340f, -3.983f,-10.146f,-15.984f,-20.606f, --15.610f,-12.953f,-13.893f,-16.748f,-16.424f,-18.239f,-17.794f,-19.173f,-19.294f,-16.429f, --15.518f,-15.323f, -9.317f, -5.915f, -5.363f, -3.888f, -4.614f, -3.353f, -0.626f, 1.190f, - 1.587f, 1.217f, -0.365f, 1.186f, 0.881f, 0.680f, 1.004f, 1.271f, 0.666f, 0.454f, - -0.084f, 0.795f, 1.873f, 1.899f, 1.572f, 1.934f, 4.279f, 4.993f, 6.645f, 8.612f, - 11.373f, 14.962f, 17.408f, 15.669f, 16.467f, 17.474f, 18.069f, 17.335f, 15.682f, 14.539f, - 13.606f -},{ --29.534f,-28.334f,-24.057f,-19.523f,-14.648f,-10.037f, -6.503f, -3.877f, 0.053f, 4.606f, - 8.163f, 9.820f, 10.517f, 11.314f, 12.976f, 15.085f, 17.144f, 18.852f, 21.065f, 23.475f, - 26.692f, 30.034f, 36.042f, 38.981f, 35.986f, 30.475f, 28.984f, 29.660f, 30.923f, 31.472f, - 32.583f, 34.013f, 35.046f, 36.318f, 37.753f, 39.232f, 40.537f, 41.454f, 42.389f, 42.829f, - 42.827f, 43.016f, 43.259f, 43.073f, 42.652f, 41.916f, 40.664f, 39.029f, 37.366f, 36.418f, - 34.697f, 33.107f, 32.330f, 31.368f, 30.658f, 30.357f, 28.538f, 24.919f, 21.053f, 18.108f, - 14.723f, 10.881f, 7.737f, 4.902f, 2.616f, 1.111f, -0.702f, -2.622f, -3.848f, -1.082f, --10.763f,-13.736f,-15.577f,-17.367f,-19.386f,-21.960f,-25.113f,-27.378f,-29.949f,-32.231f, --34.182f,-36.060f,-38.398f,-40.490f,-42.137f,-41.229f,-41.576f,-47.266f,-49.195f,-50.654f, --51.707f,-52.752f,-53.873f,-53.814f,-53.588f,-53.649f,-53.606f,-54.441f,-54.937f,-53.153f, --50.829f,-47.594f,-42.681f,-39.790f,-36.175f,-34.035f,-33.372f,-33.860f,-34.230f,-36.632f, --36.503f,-36.040f,-34.530f,-32.524f,-32.679f,-33.122f,-33.318f,-26.400f,-19.361f,-11.135f, - -6.458f, -5.040f, -5.111f, -5.431f, -7.474f, -9.115f, -7.606f,-10.183f,-17.355f,-19.542f, --15.284f,-13.630f,-16.555f,-18.592f,-17.881f,-20.177f,-19.909f,-20.398f,-20.389f,-18.706f, --16.929f,-16.707f,-11.680f, -8.583f, -7.543f, -6.179f, -6.014f, -4.664f, -1.685f, 0.123f, - 0.349f, -0.458f, -0.786f, 0.755f, -0.018f, -0.103f, 0.495f, 0.475f, -0.011f, -0.275f, - -1.118f, 0.164f, 0.781f, 1.742f, 1.694f, 1.527f, 3.769f, 4.618f, 6.269f, 8.354f, - 11.096f, 14.637f, 17.242f, 15.647f, 16.220f, 17.254f, 17.926f, 17.288f, 15.620f, 14.517f, - 13.606f -},{ --29.534f,-28.346f,-24.147f,-19.589f,-14.670f,-10.062f, -6.382f, -3.611f, 0.416f, 5.238f, - 9.080f, 10.140f, 10.450f, 10.922f, 12.405f, 14.589f, 16.934f, 18.977f, 20.675f, 23.406f, - 26.017f, 29.509f, 34.427f, 35.391f, 33.664f, 30.224f, 29.057f, 30.060f, 31.096f, 31.429f, - 32.339f, 33.620f, 34.951f, 36.182f, 37.454f, 38.904f, 40.320f, 41.065f, 41.574f, 41.434f, - 42.052f, 42.429f, 42.589f, 42.347f, 42.205f, 41.210f, 39.372f, 37.878f, 36.383f, 35.127f, - 33.408f, 31.428f, 30.619f, 29.582f, 28.854f, 28.630f, 27.080f, 25.384f, 21.871f, 18.062f, - 13.975f, 10.171f, 7.609f, 5.193f, 2.689f, 1.101f, -0.073f, -2.665f, -4.023f, -2.046f, --11.689f,-14.986f,-16.086f,-17.500f,-19.942f,-22.199f,-25.298f,-27.535f,-30.827f,-33.121f, --34.890f,-36.762f,-38.854f,-41.645f,-43.421f,-41.306f,-43.800f,-49.437f,-51.123f,-52.706f, --52.893f,-53.800f,-55.300f,-55.791f,-55.091f,-54.836f,-53.640f,-53.164f,-52.022f,-50.825f, --50.226f,-47.961f,-44.660f,-42.392f,-38.751f,-36.528f,-36.154f,-35.650f,-34.795f,-36.035f, --35.424f,-35.264f,-35.050f,-32.687f,-29.779f,-28.215f,-31.034f,-30.069f,-20.790f, -7.978f, - -5.862f, -6.561f, -6.482f, -7.875f, -9.706f,-10.778f,-10.088f,-10.482f,-15.688f,-19.237f, --17.660f,-17.307f,-19.980f,-20.314f,-20.210f,-22.106f,-22.027f,-21.392f,-21.503f,-21.280f, --19.619f,-18.095f,-14.282f,-11.223f,-10.227f, -8.432f, -6.626f, -5.014f, -2.511f, -1.198f, - -1.093f, -2.151f, -1.360f, -0.318f, -0.531f, -0.445f, -0.568f, -0.434f, -0.635f, -1.208f, - -1.694f, -0.520f, -0.846f, 0.936f, 1.734f, 1.815f, 3.122f, 4.187f, 5.876f, 8.126f, - 10.954f, 14.304f, 16.978f, 15.567f, 15.977f, 17.033f, 17.798f, 17.259f, 15.561f, 14.494f, - 13.606f -},{ --29.534f,-28.357f,-24.233f,-19.669f,-14.705f,-10.104f, -6.328f, -3.384f, 0.786f, 5.595f, - 9.363f, 10.102f, 9.965f, 10.356f, 11.788f, 14.058f, 16.827f, 19.045f, 20.267f, 22.859f, - 25.924f, 29.927f, 34.218f, 33.043f, 32.331f, 29.971f, 29.489f, 30.342f, 31.125f, 31.464f, - 32.392f, 33.614f, 34.549f, 35.661f, 37.236f, 38.283f, 39.357f, 40.715f, 40.726f, 40.863f, - 40.969f, 41.379f, 41.658f, 41.436f, 41.158f, 40.152f, 38.504f, 36.882f, 35.365f, 33.586f, - 31.993f, 29.976f, 28.608f, 27.648f, 26.848f, 26.222f, 24.923f, 23.574f, 20.673f, 17.748f, - 13.730f, 9.636f, 7.055f, 4.907f, 2.623f, 0.881f, -0.730f, -2.825f, -5.985f, -9.648f, --12.423f,-12.322f,-16.888f,-18.765f,-20.703f,-22.978f,-25.657f,-28.969f,-31.848f,-34.082f, --36.145f,-38.258f,-40.744f,-43.079f,-44.356f,-44.408f,-48.907f,-51.196f,-53.113f,-54.413f, --55.396f,-55.727f,-56.472f,-57.140f,-57.047f,-56.287f,-55.374f,-54.019f,-52.874f,-51.236f, --50.220f,-49.178f,-46.402f,-43.892f,-41.444f,-40.119f,-39.512f,-39.140f,-35.560f,-34.719f, --33.307f,-34.146f,-33.136f,-29.953f,-26.614f,-26.930f,-26.165f,-27.843f,-19.159f, -7.234f, - -7.028f, -8.552f,-10.044f,-10.346f,-11.080f,-11.933f,-12.170f,-11.459f,-14.951f,-21.494f, --21.009f,-21.345f,-23.163f,-22.711f,-22.967f,-23.817f,-24.293f,-22.137f,-21.441f,-21.508f, --20.910f,-18.376f,-14.039f,-11.642f,-10.766f, -9.680f, -6.728f, -5.060f, -3.363f, -2.428f, - -2.479f, -3.091f, -2.284f, -1.662f, -1.967f, -1.598f, -1.759f, -1.241f, -1.283f, -1.980f, - -1.776f, -1.109f, -2.057f, -0.431f, 1.168f, 2.528f, 2.520f, 3.673f, 5.438f, 7.812f, - 10.809f, 13.996f, 16.692f, 15.450f, 15.734f, 16.813f, 17.685f, 17.243f, 15.503f, 14.470f, - 13.606f -},{ --29.534f,-28.368f,-24.314f,-19.765f,-14.758f,-10.158f, -6.357f, -3.243f, 1.080f, 5.623f, - 8.962f, 9.739f, 9.350f, 9.786f, 11.284f, 13.779f, 16.879f, 18.698f, 20.175f, 22.439f, - 25.559f, 29.375f, 33.521f, 32.170f, 31.037f, 29.088f, 29.691f, 30.510f, 30.996f, 31.641f, - 32.534f, 33.548f, 34.562f, 35.581f, 36.855f, 37.945f, 38.272f, 39.433f, 39.821f, 40.117f, - 40.293f, 40.542f, 40.670f, 40.340f, 39.834f, 38.726f, 37.160f, 36.262f, 34.677f, 32.493f, - 30.624f, 28.909f, 27.070f, 25.731f, 25.180f, 24.739f, 23.749f, 22.123f, 20.956f, 18.831f, - 13.975f, 9.863f, 6.870f, 4.074f, 2.300f, 0.383f, -1.633f, -3.804f, -5.856f, -9.499f, - -6.875f, -9.636f,-16.768f,-19.287f,-21.890f,-24.336f,-26.898f,-30.166f,-33.455f,-35.653f, --38.286f,-40.137f,-42.407f,-43.757f,-45.144f,-48.705f,-50.864f,-53.103f,-55.086f,-56.289f, --57.721f,-58.203f,-58.428f,-59.212f,-58.618f,-57.261f,-56.624f,-55.736f,-54.007f,-52.578f, --50.753f,-51.612f,-50.635f,-47.171f,-45.364f,-44.670f,-43.759f,-42.497f,-39.878f,-36.685f, --35.484f,-32.945f,-31.639f,-27.549f,-29.918f,-28.699f,-22.012f,-19.779f,-17.860f,-11.159f, --13.407f,-14.314f,-12.075f,-11.640f,-12.358f,-14.442f,-13.229f,-13.530f,-19.156f,-23.967f, --24.103f,-24.671f,-25.279f,-25.224f,-25.445f,-25.982f,-25.865f,-22.907f,-20.388f,-19.875f, --18.282f,-16.428f,-12.503f,-11.325f, -9.983f, -9.461f, -6.984f, -5.842f, -4.196f, -2.954f, - -3.055f, -3.795f, -3.499f, -2.347f, -2.919f, -2.903f, -2.640f, -2.023f, -2.005f, -2.517f, - -1.638f, -1.973f, -2.487f, -1.663f, 0.121f, 2.805f, 2.081f, 3.133f, 4.925f, 7.368f, - 10.517f, 13.737f, 16.448f, 15.327f, 15.486f, 16.596f, 17.585f, 17.237f, 15.447f, 14.446f, - 13.606f -},{ --29.534f,-28.378f,-24.390f,-19.877f,-14.832f,-10.215f, -6.460f, -3.214f, 1.228f, 5.417f, - 8.199f, 9.160f, 8.904f, 9.380f, 10.936f, 13.516f, 17.014f, 18.875f, 20.090f, 22.676f, - 25.267f, 28.274f, 32.206f, 31.292f, 29.722f, 28.603f, 29.592f, 30.434f, 30.834f, 31.897f, - 32.681f, 33.604f, 34.403f, 35.464f, 36.301f, 37.259f, 37.901f, 37.831f, 38.742f, 39.240f, - 39.256f, 39.710f, 39.660f, 39.227f, 38.455f, 37.141f, 35.724f, 34.894f, 33.442f, 31.418f, - 29.638f, 27.773f, 26.381f, 25.080f, 23.765f, 23.152f, 22.005f, 21.415f, 20.761f, 18.049f, - 15.358f, 10.737f, 6.819f, 3.683f, 2.048f, 0.428f, -1.689f, -3.746f, -5.343f, -8.218f, --12.313f,-12.753f,-16.312f,-16.871f,-20.462f,-27.158f,-29.030f,-31.675f,-34.769f,-37.336f, --39.475f,-41.084f,-42.577f,-45.459f,-48.685f,-51.286f,-53.542f,-55.358f,-57.113f,-58.733f, --60.083f,-60.824f,-61.198f,-61.068f,-60.573f,-59.552f,-58.489f,-56.977f,-55.491f,-54.697f, --54.244f,-54.230f,-53.604f,-52.000f,-50.578f,-50.386f,-47.022f,-44.266f,-43.653f,-42.018f, --38.660f,-35.051f,-31.600f,-29.770f,-35.644f,-30.183f,-23.677f,-21.905f,-19.725f,-16.904f, --15.810f,-13.880f,-12.219f,-12.404f,-13.500f,-16.341f,-15.265f,-16.742f,-25.725f,-26.711f, --26.270f,-26.684f,-26.956f,-26.728f,-27.341f,-27.790f,-27.184f,-25.346f,-21.737f,-18.612f, --17.158f,-15.505f,-13.454f,-11.799f, -9.605f, -8.542f, -7.663f, -6.407f, -4.808f, -3.040f, - -2.634f, -2.942f, -2.669f, -1.889f, -1.580f, -2.044f, -3.545f, -2.800f, -2.544f, -3.129f, - -1.957f, -3.023f, -2.683f, -2.384f, -0.988f, 2.082f, 1.877f, 2.635f, 4.358f, 6.871f, - 10.033f, 13.505f, 16.245f, 15.217f, 15.231f, 16.380f, 17.495f, 17.233f, 15.393f, 14.422f, - 13.606f -},{ --29.534f,-28.388f,-24.461f,-20.006f,-14.927f,-10.268f, -6.604f, -3.281f, 1.204f, 5.141f, - 7.517f, 8.497f, 8.709f, 9.363f, 10.726f, 12.879f, 17.082f, 20.240f, 19.888f, 22.634f, - 25.739f, 27.667f, 31.135f, 30.397f, 28.360f, 27.665f, 29.073f, 30.184f, 30.727f, 31.864f, - 32.551f, 33.334f, 34.060f, 35.101f, 35.666f, 36.717f, 37.710f, 37.306f, 37.848f, 38.423f, - 38.223f, 38.624f, 38.457f, 37.664f, 36.792f, 35.605f, 34.170f, 33.350f, 32.111f, 30.185f, - 28.655f, 27.042f, 25.527f, 24.574f, 23.569f, 22.269f, 20.913f, 19.335f, 18.544f, 17.752f, - 14.922f, 11.454f, 7.222f, 3.862f, 1.885f, 0.493f, -1.626f, -3.977f, -5.459f, -7.445f, --10.458f,-13.063f,-16.494f,-17.437f,-19.341f,-23.788f,-29.118f,-34.081f,-36.541f,-38.192f, --38.094f,-40.308f,-44.458f,-48.641f,-51.340f,-53.947f,-55.843f,-57.878f,-60.110f,-61.738f, --62.749f,-63.573f,-63.488f,-63.183f,-62.669f,-61.658f,-60.221f,-59.064f,-58.346f,-58.230f, --58.224f,-58.008f,-56.849f,-56.743f,-54.346f,-53.580f,-52.462f,-49.706f,-47.753f,-43.200f, --42.720f,-40.368f,-36.154f,-37.645f,-37.495f,-31.810f,-25.641f,-23.630f,-20.464f,-17.279f, --15.055f,-14.771f,-13.916f,-14.135f,-17.196f,-16.827f,-18.251f,-23.099f,-28.906f,-29.351f, --28.329f,-28.207f,-27.746f,-27.690f,-28.908f,-28.946f,-28.767f,-26.605f,-24.239f,-21.778f, --19.360f,-18.272f,-16.251f,-14.538f,-11.909f, -9.512f, -7.724f, -7.041f, -4.864f, -4.763f, - -3.866f, -3.351f, -3.062f, -3.265f, -1.684f, -1.065f, -4.951f, -3.634f, -2.992f, -4.036f, - -2.966f, -3.868f, -3.199f, -2.859f, -1.915f, 0.688f, 1.921f, 2.198f, 3.830f, 6.441f, - 9.427f, 13.232f, 16.004f, 15.105f, 14.970f, 16.164f, 17.414f, 17.226f, 15.339f, 14.396f, - 13.606f -},{ --29.534f,-28.397f,-24.527f,-20.149f,-15.044f,-10.313f, -6.738f, -3.392f, 1.042f, 4.906f, - 7.164f, 7.858f, 8.595f, 9.763f, 10.702f, 12.084f, 17.048f, 21.488f, 19.829f, 21.654f, - 25.829f, 27.243f, 30.159f, 29.585f, 27.127f, 26.722f, 28.517f, 29.763f, 30.338f, 31.390f, - 32.176f, 33.106f, 33.955f, 34.638f, 35.498f, 36.202f, 37.090f, 37.289f, 37.071f, 37.993f, - 37.471f, 37.818f, 37.567f, 36.528f, 35.297f, 34.147f, 32.982f, 32.277f, 31.004f, 29.362f, - 27.846f, 26.263f, 25.082f, 24.224f, 23.561f, 22.093f, 20.347f, 18.554f, 16.419f, 15.158f, - 13.669f, 10.489f, 8.095f, 4.249f, 1.732f, 0.482f, -1.484f, -3.763f, -6.006f, -7.599f, --10.952f,-14.080f,-16.490f,-20.040f,-21.256f,-23.752f,-26.918f,-31.284f,-34.424f,-36.180f, --38.977f,-44.286f,-47.409f,-51.039f,-53.956f,-56.273f,-58.690f,-61.270f,-63.215f,-64.281f, --65.524f,-65.831f,-65.849f,-65.580f,-65.101f,-63.939f,-62.454f,-62.387f,-62.227f,-61.926f, --62.220f,-61.545f,-60.390f,-58.735f,-57.545f,-56.723f,-55.936f,-54.978f,-53.802f,-49.995f, --47.845f,-43.019f,-41.055f,-39.531f,-39.131f,-32.266f,-27.786f,-24.611f,-20.992f,-17.226f, --18.535f,-19.094f,-17.674f,-19.341f,-20.375f,-21.349f,-22.887f,-28.105f,-30.796f,-31.153f, --30.356f,-30.199f,-29.330f,-29.399f,-30.163f,-30.078f,-30.064f,-28.595f,-26.904f,-24.293f, --22.293f,-20.463f,-17.969f,-16.586f,-14.147f,-12.248f,-10.240f, -9.754f, -8.383f, -8.503f, - -8.109f, -6.376f, -6.149f, -5.758f, -4.098f, -1.867f, -6.142f, -5.067f, -3.904f, -4.794f, - -4.077f, -4.724f, -4.003f, -3.289f, -2.586f, -0.638f, 2.026f, 1.800f, 3.444f, 6.107f, - 8.821f, 12.836f, 15.611f, 14.950f, 14.710f, 15.945f, 17.338f, 17.209f, 15.286f, 14.371f, - 13.606f -},{ --29.534f,-28.406f,-24.589f,-20.304f,-15.180f,-10.348f, -6.806f, -3.474f, 0.823f, 4.711f, - 7.034f, 7.301f, 8.316f, 10.174f, 10.902f, 11.734f, 17.049f, 21.297f, 19.888f, 21.168f, - 25.164f, 27.067f, 29.707f, 28.838f, 26.255f, 26.579f, 28.334f, 29.442f, 30.160f, 31.015f, - 31.533f, 32.606f, 33.731f, 34.518f, 35.142f, 35.702f, 36.194f, 36.311f, 36.760f, 37.437f, - 37.019f, 38.157f, 36.910f, 35.507f, 34.452f, 33.032f, 32.414f, 31.511f, 29.947f, 28.514f, - 27.316f, 25.890f, 24.864f, 24.321f, 23.603f, 22.084f, 20.014f, 17.972f, 16.114f, 14.115f, - 12.907f, 10.843f, 8.866f, 5.264f, 1.781f, 0.282f, -1.384f, -3.805f, -6.084f, -8.413f, --11.214f,-14.763f,-17.296f,-20.750f,-24.594f,-27.559f,-30.573f,-34.035f,-36.409f,-37.864f, --41.541f,-46.356f,-49.918f,-53.394f,-56.312f,-58.929f,-61.316f,-63.870f,-65.759f,-67.162f, --67.895f,-68.247f,-68.303f,-68.202f,-67.168f,-66.439f,-66.255f,-66.445f,-66.282f,-66.464f, --65.982f,-64.518f,-63.030f,-61.532f,-59.694f,-58.007f,-56.370f,-54.604f,-52.691f,-50.044f, --49.320f,-46.449f,-41.935f,-43.417f,-41.852f,-33.813f,-29.902f,-27.200f,-24.686f,-22.419f, --21.522f,-21.080f,-20.511f,-20.548f,-21.111f,-22.110f,-26.659f,-30.517f,-32.656f,-33.055f, --32.541f,-31.865f,-31.466f,-31.513f,-32.212f,-31.597f,-31.004f,-30.329f,-28.782f,-26.508f, --24.280f,-22.740f,-20.747f,-18.637f,-16.775f,-14.148f,-13.267f,-12.385f,-11.377f,-10.372f, --10.246f, -8.773f, -8.677f, -8.116f, -6.056f, -3.810f, -6.034f, -6.610f, -4.993f, -4.995f, - -5.141f, -5.818f, -4.744f, -3.567f, -3.024f, -1.555f, 1.875f, 1.454f, 3.195f, 5.758f, - 8.295f, 12.274f, 14.989f, 14.705f, 14.455f, 15.724f, 17.266f, 17.177f, 15.233f, 14.344f, - 13.606f -},{ --29.534f,-28.415f,-24.646f,-20.467f,-15.332f,-10.374f, -6.767f, -3.458f, 0.637f, 4.483f, - 6.802f, 6.819f, 7.777f, 10.010f, 11.174f, 12.005f, 17.187f, 20.490f, 19.930f, 22.512f, - 25.997f, 27.915f, 29.914f, 28.369f, 25.489f, 26.868f, 28.060f, 29.221f, 29.721f, 30.522f, - 31.005f, 32.145f, 33.514f, 34.612f, 34.889f, 35.057f, 35.660f, 35.416f, 36.435f, 36.892f, - 36.254f, 37.578f, 36.299f, 35.228f, 33.691f, 32.229f, 31.701f, 30.699f, 29.611f, 28.269f, - 27.118f, 25.640f, 24.685f, 24.212f, 23.667f, 21.994f, 20.030f, 17.881f, 15.414f, 13.261f, - 11.565f, 10.856f, 8.164f, 5.879f, 2.581f, 0.025f, -1.872f, -3.851f, -6.363f, -8.647f, --10.837f,-15.527f,-18.318f,-22.023f,-25.701f,-29.020f,-32.281f,-35.799f,-39.375f,-42.434f, --45.841f,-49.164f,-52.693f,-55.965f,-58.881f,-61.446f,-64.132f,-66.411f,-68.505f,-69.944f, --70.659f,-70.696f,-70.859f,-70.592f,-69.779f,-69.969f,-70.300f,-70.376f,-70.401f,-70.220f, --69.546f,-67.935f,-66.622f,-65.067f,-62.965f,-60.875f,-58.671f,-56.469f,-53.931f,-51.555f, --49.920f,-47.575f,-45.088f,-46.487f,-44.948f,-35.657f,-30.625f,-29.462f,-29.928f,-25.073f, --22.579f,-22.276f,-22.447f,-20.944f,-19.763f,-22.689f,-28.253f,-32.541f,-34.579f,-33.985f, --33.778f,-33.389f,-33.087f,-32.424f,-33.639f,-33.351f,-33.041f,-32.063f,-31.160f,-29.059f, --26.105f,-24.452f,-22.988f,-20.403f,-18.135f,-16.641f,-15.605f,-14.352f,-13.345f,-12.226f, --10.953f,-10.205f,-10.157f, -9.843f, -7.841f, -5.945f, -4.781f, -6.994f, -5.900f, -5.227f, - -6.299f, -6.664f, -5.248f, -3.772f, -3.340f, -2.202f, 1.333f, 1.240f, 2.947f, 5.247f, - 7.842f, 11.578f, 14.149f, 14.342f, 14.212f, 15.502f, 17.195f, 17.125f, 15.180f, 14.317f, - 13.606f -},{ --29.534f,-28.424f,-24.699f,-20.634f,-15.498f,-10.396f, -6.610f, -3.311f, 0.552f, 4.176f, - 6.226f, 6.358f, 7.123f, 9.121f, 11.197f, 12.566f, 17.387f, 20.279f, 20.222f, 24.531f, - 28.245f, 28.975f, 29.130f, 27.201f, 25.122f, 27.345f, 27.448f, 28.618f, 29.187f, 30.259f, - 30.769f, 31.394f, 33.034f, 34.565f, 35.009f, 34.817f, 34.713f, 34.940f, 36.067f, 36.025f, - 39.017f, 36.902f, 35.509f, 34.061f, 32.519f, 31.766f, 31.117f, 30.275f, 29.225f, 27.792f, - 26.726f, 25.680f, 24.600f, 24.153f, 23.232f, 21.721f, 19.515f, 17.275f, 15.056f, 13.052f, - 10.706f, 9.717f, 8.150f, 5.713f, 2.206f, -0.229f, -2.259f, -4.206f, -6.762f, -9.062f, --11.834f,-15.071f,-19.282f,-23.061f,-26.561f,-30.032f,-33.770f,-37.361f,-41.058f,-44.884f, --48.761f,-51.964f,-55.208f,-58.472f,-61.426f,-64.283f,-66.604f,-68.682f,-70.516f,-72.331f, --73.069f,-73.337f,-73.749f,-73.012f,-73.030f,-73.888f,-74.292f,-74.362f,-74.445f,-73.666f, --72.476f,-71.236f,-69.774f,-68.254f,-66.332f,-64.095f,-61.704f,-59.246f,-55.997f,-54.073f, --51.848f,-49.835f,-44.330f,-45.061f,-46.617f,-38.392f,-31.420f,-31.147f,-31.677f,-26.919f, --23.818f,-23.435f,-23.572f,-20.618f,-19.935f,-22.433f,-28.733f,-34.865f,-36.438f,-35.524f, --35.224f,-34.145f,-34.343f,-34.437f,-35.516f,-35.144f,-34.793f,-33.883f,-32.600f,-30.523f, --28.266f,-26.237f,-24.566f,-22.538f,-20.014f,-18.037f,-17.565f,-16.486f,-14.860f,-14.043f, --12.961f,-11.016f,-10.621f,-10.584f, -9.891f, -7.771f, -4.423f, -5.956f, -6.602f, -5.890f, - -6.987f, -6.924f, -5.580f, -4.152f, -3.609f, -2.761f, 0.595f, 1.220f, 2.559f, 4.554f, - 7.401f, 10.840f, 13.202f, 13.870f, 13.986f, 15.284f, 17.122f, 17.049f, 15.126f, 14.289f, - 13.606f -},{ --29.534f,-28.432f,-24.750f,-20.802f,-15.672f,-10.421f, -6.361f, -3.045f, 0.590f, 3.835f, - 5.363f, 5.876f, 6.591f, 7.996f, 10.727f, 13.037f, 17.572f, 20.322f, 20.844f, 25.311f, - 28.418f, 28.762f, 27.787f, 25.926f, 25.098f, 26.894f, 27.034f, 27.933f, 28.472f, 30.071f, - 30.787f, 31.622f, 31.695f, 35.147f, 35.900f, 34.803f, 34.485f, 34.963f, 35.722f, 36.296f, - 40.417f, 37.221f, 35.875f, 34.420f, 32.599f, 31.719f, 30.575f, 29.680f, 28.472f, 27.265f, - 26.086f, 25.429f, 24.267f, 23.430f, 22.513f, 20.862f, 18.663f, 16.527f, 14.397f, 12.566f, - 10.397f, 8.795f, 7.018f, 5.676f, 1.571f, -0.369f, -2.692f, -5.103f, -7.340f, -9.798f, --12.470f,-15.599f,-19.575f,-23.803f,-27.052f,-30.944f,-34.713f,-38.454f,-42.413f,-46.935f, --50.510f,-54.322f,-57.743f,-60.974f,-63.940f,-66.487f,-68.608f,-71.032f,-72.385f,-74.307f, --75.251f,-76.030f,-76.114f,-75.838f,-76.534f,-77.502f,-77.914f,-78.331f,-78.395f,-77.371f, --75.927f,-74.607f,-72.989f,-71.152f,-69.349f,-67.039f,-64.629f,-61.718f,-58.480f,-56.451f, --54.730f,-54.943f,-48.811f,-47.295f,-48.091f,-41.995f,-34.822f,-31.304f,-32.248f,-29.554f, --26.990f,-24.546f,-24.324f,-22.565f,-20.648f,-22.129f,-29.555f,-36.736f,-37.720f,-37.030f, --36.392f,-35.673f,-35.459f,-36.990f,-37.186f,-36.529f,-36.224f,-34.726f,-32.839f,-30.976f, --29.175f,-26.983f,-24.927f,-23.666f,-22.007f,-19.885f,-18.647f,-17.811f,-16.484f,-15.438f, --14.554f,-13.161f,-11.395f,-11.199f,-11.341f, -9.810f, -6.297f, -4.716f, -6.502f, -6.551f, - -7.150f, -7.006f, -5.843f, -4.618f, -3.797f, -3.273f, -0.093f, 1.316f, 2.020f, 3.832f, - 6.917f, 10.160f, 12.306f, 13.334f, 13.778f, 15.076f, 17.044f, 16.947f, 15.071f, 14.261f, - 13.606f -},{ --29.534f,-28.441f,-24.798f,-20.966f,-15.851f,-10.455f, -6.076f, -2.713f, 0.734f, 3.573f, - 4.537f, 5.396f, 6.270f, 7.228f, 9.787f, 13.078f, 17.679f, 20.175f, 21.135f, 24.598f, - 26.014f, 27.239f, 27.410f, 25.550f, 24.751f, 25.858f, 26.748f, 27.459f, 28.068f, 29.988f, - 30.894f, 31.873f, 31.460f, 35.205f, 35.759f, 34.504f, 34.692f, 34.744f, 35.478f, 36.892f, - 38.728f, 37.607f, 38.627f, 36.351f, 33.113f, 31.433f, 30.188f, 29.515f, 28.296f, 27.057f, - 25.743f, 24.954f, 23.828f, 22.531f, 21.528f, 19.805f, 17.688f, 15.577f, 13.779f, 11.869f, - 10.019f, 7.918f, 6.725f, 4.699f, 1.150f, -1.022f, -3.406f, -6.013f, -8.099f,-10.716f, --13.281f,-16.593f,-20.533f,-24.431f,-28.243f,-31.671f,-35.715f,-39.403f,-43.757f,-47.531f, --52.376f,-55.945f,-59.558f,-62.831f,-65.977f,-68.638f,-70.540f,-72.950f,-74.757f,-76.592f, --77.714f,-78.475f,-78.510f,-78.772f,-80.003f,-80.808f,-81.514f,-81.949f,-81.463f,-80.411f, --79.219f,-77.756f,-76.135f,-74.228f,-71.915f,-69.878f,-67.349f,-64.314f,-62.168f,-58.375f, --55.696f,-55.463f,-52.291f,-47.217f,-45.091f,-43.167f,-40.145f,-35.150f,-31.644f,-29.549f, --27.914f,-25.586f,-24.547f,-23.979f,-22.493f,-22.262f,-30.333f,-38.386f,-37.727f,-37.701f, --36.927f,-37.067f,-38.570f,-39.174f,-38.430f,-37.686f,-37.407f,-35.306f,-32.781f,-31.142f, --29.287f,-27.052f,-24.892f,-23.915f,-23.379f,-21.625f,-20.439f,-19.234f,-17.962f,-16.568f, --15.924f,-15.035f,-13.040f,-11.661f,-11.872f,-10.880f, -8.476f, -5.011f, -5.810f, -7.092f, - -7.573f, -7.262f, -6.165f, -4.914f, -3.925f, -3.738f, -0.728f, 1.293f, 1.435f, 3.283f, - 6.383f, 9.593f, 11.601f, 12.798f, 13.583f, 14.886f, 16.958f, 16.819f, 15.014f, 14.232f, - 13.606f -},{ --29.534f,-28.449f,-24.844f,-21.123f,-16.032f,-10.507f, -5.831f, -2.394f, 0.942f, 3.487f, - 4.084f, 5.006f, 6.006f, 6.867f, 8.671f, 12.328f, 17.287f, 20.103f, 20.365f, 23.005f, - 23.767f, 25.155f, 26.605f, 24.384f, 23.879f, 25.468f, 26.443f, 26.874f, 27.951f, 29.668f, - 31.114f, 32.050f, 31.544f, 34.708f, 34.776f, 34.459f, 35.050f, 34.734f, 35.433f, 36.552f, - 36.915f, 39.246f, 39.492f, 37.503f, 33.973f, 31.094f, 29.887f, 29.118f, 28.072f, 26.829f, - 25.641f, 24.544f, 23.177f, 21.717f, 20.344f, 18.570f, 16.586f, 14.734f, 12.914f, 11.088f, - 9.234f, 7.283f, 5.839f, 2.612f, 1.254f, -1.856f, -4.278f, -6.806f, -9.102f,-11.652f, --14.697f,-18.243f,-21.950f,-25.875f,-29.485f,-33.110f,-37.382f,-41.621f,-45.736f,-49.732f, --53.601f,-57.902f,-61.203f,-64.643f,-67.615f,-70.731f,-73.041f,-74.888f,-76.814f,-78.248f, --79.801f,-80.621f,-81.418f,-82.346f,-83.452f,-84.405f,-85.232f,-85.344f,-84.643f,-83.778f, --82.622f,-80.844f,-79.290f,-77.341f,-74.804f,-72.649f,-70.499f,-68.789f,-65.639f,-60.000f, --57.496f,-56.639f,-53.072f,-47.641f,-45.599f,-43.307f,-42.045f,-40.412f,-37.913f,-34.236f, --28.073f,-24.571f,-25.167f,-22.814f,-22.108f,-22.593f,-31.195f,-41.053f,-39.003f,-35.789f, --37.644f,-39.786f,-40.653f,-40.963f,-38.778f,-38.404f,-38.345f,-36.333f,-33.878f,-32.077f, --30.437f,-28.305f,-26.004f,-24.672f,-24.347f,-22.553f,-21.656f,-20.969f,-19.876f,-18.011f, --17.298f,-16.775f,-15.481f,-13.026f,-12.322f,-11.423f, -9.751f, -6.683f, -6.006f, -7.696f, - -8.217f, -7.611f, -6.609f, -5.152f, -4.125f, -4.100f, -1.443f, 0.914f, 0.905f, 2.968f, - 5.827f, 9.124f, 11.148f, 12.321f, 13.394f, 14.719f, 16.861f, 16.666f, 14.956f, 14.203f, - 13.606f -},{ --29.534f,-28.457f,-24.890f,-21.271f,-16.214f,-10.584f, -5.697f, -2.163f, 1.177f, 3.589f, - 4.101f, 4.784f, 5.574f, 6.454f, 7.747f, 10.875f, 15.811f, 19.378f, 18.463f, 20.594f, - 21.996f, 23.377f, 25.172f, 23.327f, 23.598f, 25.441f, 26.392f, 26.470f, 27.743f, 29.222f, - 30.761f, 31.904f, 30.639f, 34.497f, 34.252f, 34.616f, 35.102f, 34.779f, 34.815f, 36.258f, - 38.766f, 41.023f, 39.952f, 37.447f, 33.991f, 31.032f, 29.842f, 28.729f, 27.702f, 26.444f, - 25.343f, 23.759f, 22.296f, 20.675f, 18.963f, 17.353f, 15.501f, 13.747f, 12.028f, 10.196f, - 8.305f, 6.418f, 4.155f, 2.626f, 0.280f, -2.981f, -5.259f, -7.693f,-10.322f,-13.052f, --16.483f,-20.005f,-23.704f,-27.691f,-31.793f,-35.661f,-39.920f,-43.991f,-48.372f,-52.124f, --56.221f,-60.128f,-62.785f,-66.058f,-69.343f,-72.066f,-74.815f,-77.136f,-79.058f,-81.066f, --82.858f,-84.430f,-85.488f,-86.080f,-86.821f,-87.594f,-88.455f,-88.703f,-87.775f,-86.666f, --85.465f,-84.018f,-82.157f,-80.134f,-77.860f,-75.999f,-74.046f,-70.885f,-66.248f,-63.010f, --61.190f,-58.235f,-53.737f,-49.893f,-46.474f,-44.504f,-43.799f,-44.913f,-43.812f,-42.389f, --33.607f,-26.396f,-26.242f,-25.638f,-23.493f,-25.435f,-31.830f,-43.533f,-43.407f,-34.652f, --39.394f,-42.159f,-42.861f,-42.406f,-37.526f,-39.489f,-38.825f,-37.444f,-34.799f,-32.516f, --31.133f,-28.706f,-27.101f,-26.043f,-25.932f,-23.650f,-22.806f,-22.212f,-21.363f,-19.533f, --18.225f,-18.349f,-16.786f,-14.412f,-13.143f,-12.695f,-11.018f, -8.499f, -7.484f, -8.387f, - -8.623f, -7.986f, -6.958f, -5.601f, -4.434f, -4.270f, -2.226f, 0.129f, 0.432f, 2.765f, - 5.276f, 8.696f, 10.917f, 11.934f, 13.203f, 14.577f, 16.751f, 16.491f, 14.895f, 14.172f, - 13.606f -},{ --29.534f,-28.465f,-24.936f,-21.409f,-16.395f,-10.692f, -5.726f, -2.070f, 1.415f, 3.802f, - 4.402f, 4.726f, 4.947f, 5.667f, 7.174f, 9.537f, 13.555f, 16.814f, 16.034f, 17.634f, - 19.505f, 22.010f, 24.343f, 24.053f, 23.653f, 25.001f, 25.890f, 26.063f, 27.460f, 28.546f, - 30.025f, 31.076f, 30.885f, 34.665f, 33.758f, 34.590f, 34.790f, 34.472f, 34.481f, 34.726f, - 40.635f, 40.841f, 39.764f, 36.487f, 33.090f, 31.044f, 29.672f, 28.211f, 27.095f, 25.819f, - 24.268f, 22.774f, 21.208f, 19.429f, 17.784f, 16.190f, 14.508f, 12.790f, 11.021f, 9.108f, - 7.224f, 5.285f, 3.327f, 1.202f, -1.186f, -3.664f, -6.092f, -8.833f,-11.673f,-14.796f, --18.361f,-22.083f,-26.224f,-30.315f,-33.873f,-38.139f,-42.391f,-46.242f,-50.715f,-54.883f, --58.556f,-62.578f,-66.486f,-69.138f,-71.826f,-74.809f,-77.452f,-80.037f,-82.503f,-84.633f, --86.464f,-87.922f,-88.925f,-89.755f,-90.374f,-90.636f,-91.200f,-91.251f,-90.622f,-89.697f, --88.392f,-86.679f,-84.945f,-82.865f,-80.715f,-79.147f,-75.460f,-72.083f,-68.966f,-67.359f, --62.673f,-57.019f,-54.026f,-50.987f,-47.965f,-46.268f,-45.315f,-43.454f,-42.497f,-38.997f, --33.051f,-30.810f,-31.090f,-28.802f,-27.769f,-28.757f,-35.111f,-44.904f,-44.447f,-35.885f, --41.347f,-44.226f,-42.807f,-42.090f,-38.966f,-40.640f,-41.152f,-38.778f,-36.149f,-33.993f, --32.380f,-29.865f,-28.287f,-27.317f,-26.649f,-24.799f,-24.007f,-23.497f,-22.432f,-20.797f, --19.766f,-19.357f,-17.749f,-15.634f,-14.125f,-13.421f,-12.368f,-10.276f, -9.148f, -9.235f, - -8.946f, -8.366f, -7.054f, -6.139f, -4.736f, -4.328f, -2.912f, -0.877f, -0.034f, 2.496f, - 4.746f, 8.264f, 10.823f, 11.635f, 13.003f, 14.456f, 16.625f, 16.299f, 14.833f, 14.142f, - 13.606f -},{ --29.534f,-28.473f,-24.983f,-21.536f,-16.576f,-10.834f, -5.935f, -2.138f, 1.647f, 4.039f, - 4.700f, 4.739f, 4.356f, 4.757f, 6.777f, 9.040f, 11.863f, 13.560f, 14.086f, 15.436f, - 17.281f, 20.298f, 22.967f, 24.598f, 22.641f, 23.894f, 25.203f, 25.628f, 27.109f, 28.306f, - 29.355f, 29.980f, 30.377f, 33.934f, 33.472f, 34.721f, 34.691f, 34.373f, 34.520f, 37.729f, - 39.925f, 40.075f, 38.559f, 35.680f, 32.677f, 30.883f, 28.999f, 27.450f, 26.301f, 24.875f, - 23.221f, 21.511f, 20.014f, 18.168f, 16.588f, 15.041f, 13.503f, 11.646f, 9.853f, 8.036f, - 6.075f, 4.102f, 1.972f, 0.004f, -2.068f, -4.669f, -7.565f,-10.581f,-13.717f,-16.964f, --20.596f,-24.515f,-28.970f,-33.042f,-36.947f,-40.756f,-44.822f,-48.869f,-52.695f,-56.778f, --60.861f,-64.217f,-68.849f,-72.612f,-75.750f,-78.454f,-81.139f,-83.794f,-85.890f,-87.840f, --89.475f,-91.154f,-92.300f,-92.512f,-93.199f,-93.885f,-93.826f,-93.588f,-93.254f,-92.292f, --91.153f,-89.554f,-87.879f,-85.671f,-83.279f,-80.708f,-77.830f,-74.583f,-71.990f,-65.318f, --60.900f,-56.819f,-53.999f,-51.755f,-48.264f,-45.884f,-45.309f,-45.257f,-44.794f,-44.844f, --38.805f,-37.340f,-39.525f,-36.855f,-34.988f,-32.439f,-28.764f,-38.518f,-40.601f,-36.376f, --41.082f,-41.211f,-40.121f,-39.620f,-41.208f,-42.372f,-41.463f,-39.414f,-38.290f,-35.462f, --33.374f,-31.199f,-29.108f,-27.833f,-27.310f,-26.277f,-25.238f,-24.844f,-23.780f,-22.254f, --21.313f,-20.278f,-19.060f,-16.973f,-14.992f,-14.057f,-13.434f,-11.727f,-10.591f,-10.126f, - -9.252f, -8.741f, -7.215f, -6.468f, -4.953f, -4.521f, -3.400f, -1.811f, -0.493f, 2.111f, - 4.259f, 7.837f, 10.773f, 11.398f, 12.790f, 14.351f, 16.483f, 16.094f, 14.768f, 14.110f, - 13.606f -},{ --29.534f,-28.482f,-25.032f,-21.653f,-16.757f,-11.014f, -6.307f, -2.357f, 1.860f, 4.271f, - 4.848f, 4.729f, 4.060f, 4.241f, 6.298f, 9.082f, 11.604f, 12.126f, 13.190f, 15.005f, - 16.600f, 18.604f, 20.945f, 24.511f, 21.669f, 22.601f, 24.386f, 25.082f, 26.401f, 27.791f, - 28.686f, 29.534f, 29.902f, 34.281f, 33.428f, 34.716f, 34.780f, 34.880f, 36.712f, 38.602f, - 37.367f, 37.643f, 37.248f, 34.536f, 32.011f, 30.334f, 28.548f, 26.683f, 25.165f, 23.513f, - 21.989f, 20.140f, 18.612f, 16.937f, 15.364f, 14.032f, 12.243f, 10.576f, 8.645f, 6.926f, - 4.869f, 2.970f, 0.890f, -1.160f, -3.549f, -6.458f, -9.446f,-12.647f,-15.912f,-19.309f, --23.174f,-27.167f,-31.127f,-35.284f,-39.509f,-43.409f,-47.458f,-51.339f,-54.955f,-58.338f, --62.613f,-65.920f,-69.460f,-72.743f,-77.224f,-81.347f,-84.177f,-86.605f,-89.003f,-90.757f, --92.225f,-94.021f,-95.032f,-95.469f,-95.854f,-96.013f,-96.194f,-95.538f,-95.302f,-94.383f, --93.025f,-90.716f,-89.004f,-86.694f,-84.267f,-82.164f,-79.894f,-77.417f,-70.406f,-66.701f, --63.904f,-59.089f,-55.971f,-53.305f,-49.365f,-46.248f,-44.602f,-45.221f,-47.560f,-50.233f, --49.334f,-48.384f,-44.747f,-45.377f,-41.624f,-35.427f,-28.397f,-32.662f,-33.433f,-35.348f, --41.576f,-45.270f,-35.959f,-41.338f,-42.449f,-43.149f,-41.864f,-41.348f,-39.856f,-36.505f, --33.878f,-32.063f,-30.187f,-28.770f,-28.492f,-27.369f,-26.546f,-26.358f,-24.957f,-23.659f, --22.815f,-21.285f,-19.989f,-18.181f,-15.897f,-15.061f,-14.389f,-12.898f,-12.200f,-10.768f, - -9.502f, -9.232f, -7.682f, -6.646f, -5.153f, -4.915f, -3.756f, -2.451f, -0.893f, 1.710f, - 3.864f, 7.469f, 10.704f, 11.186f, 12.566f, 14.253f, 16.326f, 15.882f, 14.702f, 14.079f, - 13.606f -},{ --29.534f,-28.491f,-25.084f,-21.762f,-16.943f,-11.234f, -6.795f, -2.701f, 2.026f, 4.534f, - 4.928f, 4.691f, 4.081f, 4.279f, 5.785f, 8.832f, 12.237f, 12.787f, 12.875f, 15.614f, - 16.860f, 17.546f, 19.615f, 24.084f, 21.261f, 21.552f, 23.367f, 24.683f, 25.786f, 26.882f, - 27.693f, 29.010f, 29.777f, 33.774f, 33.431f, 34.097f, 35.283f, 36.818f, 38.256f, 37.949f, - 36.646f, 35.523f, 34.764f, 33.235f, 31.159f, 29.593f, 27.749f, 25.601f, 24.169f, 22.365f, - 20.575f, 18.954f, 17.336f, 15.758f, 14.304f, 12.746f, 11.063f, 9.343f, 7.675f, 5.632f, - 3.785f, 1.655f, -0.307f, -2.365f, -5.120f, -8.062f,-11.358f,-14.431f,-17.892f,-21.577f, --25.322f,-29.302f,-33.414f,-37.874f,-42.311f,-46.454f,-50.472f,-54.356f,-58.173f,-61.689f, --64.980f,-68.528f,-71.883f,-74.282f,-75.888f,-81.293f,-86.235f,-88.816f,-91.174f,-93.646f, --94.834f,-95.748f,-96.847f,-97.549f,-97.639f,-97.416f,-97.153f,-96.805f,-96.303f,-95.497f, --93.524f,-91.519f,-89.614f,-87.515f,-86.018f,-83.718f,-80.491f,-75.545f,-71.170f,-68.752f, --65.377f,-60.783f,-57.688f,-54.922f,-50.827f,-47.997f,-45.578f,-44.019f,-46.960f,-49.338f, --49.078f,-46.857f,-43.488f,-47.382f,-47.769f,-37.133f,-30.462f,-29.737f,-30.305f,-33.004f, --40.162f,-49.216f,-37.686f,-41.383f,-44.147f,-43.542f,-42.586f,-42.375f,-40.696f,-37.682f, --34.528f,-33.383f,-31.389f,-30.328f,-29.727f,-28.826f,-28.256f,-27.857f,-25.765f,-25.117f, --23.718f,-22.641f,-21.209f,-19.272f,-16.896f,-16.102f,-15.571f,-14.186f,-13.357f,-11.174f, - -9.822f, -9.726f, -8.104f, -6.947f, -5.446f, -5.296f, -4.108f, -2.754f, -1.201f, 1.422f, - 3.624f, 7.220f, 10.595f, 10.974f, 12.336f, 14.150f, 16.155f, 15.668f, 14.633f, 14.046f, - 13.606f -},{ --29.534f,-28.500f,-25.139f,-21.866f,-17.134f,-11.492f, -7.338f, -3.137f, 2.098f, 4.860f, - 5.116f, 4.700f, 4.182f, 4.484f, 5.520f, 8.187f, 12.853f, 13.938f, 12.684f, 15.955f, - 17.172f, 16.551f, 18.751f, 22.345f, 20.478f, 20.765f, 22.674f, 24.381f, 25.176f, 26.512f, - 27.264f, 29.285f, 29.941f, 32.355f, 32.876f, 34.087f, 35.008f, 39.559f, 37.833f, 37.650f, - 36.342f, 34.085f, 32.812f, 31.643f, 30.141f, 28.582f, 26.893f, 24.777f, 23.046f, 21.343f, - 19.529f, 17.683f, 16.190f, 14.732f, 13.215f, 11.547f, 10.061f, 8.191f, 6.452f, 4.476f, - 2.556f, 0.374f, -1.564f, -3.956f, -6.934f, -9.925f,-13.000f,-16.837f,-19.852f,-23.260f, --27.280f,-31.321f,-35.746f,-40.114f,-44.742f,-49.252f,-52.754f,-56.756f,-60.956f,-65.094f, --68.439f,-72.126f,-75.880f,-78.078f,-80.454f,-83.587f,-86.799f,-90.089f,-91.856f,-93.275f, --94.642f,-95.694f,-96.608f,-95.940f,-95.742f,-96.493f,-96.603f,-96.854f,-96.914f,-96.137f, --94.693f,-93.106f,-91.923f,-89.494f,-86.512f,-82.569f,-79.735f,-77.433f,-74.969f,-69.341f, --66.217f,-61.645f,-59.575f,-56.367f,-51.727f,-48.591f,-47.551f,-46.081f,-46.767f,-48.075f, --47.274f,-44.757f,-43.307f,-47.395f,-44.306f,-34.622f,-29.691f,-28.750f,-28.089f,-30.255f, --38.559f,-43.840f,-37.469f,-42.109f,-44.219f,-44.265f,-43.603f,-42.797f,-40.858f,-38.577f, --35.251f,-34.543f,-33.224f,-32.085f,-31.372f,-30.415f,-29.900f,-28.871f,-27.091f,-26.625f, --24.769f,-23.595f,-22.263f,-20.015f,-17.919f,-17.129f,-16.582f,-14.973f,-13.598f,-11.525f, --10.018f, -9.888f, -8.173f, -7.309f, -5.874f, -5.537f, -4.523f, -2.844f, -1.436f, 1.273f, - 3.571f, 7.100f, 10.444f, 10.750f, 12.109f, 14.035f, 15.975f, 15.458f, 14.563f, 14.014f, - 13.606f -},{ --29.534f,-28.509f,-25.199f,-21.966f,-17.333f,-11.788f, -7.880f, -3.633f, 2.026f, 5.202f, - 5.474f, 4.820f, 4.142f, 4.383f, 5.523f, 7.790f, 13.180f, 14.918f, 13.058f, 15.918f, - 17.131f, 15.714f, 17.999f, 20.211f, 19.544f, 20.408f, 22.228f, 24.040f, 24.670f, 25.963f, - 27.439f, 30.037f, 29.986f, 31.428f, 32.264f, 34.068f, 34.994f, 39.101f, 38.156f, 36.648f, - 34.971f, 33.315f, 31.818f, 30.650f, 29.335f, 27.766f, 26.019f, 24.283f, 22.067f, 20.293f, - 18.450f, 16.626f, 15.019f, 13.723f, 12.017f, 10.513f, 8.727f, 7.052f, 5.307f, 3.378f, - 1.229f, -0.796f, -3.124f, -5.824f, -8.715f,-11.937f,-15.041f,-18.379f,-22.098f,-25.779f, --29.422f,-33.611f,-38.203f,-42.181f,-46.389f,-50.716f,-54.522f,-58.712f,-62.773f,-67.165f, --71.149f,-74.986f,-78.776f,-82.000f,-85.512f,-88.384f,-90.424f,-91.955f,-92.862f,-94.580f, --96.448f,-97.359f,-98.589f,-99.221f,-99.614f,-99.858f,-100.164f,-99.836f,-99.150f,-98.313f, --96.744f,-95.110f,-92.884f,-88.869f,-86.368f,-83.972f,-80.160f,-78.057f,-74.023f,-70.083f, --65.973f,-62.870f,-59.764f,-56.508f,-52.574f,-48.107f,-47.504f,-47.804f,-46.379f,-47.080f, --45.822f,-43.813f,-44.405f,-45.340f,-37.554f,-31.863f,-31.038f,-29.454f,-27.635f,-29.660f, --34.735f,-37.570f,-35.984f,-43.775f,-44.839f,-45.354f,-44.037f,-43.729f,-42.206f,-39.567f, --36.471f,-35.772f,-34.380f,-33.442f,-32.882f,-31.903f,-30.729f,-29.430f,-28.427f,-27.600f, --25.861f,-23.776f,-22.341f,-20.741f,-19.192f,-17.698f,-17.064f,-15.127f,-13.661f,-11.787f, --10.056f, -9.776f, -8.061f, -7.456f, -6.381f, -5.766f, -4.995f, -2.906f, -1.616f, 1.181f, - 3.661f, 7.061f, 10.246f, 10.519f, 11.890f, 13.905f, 15.790f, 15.258f, 14.491f, 13.980f, - 13.606f -},{ --29.534f,-28.520f,-25.264f,-22.068f,-17.542f,-12.119f, -8.384f, -4.159f, 1.778f, 5.415f, - 5.846f, 5.005f, 3.989f, 3.948f, 5.423f, 7.870f, 13.122f, 15.703f, 14.073f, 15.983f, - 16.555f, 15.575f, 17.143f, 18.766f, 18.768f, 20.261f, 21.979f, 23.597f, 24.293f, 25.627f, - 27.431f, 30.188f, 30.054f, 30.815f, 31.196f, 33.286f, 35.315f, 37.087f, 36.809f, 36.017f, - 32.970f, 32.152f, 30.860f, 29.752f, 28.695f, 26.795f, 25.194f, 23.571f, 21.657f, 19.260f, - 17.815f, 16.033f, 14.326f, 12.896f, 11.233f, 9.572f, 7.869f, 6.243f, 4.358f, 2.376f, - 0.150f, -2.217f, -5.122f, -7.874f,-10.833f,-13.714f,-17.177f,-20.654f,-24.156f,-27.634f, --31.600f,-35.561f,-39.610f,-44.051f,-47.815f,-52.013f,-56.258f,-60.499f,-64.475f,-68.567f, --72.711f,-76.301f,-80.231f,-83.983f,-87.499f,-90.014f,-92.178f,-94.888f,-97.331f,-99.292f, --100.316f,-100.195f,-100.405f,-101.016f,-101.100f,-100.931f,-100.881f,-100.411f,-100.127f,-99.265f, --97.286f,-93.965f,-91.086f,-91.263f,-87.689f,-83.478f,-80.389f,-76.942f,-74.598f,-70.413f, --66.722f,-63.495f,-59.951f,-56.489f,-54.114f,-51.821f,-48.953f,-46.888f,-46.520f,-46.812f, --46.482f,-46.259f,-46.328f,-40.425f,-32.337f,-28.435f,-29.518f,-30.646f,-30.406f,-35.826f, --35.460f,-34.197f,-35.323f,-42.764f,-45.057f,-47.276f,-46.005f,-44.721f,-42.898f,-39.997f, --37.843f,-37.636f,-35.686f,-35.140f,-34.188f,-33.423f,-31.346f,-30.046f,-29.240f,-28.424f, --26.357f,-24.646f,-22.791f,-21.271f,-20.223f,-18.438f,-17.195f,-15.191f,-13.799f,-11.920f, --10.306f, -9.609f, -7.965f, -7.468f, -6.848f, -6.055f, -5.483f, -3.056f, -1.721f, 1.069f, - 3.780f, 7.025f, 9.989f, 10.284f, 11.683f, 13.763f, 15.607f, 15.070f, 14.418f, 13.947f, - 13.606f -},{ --29.534f,-28.530f,-25.334f,-22.173f,-17.764f,-12.480f, -8.835f, -4.684f, 1.363f, 5.334f, - 5.966f, 5.106f, 3.925f, 3.579f, 5.006f, 7.905f, 12.438f, 15.562f, 14.791f, 15.942f, - 16.086f, 15.836f, 16.553f, 18.085f, 17.962f, 19.658f, 21.543f, 22.743f, 23.377f, 25.453f, - 27.545f, 29.919f, 30.303f, 30.445f, 30.547f, 32.694f, 34.395f, 35.364f, 36.174f, 33.405f, - 31.947f, 31.206f, 29.650f, 28.651f, 27.799f, 26.117f, 24.218f, 22.531f, 20.927f, 19.053f, - 17.010f, 15.721f, 14.022f, 12.232f, 10.609f, 8.644f, 6.917f, 5.167f, 3.248f, 1.162f, - -1.264f, -4.195f, -7.113f, -9.998f,-13.126f,-15.990f,-19.136f,-22.696f,-26.447f,-29.931f, --33.478f,-37.169f,-40.746f,-44.987f,-49.526f,-53.263f,-57.867f,-62.190f,-66.239f,-70.150f, --74.022f,-77.828f,-81.512f,-85.192f,-88.267f,-91.128f,-93.285f,-96.114f,-97.538f,-99.216f, --100.655f,-101.565f,-102.393f,-103.011f,-102.925f,-102.407f,-101.900f,-100.994f,-100.049f,-96.143f, --95.019f,-92.344f,-89.960f,-87.666f,-86.030f,-83.502f,-81.181f,-78.019f,-74.901f,-71.145f, --66.988f,-63.319f,-60.767f,-57.424f,-54.535f,-53.563f,-53.479f,-50.292f,-48.456f,-48.775f, --48.413f,-48.005f,-45.595f,-33.652f,-24.886f,-26.622f,-25.646f,-27.607f,-33.390f,-46.759f, --40.597f,-34.429f,-37.045f,-41.620f,-45.960f,-48.466f,-47.964f,-45.832f,-43.227f,-40.086f, --39.059f,-39.136f,-37.316f,-36.756f,-35.672f,-34.104f,-32.492f,-30.761f,-29.887f,-29.185f, --27.510f,-26.411f,-23.820f,-21.919f,-20.757f,-19.152f,-17.184f,-15.320f,-13.944f,-12.127f, --10.707f, -9.396f, -8.018f, -7.701f, -7.210f, -6.269f, -5.953f, -3.277f, -1.738f, 0.935f, - 3.793f, 6.936f, 9.662f, 10.046f, 11.486f, 13.616f, 15.431f, 14.897f, 14.344f, 13.913f, - 13.606f -},{ --29.534f,-28.541f,-25.409f,-22.284f,-17.997f,-12.863f, -9.239f, -5.182f, 0.827f, 4.882f, - 5.675f, 4.977f, 4.024f, 3.572f, 4.593f, 7.553f, 11.335f, 14.408f, 14.825f, 15.548f, - 16.157f, 16.357f, 17.274f, 18.171f, 16.601f, 18.853f, 20.987f, 21.970f, 22.498f, 24.762f, - 27.268f, 29.398f, 29.373f, 29.156f, 29.894f, 31.850f, 32.575f, 34.059f, 33.447f, 31.118f, - 30.801f, 29.932f, 28.567f, 27.599f, 26.563f, 25.237f, 23.217f, 21.652f, 20.110f, 18.482f, - 16.978f, 14.987f, 13.445f, 11.786f, 9.928f, 7.898f, 5.871f, 4.019f, 1.970f, -0.446f, - -3.066f, -5.981f, -9.161f,-12.129f,-15.024f,-18.174f,-21.572f,-24.942f,-28.326f,-31.806f, --35.432f,-39.013f,-42.361f,-46.062f,-50.089f,-54.290f,-58.988f,-63.670f,-67.669f,-71.483f, --75.289f,-79.072f,-82.451f,-85.685f,-88.575f,-91.327f,-93.943f,-97.003f,-99.249f,-100.363f, --102.115f,-102.842f,-103.651f,-104.203f,-104.153f,-103.421f,-102.330f,-100.675f,-97.444f,-96.422f, --94.895f,-93.514f,-88.890f,-86.029f,-85.011f,-84.855f,-83.222f,-79.440f,-74.634f,-71.781f, --67.450f,-63.312f,-60.087f,-57.544f,-54.774f,-54.341f,-54.903f,-53.750f,-52.653f,-51.328f, --50.196f,-43.521f,-35.361f,-26.721f,-24.580f,-22.993f,-21.173f,-28.377f,-45.687f,-50.931f, --44.895f,-33.377f,-38.447f,-41.200f,-46.852f,-49.605f,-50.145f,-47.223f,-42.905f,-39.911f, --40.304f,-40.157f,-38.662f,-37.776f,-36.608f,-34.761f,-33.516f,-32.084f,-30.423f,-29.733f, --28.435f,-27.339f,-24.810f,-22.578f,-20.799f,-19.320f,-17.229f,-15.350f,-14.119f,-12.448f, --11.029f, -9.408f, -8.488f, -8.173f, -7.528f, -6.367f, -6.381f, -3.466f, -1.753f, 0.817f, - 3.623f, 6.790f, 9.280f, 9.792f, 11.294f, 13.476f, 15.268f, 14.742f, 14.270f, 13.879f, - 13.606f -},{ --29.534f,-28.553f,-25.490f,-22.404f,-18.243f,-13.260f, -9.619f, -5.633f, 0.234f, 4.128f, - 5.039f, 4.596f, 4.066f, 3.738f, 4.552f, 7.147f, 10.425f, 13.471f, 14.800f, 15.302f, - 15.966f, 16.910f, 18.076f, 18.209f, 15.331f, 18.352f, 20.073f, 20.955f, 21.813f, 24.068f, - 26.443f, 28.506f, 28.211f, 28.538f, 28.632f, 29.646f, 30.598f, 32.463f, 30.418f, 30.182f, - 29.546f, 28.854f, 27.543f, 26.305f, 25.410f, 23.970f, 22.351f, 20.732f, 19.184f, 17.702f, - 16.356f, 15.332f, 13.903f, 11.393f, 9.156f, 6.909f, 4.727f, 2.519f, 0.199f, -2.196f, - -5.096f, -8.201f,-10.961f,-13.968f,-17.206f,-20.050f,-23.341f,-26.980f,-30.466f,-33.549f, --36.989f,-40.781f,-43.697f,-47.314f,-51.290f,-55.287f,-59.539f,-64.072f,-68.245f,-72.037f, --75.933f,-79.821f,-83.344f,-86.095f,-89.255f,-91.830f,-94.456f,-97.266f,-99.953f,-101.061f, --102.606f,-103.495f,-103.671f,-103.471f,-104.199f,-104.683f,-104.391f,-103.329f,-99.427f,-96.784f, --95.356f,-94.476f,-91.113f,-86.507f,-86.637f,-87.109f,-84.564f,-78.600f,-74.827f,-71.395f, --67.938f,-63.657f,-59.243f,-59.244f,-56.334f,-56.079f,-56.740f,-56.664f,-56.283f,-54.544f, --48.350f,-35.948f,-28.191f,-22.914f,-22.814f,-21.543f,-24.098f,-33.845f,-51.503f,-51.701f, --46.389f,-35.203f,-37.837f,-42.067f,-47.365f,-49.227f,-50.839f,-47.485f,-42.750f,-40.356f, --42.036f,-40.733f,-39.688f,-38.806f,-37.688f,-35.316f,-34.049f,-33.379f,-31.605f,-30.890f, --28.780f,-27.079f,-25.154f,-22.649f,-20.729f,-19.095f,-17.008f,-15.372f,-14.135f,-12.763f, --11.458f, -9.968f, -9.335f, -8.596f, -7.854f, -6.522f, -6.698f, -3.552f, -1.904f, 0.711f, - 3.280f, 6.620f, 8.891f, 9.508f, 11.099f, 13.355f, 15.121f, 14.603f, 14.196f, 13.844f, - 13.606f -},{ --29.534f,-28.566f,-25.578f,-22.534f,-18.500f,-13.661f, -9.998f, -6.032f, -0.360f, 3.246f, - 4.297f, 4.072f, 3.748f, 3.642f, 4.686f, 6.998f, 9.853f, 13.190f, 14.903f, 15.550f, - 15.476f, 17.005f, 17.390f, 17.258f, 15.066f, 17.561f, 18.829f, 19.718f, 21.539f, 23.817f, - 25.559f, 27.395f, 27.614f, 27.620f, 26.622f, 27.592f, 27.270f, 29.521f, 28.806f, 28.772f, - 28.746f, 27.886f, 26.542f, 25.296f, 23.975f, 22.882f, 21.402f, 19.760f, 18.130f, 16.426f, - 14.716f, 12.895f, 12.230f, 10.293f, 7.988f, 5.505f, 3.123f, 0.710f, -1.787f, -4.443f, - -7.187f,-10.026f,-13.213f,-15.734f,-19.018f,-22.264f,-25.114f,-28.400f,-31.840f,-35.463f, --38.774f,-42.040f,-45.475f,-49.028f,-52.292f,-56.278f,-60.039f,-64.044f,-68.371f,-72.151f, --76.194f,-79.890f,-84.088f,-86.586f,-89.869f,-93.125f,-95.162f,-97.585f,-100.841f,-101.820f, --102.894f,-103.375f,-103.521f,-103.920f,-106.377f,-106.594f,-105.007f,-102.733f,-100.373f,-96.695f, --94.909f,-92.610f,-91.033f,-89.350f,-88.954f,-88.429f,-84.568f,-79.833f,-75.037f,-71.625f, --68.392f,-64.448f,-59.538f,-59.526f,-57.613f,-58.643f,-59.354f,-60.367f,-59.848f,-57.470f, --39.381f,-24.372f,-24.592f,-24.100f,-23.665f,-22.266f,-25.302f,-41.784f,-53.443f,-50.660f, --49.639f,-44.374f,-38.134f,-44.404f,-48.622f,-45.465f,-50.705f,-48.448f,-43.253f,-42.327f, --43.609f,-41.551f,-40.504f,-39.259f,-38.169f,-36.062f,-34.594f,-33.879f,-32.696f,-31.343f, --30.026f,-27.823f,-25.472f,-23.072f,-21.002f,-18.871f,-17.202f,-15.908f,-14.382f,-13.125f, --12.046f,-10.734f,-10.094f, -8.912f, -8.118f, -6.800f, -6.779f, -3.581f, -2.244f, 0.560f, - 2.846f, 6.449f, 8.561f, 9.178f, 10.898f, 13.261f, 14.992f, 14.482f, 14.122f, 13.809f, - 13.606f -},{ --29.534f,-28.579f,-25.671f,-22.674f,-18.767f,-14.059f,-10.393f, -6.391f, -0.934f, 2.409f, - 3.665f, 3.554f, 3.035f, 3.168f, 4.563f, 6.862f, 9.313f, 12.669f, 14.703f, 15.783f, - 15.575f, 16.694f, 16.210f, 15.949f, 15.154f, 16.222f, 17.607f, 18.471f, 21.448f, 23.402f, - 24.978f, 26.064f, 26.029f, 26.045f, 24.397f, 24.737f, 24.432f, 28.346f, 28.041f, 27.789f, - 27.216f, 26.443f, 25.371f, 24.195f, 22.677f, 21.420f, 20.322f, 18.725f, 16.990f, 15.111f, - 13.083f, 11.149f, 9.000f, 8.000f, 6.040f, 3.632f, 1.476f, -1.146f, -3.683f, -6.402f, - -9.295f,-11.865f,-14.847f,-18.007f,-20.456f,-23.636f,-27.100f,-30.194f,-33.493f,-36.952f, --40.365f,-43.723f,-46.938f,-50.319f,-53.674f,-57.279f,-60.901f,-64.143f,-68.145f,-71.992f, --75.940f,-79.066f,-83.273f,-85.663f,-89.854f,-92.927f,-93.944f,-97.704f,-100.371f,-101.251f, --102.688f,-103.379f,-103.731f,-104.088f,-105.697f,-105.992f,-100.427f,-96.745f,-96.020f,-96.065f, --96.033f,-93.495f,-93.008f,-91.754f,-90.304f,-86.792f,-83.431f,-80.012f,-75.333f,-72.426f, --67.924f,-64.719f,-60.325f,-57.911f,-58.451f,-59.528f,-61.135f,-63.189f,-62.844f,-55.211f, --34.529f,-22.274f,-24.422f,-25.472f,-25.153f,-24.771f,-29.875f,-48.186f,-53.771f,-51.457f, --55.718f,-54.184f,-38.815f,-46.672f,-49.422f,-40.262f,-51.273f,-49.385f,-44.784f,-44.326f, --44.506f,-43.018f,-40.720f,-39.742f,-38.552f,-36.263f,-34.834f,-33.986f,-33.395f,-32.186f, --30.595f,-28.865f,-26.460f,-23.575f,-21.127f,-19.713f,-18.158f,-16.363f,-14.875f,-13.457f, --12.638f,-11.288f,-10.519f, -9.200f, -8.273f, -7.042f, -6.579f, -3.689f, -2.661f, 0.341f, - 2.407f, 6.254f, 8.341f, 8.806f, 10.692f, 13.196f, 14.879f, 14.375f, 14.049f, 13.774f, - 13.606f -},{ --29.534f,-28.593f,-25.769f,-22.826f,-19.043f,-14.448f,-10.808f, -6.738f, -1.493f, 1.697f, - 3.200f, 3.117f, 2.226f, 2.648f, 4.267f, 6.493f, 8.802f, 11.722f, 14.154f, 15.454f, - 15.693f, 16.034f, 15.340f, 15.769f, 15.559f, 15.099f, 16.275f, 17.818f, 21.185f, 22.913f, - 24.978f, 24.948f, 24.892f, 23.116f, 22.174f, 22.616f, 23.306f, 26.061f, 26.888f, 26.638f, - 25.744f, 25.083f, 24.121f, 22.838f, 21.599f, 20.177f, 18.988f, 17.719f, 15.980f, 13.718f, - 11.668f, 9.458f, 7.369f, 4.976f, 3.870f, 1.766f, -0.583f, -2.900f, -5.633f, -8.328f, --10.725f,-14.099f,-16.538f,-19.400f,-22.491f,-25.248f,-28.550f,-31.903f,-35.136f,-38.508f, --41.870f,-45.170f,-48.543f,-51.754f,-54.814f,-58.202f,-61.641f,-64.909f,-68.484f,-71.584f, --75.151f,-78.090f,-81.506f,-84.164f,-88.632f,-91.684f,-94.161f,-95.853f,-98.091f,-100.094f, --101.659f,-102.479f,-103.170f,-103.570f,-104.791f,-104.557f,-97.878f,-92.728f,-94.181f,-95.402f, --98.390f,-99.016f,-96.467f,-93.413f,-91.541f,-87.762f,-81.124f,-77.210f,-74.971f,-69.934f, --66.904f,-64.695f,-61.259f,-58.549f,-59.045f,-59.982f,-62.389f,-65.501f,-62.951f,-47.955f, --29.347f,-24.246f,-26.369f,-26.804f,-26.402f,-26.351f,-32.950f,-50.722f,-54.080f,-53.548f, --59.764f,-59.281f,-43.919f,-46.340f,-51.217f,-43.903f,-50.321f,-49.042f,-45.989f,-44.907f, --45.320f,-43.185f,-41.037f,-40.239f,-38.729f,-35.814f,-35.109f,-34.392f,-33.788f,-32.720f, --30.966f,-29.361f,-26.996f,-23.725f,-21.568f,-20.565f,-18.652f,-16.460f,-15.165f,-13.744f, --13.227f,-11.800f,-10.731f, -9.324f, -8.431f, -7.152f, -6.286f, -3.980f, -2.990f, 0.119f, - 2.005f, 5.984f, 8.236f, 8.406f, 10.486f, 13.157f, 14.779f, 14.281f, 13.978f, 13.739f, - 13.606f -},{ --29.534f,-28.609f,-25.873f,-22.988f,-19.326f,-14.825f,-11.237f, -7.110f, -2.057f, 1.090f, - 2.803f, 2.720f, 1.628f, 2.384f, 4.256f, 6.154f, 8.507f, 11.092f, 13.472f, 14.663f, - 14.979f, 15.169f, 14.600f, 15.847f, 15.744f, 14.286f, 15.388f, 17.670f, 20.148f, 22.383f, - 23.811f, 24.267f, 23.420f, 20.425f, 19.993f, 20.969f, 23.514f, 23.963f, 25.051f, 25.058f, - 24.308f, 23.703f, 22.919f, 21.685f, 20.287f, 19.041f, 17.558f, 16.476f, 14.704f, 12.564f, - 10.010f, 7.946f, 5.591f, 3.625f, 1.250f, -0.546f, -2.420f, -4.881f, -7.167f,-10.097f, --12.697f,-15.449f,-18.616f,-21.222f,-23.946f,-26.940f,-29.833f,-33.234f,-36.736f,-40.361f, --43.982f,-47.381f,-50.202f,-53.864f,-56.627f,-58.918f,-62.035f,-65.321f,-68.765f,-72.030f, --75.116f,-77.044f,-80.876f,-82.282f,-86.640f,-88.421f,-90.747f,-92.777f,-94.397f,-97.215f, --98.650f,-100.444f,-101.749f,-101.675f,-102.643f,-102.563f,-100.330f,-95.258f,-95.360f,-97.548f, --97.193f,-96.413f,-94.624f,-92.369f,-90.604f,-88.767f,-81.912f,-75.383f,-71.740f,-68.186f, --65.169f,-64.220f,-62.138f,-59.873f,-58.692f,-60.398f,-63.860f,-67.101f,-58.198f,-39.585f, --25.351f,-25.863f,-28.419f,-28.987f,-28.447f,-29.056f,-33.279f,-50.618f,-54.972f,-57.462f, --61.506f,-61.212f,-52.277f,-47.930f,-51.426f,-52.379f,-52.189f,-49.111f,-46.924f,-45.260f, --44.968f,-42.498f,-41.857f,-40.469f,-38.750f,-36.092f,-35.492f,-34.998f,-34.415f,-33.045f, --31.535f,-29.383f,-27.362f,-24.354f,-22.256f,-20.318f,-18.806f,-16.735f,-15.414f,-14.136f, --13.732f,-12.400f,-10.879f, -9.324f, -8.699f, -7.232f, -6.206f, -4.432f, -3.193f, 0.004f, - 1.630f, 5.602f, 8.203f, 8.011f, 10.289f, 13.131f, 14.686f, 14.197f, 13.908f, 13.703f, - 13.606f -},{ --29.534f,-28.625f,-25.981f,-23.159f,-19.614f,-15.194f,-11.669f, -7.537f, -2.636f, 0.526f, - 2.340f, 2.267f, 1.208f, 2.221f, 4.495f, 6.120f, 8.254f, 10.718f, 12.663f, 13.751f, - 14.142f, 14.431f, 14.044f, 14.912f, 15.052f, 13.857f, 14.690f, 16.950f, 18.693f, 21.089f, - 22.486f, 22.552f, 20.692f, 18.639f, 19.405f, 20.362f, 22.085f, 22.791f, 23.443f, 23.563f, - 22.857f, 22.258f, 21.500f, 20.459f, 19.219f, 17.807f, 16.325f, 14.821f, 13.343f, 11.134f, - 8.780f, 6.402f, 4.327f, 1.849f, -0.035f, -2.405f, -4.451f, -6.577f, -9.038f,-11.698f, --14.758f,-17.417f,-19.992f,-22.866f,-25.401f,-28.305f,-31.246f,-34.617f,-38.051f,-41.484f, --44.970f,-48.575f,-51.730f,-54.921f,-58.090f,-60.157f,-62.181f,-64.587f,-68.156f,-71.808f, --74.595f,-76.902f,-79.614f,-81.274f,-85.750f,-86.704f,-87.372f,-88.249f,-92.159f,-94.597f, --94.316f,-96.088f,-99.244f,-98.786f,-99.335f,-99.234f,-98.451f,-96.049f,-94.720f,-95.126f, --94.583f,-93.372f,-91.575f,-89.610f,-87.959f,-86.696f,-84.028f,-77.989f,-69.963f,-65.161f, --65.129f,-63.505f,-61.658f,-59.676f,-59.265f,-61.706f,-65.692f,-67.279f,-54.532f,-33.954f, --25.539f,-28.396f,-28.678f,-30.403f,-30.333f,-31.544f,-32.083f,-50.645f,-56.236f,-59.025f, --62.403f,-63.093f,-55.724f,-49.158f,-51.518f,-55.944f,-50.515f,-47.988f,-50.292f,-46.057f, --43.563f,-41.964f,-42.836f,-40.519f,-38.900f,-36.802f,-35.790f,-35.429f,-35.137f,-33.909f, --31.510f,-29.474f,-27.648f,-24.501f,-22.198f,-20.095f,-18.600f,-16.644f,-15.538f,-14.442f, --14.014f,-12.878f,-11.174f, -9.619f, -8.998f, -7.329f, -6.467f, -4.910f, -3.383f, 0.029f, - 1.267f, 5.132f, 8.165f, 7.652f, 10.112f, 13.102f, 14.594f, 14.120f, 13.841f, 13.668f, - 13.606f -},{ --29.534f,-28.642f,-26.093f,-23.337f,-19.907f,-15.563f,-12.093f, -8.034f, -3.221f, -0.023f, - 1.760f, 1.689f, 0.644f, 1.794f, 4.390f, 6.101f, 7.821f, 9.965f, 11.781f, 12.910f, - 13.633f, 13.767f, 13.483f, 14.283f, 14.204f, 13.782f, 13.780f, 15.632f, 16.917f, 19.031f, - 21.122f, 19.408f, 17.770f, 18.060f, 18.566f, 18.674f, 20.247f, 21.838f, 21.984f, 21.961f, - 21.615f, 20.809f, 20.000f, 19.034f, 17.933f, 16.422f, 15.103f, 12.963f, 11.800f, 9.542f, - 7.290f, 4.908f, 2.614f, 0.335f, -1.815f, -4.008f, -6.212f, -8.350f,-10.537f,-13.177f, --16.027f,-19.007f,-21.714f,-24.445f,-27.063f,-29.806f,-32.989f,-35.853f,-38.654f,-42.147f, --45.844f,-48.810f,-52.921f,-55.990f,-58.782f,-61.165f,-63.915f,-66.038f,-67.672f,-70.094f, --73.546f,-75.620f,-79.010f,-80.663f,-84.199f,-86.333f,-87.065f,-88.920f,-90.359f,-91.795f, --92.866f,-94.863f,-95.477f,-95.019f,-95.041f,-94.691f,-95.080f,-93.747f,-92.422f,-92.154f, --91.399f,-90.140f,-88.876f,-86.993f,-86.384f,-84.402f,-83.393f,-80.114f,-72.082f,-66.734f, --63.041f,-61.861f,-60.037f,-57.256f,-58.115f,-62.252f,-66.131f,-66.691f,-52.512f,-30.808f, --27.358f,-29.115f,-30.117f,-31.287f,-31.880f,-33.409f,-34.294f,-46.258f,-56.227f,-60.476f, --64.040f,-64.547f,-55.741f,-50.684f,-52.265f,-58.216f,-51.266f,-47.500f,-51.014f,-46.825f, --42.656f,-41.078f,-43.667f,-40.882f,-39.503f,-36.790f,-36.134f,-35.895f,-35.737f,-34.184f, --31.569f,-29.458f,-27.473f,-24.133f,-22.296f,-20.243f,-18.393f,-16.923f,-15.529f,-14.741f, --14.149f,-13.235f,-11.717f,-10.279f, -9.215f, -7.329f, -6.911f, -5.271f, -3.663f, 0.086f, - 0.949f, 4.663f, 8.060f, 7.356f, 9.961f, 13.051f, 14.498f, 14.047f, 13.777f, 13.632f, - 13.606f -},{ --29.534f,-28.660f,-26.209f,-23.522f,-20.202f,-15.940f,-12.508f, -8.591f, -3.794f, -0.535f, - 1.109f, 0.995f, -0.264f, 1.104f, 3.813f, 5.714f, 7.365f, 9.032f, 10.936f, 12.205f, - 12.972f, 13.352f, 12.751f, 13.679f, 12.956f, 13.108f, 12.889f, 14.044f, 14.710f, 16.793f, - 17.385f, 16.276f, 16.031f, 17.056f, 17.623f, 18.855f, 19.619f, 20.072f, 20.562f, 20.433f, - 20.167f, 19.554f, 18.625f, 17.735f, 16.738f, 15.029f, 13.448f, 11.994f, 9.918f, 7.955f, - 5.847f, 3.435f, 0.927f, -1.362f, -3.443f, -5.784f, -7.668f,-10.255f,-12.559f,-15.042f, --17.791f,-20.273f,-23.170f,-25.974f,-28.869f,-31.823f,-34.489f,-36.997f,-39.330f,-42.350f, --46.734f,-50.051f,-52.375f,-56.620f,-59.162f,-61.151f,-64.050f,-66.752f,-69.109f,-69.726f, --71.180f,-73.913f,-76.652f,-78.333f,-81.078f,-83.290f,-84.832f,-86.689f,-87.100f,-88.198f, --88.790f,-91.094f,-89.939f,-90.839f,-89.991f,-90.096f,-90.340f,-89.558f,-88.371f,-87.797f, --87.744f,-87.543f,-86.623f,-86.170f,-86.147f,-83.145f,-81.195f,-80.167f,-76.078f,-67.497f, --63.243f,-59.935f,-58.122f,-55.479f,-56.866f,-61.513f,-65.285f,-65.446f,-45.210f,-29.278f, --27.751f,-30.055f,-30.807f,-32.015f,-33.522f,-34.941f,-36.170f,-42.145f,-55.598f,-61.516f, --65.545f,-65.623f,-57.231f,-47.700f,-55.799f,-62.579f,-55.777f,-46.718f,-51.400f,-44.366f, --42.506f,-41.060f,-43.476f,-41.629f,-39.424f,-36.967f,-36.244f,-36.311f,-35.890f,-34.314f, --31.724f,-29.196f,-27.193f,-24.964f,-23.282f,-20.859f,-19.244f,-17.693f,-15.541f,-15.199f, --14.307f,-13.651f,-12.203f,-10.843f, -9.405f, -7.194f, -7.298f, -5.464f, -3.979f, 0.012f, - 0.751f, 4.292f, 7.871f, 7.135f, 9.839f, 12.965f, 14.392f, 13.977f, 13.715f, 13.596f, - 13.606f -},{ --29.534f,-28.679f,-26.327f,-23.710f,-20.500f,-16.335f,-12.922f, -9.179f, -4.351f, -0.987f, - 0.460f, 0.259f, -1.311f, 0.566f, 3.475f, 5.199f, 6.954f, 8.325f, 10.020f, 11.446f, - 12.170f, 12.977f, 11.622f, 11.753f, 11.886f, 12.074f, 11.921f, 12.717f, 13.020f, 14.461f, - 14.179f, 14.378f, 15.013f, 16.179f, 17.104f, 17.618f, 18.182f, 18.849f, 18.995f, 18.937f, - 18.680f, 18.084f, 17.368f, 16.385f, 15.154f, 13.707f, 12.121f, 10.593f, 8.931f, 6.507f, - 4.123f, 1.907f, -0.462f, -3.004f, -5.446f, -7.066f, -9.063f,-11.144f,-14.254f,-16.759f, --19.158f,-21.920f,-24.485f,-27.083f,-29.970f,-32.651f,-35.260f,-37.577f,-40.199f,-42.810f, --46.238f,-51.142f,-53.684f,-55.878f,-58.227f,-58.473f,-62.724f,-65.451f,-68.310f,-69.609f, --70.130f,-72.290f,-74.587f,-76.010f,-76.844f,-78.733f,-80.315f,-81.844f,-82.682f,-83.855f, --84.087f,-85.904f,-84.754f,-85.108f,-85.797f,-85.521f,-85.422f,-84.724f,-84.462f,-84.385f, --84.424f,-83.869f,-83.259f,-81.987f,-80.241f,-79.294f,-78.091f,-76.902f,-73.910f,-70.040f, --63.900f,-60.191f,-57.708f,-56.099f,-56.403f,-60.552f,-64.377f,-58.612f,-33.135f,-29.585f, --29.748f,-30.749f,-31.594f,-33.042f,-34.381f,-36.180f,-37.038f,-39.287f,-54.727f,-62.565f, --66.515f,-65.011f,-60.244f,-48.976f,-61.163f,-66.003f,-59.804f,-47.996f,-51.473f,-44.111f, --40.678f,-41.344f,-42.585f,-41.199f,-39.369f,-37.657f,-35.772f,-36.106f,-35.460f,-34.527f, --32.116f,-29.373f,-27.108f,-25.856f,-24.251f,-21.998f,-19.993f,-17.473f,-15.403f,-15.121f, --14.506f,-14.031f,-12.408f,-11.172f, -9.644f, -7.061f, -7.509f, -5.525f, -4.183f, -0.270f, - 0.739f, 4.068f, 7.646f, 6.985f, 9.745f, 12.838f, 14.274f, 13.906f, 13.657f, 13.560f, - 13.606f -},{ --29.534f,-28.699f,-26.448f,-23.900f,-20.797f,-16.754f,-13.351f, -9.764f, -4.920f, -1.419f, - -0.163f, -0.436f, -2.057f, 0.415f, 3.802f, 5.041f, 6.302f, 7.415f, 8.900f, 10.339f, - 11.433f, 12.028f, 10.438f, 10.259f, 11.541f, 11.037f, 10.900f, 11.503f, 11.717f, 12.448f, - 12.410f, 13.239f, 14.895f, 15.799f, 15.951f, 16.575f, 16.908f, 17.279f, 17.577f, 17.525f, - 17.216f, 16.737f, 15.897f, 14.955f, 13.633f, 11.994f, 10.618f, 9.099f, 7.486f, 5.433f, - 2.412f, 0.031f, -2.337f, -4.607f, -7.067f, -9.246f,-10.518f,-12.412f,-14.635f,-17.469f, --20.246f,-22.962f,-25.853f,-27.385f,-29.256f,-32.194f,-35.087f,-37.736f,-39.941f,-42.582f, --44.813f,-48.436f,-51.958f,-54.424f,-56.702f,-56.494f,-60.981f,-65.562f,-67.200f,-68.009f, --69.290f,-70.215f,-72.293f,-73.424f,-74.666f,-75.978f,-76.313f,-77.253f,-78.327f,-79.340f, --79.038f,-79.744f,-80.258f,-80.260f,-80.008f,-79.932f,-79.345f,-79.102f,-78.386f,-78.312f, --78.984f,-78.802f,-78.702f,-78.061f,-76.977f,-76.026f,-75.051f,-73.326f,-71.266f,-68.212f, --64.177f,-61.556f,-59.061f,-56.384f,-55.490f,-58.801f,-61.812f,-51.090f,-28.944f,-30.098f, --29.613f,-31.252f,-33.294f,-34.369f,-35.753f,-37.262f,-37.987f,-41.753f,-48.575f,-62.960f, --66.517f,-63.690f,-62.559f,-52.649f,-66.301f,-66.743f,-60.752f,-53.042f,-48.907f,-41.840f, --41.105f,-40.050f,-41.911f,-40.131f,-39.924f,-36.759f,-35.993f,-36.886f,-35.274f,-34.501f, --32.344f,-29.252f,-26.824f,-25.567f,-24.776f,-22.899f,-20.612f,-17.539f,-15.709f,-14.474f, --14.452f,-14.197f,-12.562f,-11.508f, -9.850f, -7.028f, -7.534f, -5.528f, -4.209f, -0.680f, - 0.907f, 3.965f, 7.470f, 6.891f, 9.674f, 12.672f, 14.146f, 13.833f, 13.603f, 13.524f, - 13.606f -},{ --29.534f,-28.720f,-26.570f,-24.092f,-21.093f,-17.199f,-13.808f,-10.321f, -5.552f, -1.949f, - -0.792f, -1.028f, -2.272f, 0.320f, 3.949f, 4.999f, 5.360f, 6.048f, 7.625f, 8.991f, - 10.539f, 11.248f, 10.449f, 10.332f, 10.358f, 9.740f, 9.729f, 9.901f, 10.378f, 10.707f, - 11.095f, 12.455f, 13.514f, 14.524f, 14.987f, 15.309f, 15.781f, 15.919f, 16.070f, 16.047f, - 15.782f, 15.206f, 14.507f, 13.468f, 12.009f, 10.585f, 9.045f, 7.587f, 5.828f, 3.722f, - 0.968f, -1.754f, -4.206f, -6.632f, -8.902f,-11.047f,-12.963f,-14.676f,-16.050f,-17.747f, --20.848f,-24.535f,-27.622f,-28.975f,-31.253f,-33.138f,-36.351f,-37.969f,-39.849f,-43.071f, --44.851f,-46.933f,-48.115f,-50.991f,-54.180f,-56.433f,-59.502f,-62.766f,-64.865f,-66.674f, --68.168f,-68.185f,-69.609f,-70.331f,-71.452f,-72.200f,-72.597f,-72.893f,-72.327f,-73.942f, --73.734f,-73.607f,-73.433f,-73.787f,-73.093f,-73.424f,-73.350f,-73.673f,-73.229f,-73.447f, --73.759f,-73.772f,-73.611f,-73.372f,-72.971f,-72.477f,-71.792f,-70.711f,-68.947f,-66.755f, --62.245f,-59.326f,-58.274f,-57.152f,-56.283f,-56.245f,-57.767f,-47.085f,-29.405f,-31.128f, --30.672f,-32.575f,-34.970f,-35.634f,-36.951f,-38.484f,-39.180f,-41.822f,-44.649f,-62.850f, --66.297f,-61.901f,-62.445f,-61.991f,-63.653f,-64.781f,-60.295f,-53.722f,-46.253f,-40.696f, --40.418f,-40.233f,-40.903f,-39.499f,-38.345f,-35.433f,-37.458f,-37.855f,-36.073f,-35.011f, --33.008f,-30.168f,-27.062f,-26.107f,-25.047f,-23.219f,-21.671f,-18.339f,-16.600f,-14.472f, --13.940f,-14.207f,-12.746f,-11.712f, -9.946f, -7.065f, -7.416f, -5.533f, -4.148f, -1.049f, - 1.160f, 3.917f, 7.422f, 6.832f, 9.623f, 12.480f, 14.009f, 13.756f, 13.552f, 13.489f, - 13.606f -},{ --29.534f,-28.742f,-26.693f,-24.284f,-21.387f,-17.665f,-14.303f,-10.844f, -6.296f, -2.714f, - -1.481f, -1.508f, -2.155f, -0.221f, 2.697f, 4.186f, 4.513f, 4.995f, 6.367f, 7.740f, - 9.363f, 10.889f, 10.540f, 10.050f, 8.581f, 8.414f, 8.246f, 8.273f, 8.882f, 9.378f, - 9.921f, 11.582f, 12.509f, 13.477f, 13.930f, 14.196f, 14.476f, 14.806f, 14.948f, 14.590f, - 14.145f, 13.726f, 13.025f, 11.878f, 10.535f, 9.019f, 7.618f, 5.988f, 4.178f, 1.857f, - -0.579f, -3.485f, -6.035f, -8.367f,-10.686f,-13.017f,-14.963f,-17.049f,-18.959f,-20.788f, --22.650f,-26.986f,-29.907f,-32.160f,-34.191f,-36.310f,-38.332f,-40.835f,-43.515f,-45.955f, --47.915f,-50.584f,-52.990f,-54.885f,-57.494f,-59.403f,-59.956f,-60.386f,-61.565f,-62.858f, --64.918f,-64.730f,-65.591f,-65.317f,-65.851f,-67.237f,-66.335f,-67.477f,-67.706f,-67.460f, --68.665f,-67.821f,-66.477f,-66.976f,-66.832f,-66.715f,-67.148f,-67.255f,-66.680f,-66.764f, --67.568f,-68.168f,-68.605f,-68.505f,-68.510f,-68.520f,-68.078f,-67.155f,-66.600f,-64.817f, --60.897f,-57.567f,-57.080f,-56.040f,-55.577f,-55.034f,-53.348f,-41.015f,-28.662f,-33.225f, --32.911f,-34.387f,-37.120f,-37.045f,-37.959f,-39.462f,-40.588f,-44.393f,-43.740f,-58.306f, --66.456f,-61.622f,-63.612f,-64.730f,-60.411f,-61.271f,-57.507f,-51.441f,-42.643f,-42.176f, --40.808f,-39.613f,-38.987f,-39.231f,-36.030f,-36.045f,-38.070f,-38.160f,-36.532f,-35.768f, --34.103f,-30.880f,-27.302f,-26.615f,-24.889f,-23.117f,-22.042f,-18.805f,-17.244f,-15.374f, --13.437f,-14.112f,-12.772f,-11.520f,-10.027f, -7.152f, -7.270f, -5.577f, -4.124f, -1.256f, - 1.378f, 3.884f, 7.525f, 6.791f, 9.588f, 12.283f, 13.868f, 13.676f, 13.504f, 13.453f, - 13.606f -},{ --29.534f,-28.765f,-26.817f,-24.475f,-21.676f,-18.142f,-14.834f,-11.351f, -7.168f, -3.777f, - -2.281f, -1.947f, -2.149f, -1.250f, 0.108f, 2.262f, 3.840f, 4.734f, 5.443f, 6.633f, - 8.244f, 10.021f, 9.412f, 8.843f, 7.539f, 7.069f, 6.643f, 6.971f, 7.440f, 7.972f, - 8.876f, 10.309f, 11.581f, 12.464f, 12.958f, 12.909f, 13.224f, 13.459f, 13.818f, 13.274f, - 12.701f, 12.225f, 11.368f, 10.333f, 8.965f, 7.587f, 6.068f, 4.389f, 2.454f, 0.057f, - -2.478f, -5.137f, -7.701f,-10.240f,-12.370f,-14.755f,-16.892f,-19.087f,-21.134f,-22.974f, --25.197f,-28.527f,-30.985f,-33.726f,-35.869f,-38.290f,-40.597f,-42.535f,-44.553f,-46.188f, --48.157f,-50.548f,-52.858f,-54.458f,-56.264f,-57.770f,-59.499f,-61.013f,-62.739f,-64.579f, --64.511f,-64.627f,-64.717f,-63.865f,-63.258f,-64.339f,-62.878f,-62.991f,-63.940f,-62.219f, --63.236f,-61.227f,-60.768f,-60.329f,-60.266f,-60.384f,-59.782f,-60.389f,-61.782f,-62.257f, --63.260f,-64.208f,-64.251f,-64.643f,-64.578f,-64.136f,-64.080f,-63.282f,-63.089f,-62.929f, --59.527f,-57.172f,-56.594f,-55.710f,-55.421f,-53.810f,-50.152f,-41.045f,-29.868f,-33.586f, --34.079f,-35.397f,-37.009f,-37.603f,-38.661f,-40.410f,-41.855f,-46.144f,-48.307f,-55.482f, --66.646f,-62.497f,-63.023f,-63.018f,-60.805f,-59.302f,-54.264f,-47.324f,-42.488f,-42.891f, --42.053f,-40.554f,-38.854f,-39.661f,-36.801f,-37.582f,-38.184f,-38.174f,-37.227f,-36.827f, --33.911f,-30.248f,-27.699f,-26.437f,-24.570f,-22.756f,-22.112f,-19.549f,-17.678f,-16.097f, --13.267f,-13.929f,-12.769f,-11.233f,-10.167f, -7.311f, -7.223f, -5.675f, -4.157f, -1.307f, - 1.501f, 3.895f, 7.724f, 6.758f, 9.569f, 12.105f, 13.731f, 13.590f, 13.461f, 13.417f, - 13.606f -},{ --29.534f,-28.789f,-26.940f,-24.667f,-21.961f,-18.616f,-15.387f,-11.875f, -8.141f, -5.072f, - -3.231f, -2.509f, -2.584f, -2.354f, -2.446f, -0.044f, 2.869f, 4.479f, 4.976f, 5.619f, - 7.532f, 9.288f, 9.371f, 8.429f, 6.561f, 6.002f, 5.370f, 5.717f, 5.877f, 6.314f, - 7.954f, 9.244f, 10.469f, 11.290f, 11.682f, 11.624f, 11.749f, 12.115f, 12.202f, 11.925f, - 11.403f, 10.773f, 9.754f, 8.633f, 7.410f, 6.042f, 4.412f, 2.726f, 0.570f, -1.691f, - -4.329f, -6.885f, -9.557f,-12.104f,-14.277f,-16.591f,-18.881f,-21.167f,-23.240f,-25.174f, --27.389f,-30.900f,-33.754f,-35.786f,-37.697f,-39.487f,-41.520f,-43.418f,-45.113f,-46.229f, --48.077f,-50.698f,-52.204f,-54.002f,-55.987f,-57.486f,-58.903f,-59.247f,-58.849f,-59.625f, --60.127f,-60.204f,-60.815f,-61.285f,-60.956f,-60.455f,-60.124f,-59.037f,-58.985f,-58.800f, --58.098f,-57.573f,-56.460f,-54.978f,-54.761f,-54.471f,-54.751f,-56.165f,-58.308f,-61.180f, --62.916f,-63.484f,-63.154f,-62.259f,-61.807f,-61.180f,-60.969f,-60.626f,-59.965f,-60.109f, --57.037f,-56.322f,-55.908f,-54.766f,-54.755f,-53.327f,-48.734f,-41.830f,-31.230f,-32.946f, --34.914f,-35.605f,-36.794f,-37.614f,-39.473f,-41.277f,-42.868f,-46.380f,-53.877f,-55.267f, --65.968f,-63.645f,-61.742f,-64.248f,-59.501f,-56.896f,-52.931f,-43.082f,-44.317f,-44.376f, --42.360f,-42.360f,-39.808f,-40.864f,-38.991f,-38.118f,-38.164f,-38.507f,-38.129f,-36.471f, --32.835f,-29.725f,-28.572f,-26.711f,-24.256f,-22.492f,-22.444f,-19.825f,-17.891f,-15.785f, --12.903f,-13.960f,-12.988f,-11.166f,-10.261f, -7.507f, -7.243f, -5.813f, -4.180f, -1.296f, - 1.563f, 4.025f, 7.898f, 6.731f, 9.566f, 11.967f, 13.602f, 13.499f, 13.420f, 13.381f, - 13.606f -},{ --29.534f,-28.814f,-27.063f,-24.859f,-22.241f,-19.072f,-15.939f,-12.451f, -9.156f, -6.432f, - -4.361f, -3.409f, -3.508f, -3.272f, -3.925f, -1.836f, 1.320f, 3.414f, 4.485f, 4.635f, - 6.818f, 9.056f, 10.036f, 7.997f, 4.893f, 5.134f, 4.411f, 4.379f, 3.944f, 4.709f, - 6.610f, 8.259f, 9.337f, 10.079f, 10.443f, 10.304f, 10.534f, 10.581f, 10.875f, 10.520f, - 10.033f, 9.372f, 8.208f, 7.046f, 5.768f, 4.365f, 2.681f, 0.854f, -1.252f, -3.632f, - -6.203f, -8.641f,-11.234f,-13.744f,-16.009f,-18.332f,-20.591f,-22.854f,-24.988f,-26.878f, --29.799f,-32.543f,-34.630f,-36.881f,-38.682f,-40.540f,-42.584f,-44.233f,-46.042f,-47.030f, --47.654f,-49.895f,-52.137f,-52.747f,-54.070f,-55.467f,-56.458f,-57.125f,-58.389f,-57.311f, --58.132f,-58.004f,-58.066f,-57.625f,-56.490f,-55.814f,-55.149f,-54.041f,-53.731f,-53.537f, --53.021f,-52.372f,-51.324f,-51.071f,-51.390f,-52.405f,-55.418f,-57.735f,-58.099f,-59.274f, --60.660f,-61.458f,-62.413f,-62.231f,-61.843f,-60.263f,-59.619f,-59.531f,-59.214f,-59.613f, --54.920f,-54.493f,-54.064f,-53.780f,-54.879f,-52.344f,-48.416f,-41.576f,-30.404f,-32.080f, --34.820f,-36.338f,-37.196f,-37.903f,-40.421f,-41.811f,-43.899f,-50.425f,-58.643f,-56.105f, --64.378f,-62.515f,-62.519f,-64.079f,-57.950f,-57.402f,-51.465f,-45.396f,-48.283f,-45.512f, --44.688f,-43.057f,-40.947f,-40.586f,-39.502f,-38.104f,-37.862f,-38.611f,-37.879f,-35.182f, --32.147f,-29.991f,-28.934f,-26.708f,-24.372f,-23.214f,-22.667f,-19.411f,-17.453f,-14.925f, --12.301f,-14.377f,-13.323f,-11.083f,-10.214f, -7.675f, -7.162f, -5.973f, -4.167f, -1.304f, - 1.648f, 4.318f, 7.903f, 6.714f, 9.573f, 11.885f, 13.487f, 13.403f, 13.383f, 13.345f, - 13.606f -},{ --29.534f,-28.841f,-27.185f,-25.052f,-22.515f,-19.500f,-16.469f,-13.102f,-10.152f, -7.681f, - -5.664f, -4.774f, -4.773f, -4.189f, -4.599f, -3.008f, -0.453f, 1.832f, 3.453f, 3.304f, - 5.562f, 8.402f, 8.673f, 5.818f, 3.073f, 4.332f, 3.426f, 3.156f, 2.045f, 3.084f, - 5.102f, 6.990f, 8.368f, 8.983f, 9.209f, 8.969f, 9.216f, 9.272f, 9.379f, 9.192f, - 8.589f, 7.779f, 6.654f, 5.538f, 4.062f, 2.679f, 0.900f, -0.996f, -3.081f, -5.457f, - -8.068f,-10.661f,-13.284f,-15.660f,-17.972f,-20.301f,-22.427f,-24.535f,-26.214f,-28.234f, --30.524f,-33.039f,-35.281f,-37.625f,-39.574f,-41.438f,-43.090f,-44.781f,-46.381f,-47.666f, --48.362f,-48.777f,-50.529f,-52.062f,-52.880f,-53.935f,-54.810f,-55.688f,-55.771f,-54.899f, --54.050f,-54.541f,-53.551f,-52.139f,-50.942f,-50.417f,-49.342f,-47.802f,-47.166f,-46.726f, --46.945f,-46.517f,-47.350f,-48.831f,-50.575f,-50.247f,-54.257f,-59.321f,-59.754f,-60.868f, --63.776f,-62.827f,-61.683f,-61.107f,-60.054f,-62.015f,-61.373f,-60.017f,-58.736f,-56.597f, --52.811f,-52.270f,-51.111f,-50.594f,-52.276f,-51.022f,-52.523f,-47.324f,-34.348f,-31.179f, --34.209f,-36.569f,-37.888f,-38.754f,-40.838f,-42.509f,-44.546f,-55.690f,-59.999f,-55.623f, --62.995f,-61.444f,-63.117f,-61.527f,-58.992f,-56.688f,-49.932f,-47.476f,-49.441f,-47.181f, --45.649f,-43.464f,-41.972f,-40.442f,-39.019f,-37.573f,-39.019f,-38.758f,-36.719f,-34.103f, --31.216f,-30.416f,-29.115f,-26.873f,-25.379f,-24.639f,-22.729f,-19.500f,-16.751f,-14.673f, --12.297f,-14.740f,-13.708f,-10.924f,-10.057f, -7.864f, -6.955f, -6.153f, -4.189f, -1.341f, - 1.800f, 4.732f, 7.637f, 6.711f, 9.585f, 11.864f, 13.388f, 13.300f, 13.347f, 13.310f, - 13.606f -},{ --29.534f,-28.868f,-27.306f,-25.247f,-22.787f,-19.894f,-16.965f,-13.832f,-11.100f, -8.739f, - -7.071f, -6.514f, -6.199f, -5.367f, -5.264f, -4.010f, -1.949f, 0.473f, 2.071f, 1.407f, - 4.112f, 7.689f, 7.123f, 4.065f, 1.329f, 3.927f, 2.726f, 2.093f, 0.628f, 2.003f, - 4.093f, 5.634f, 7.036f, 7.750f, 7.806f, 7.863f, 7.996f, 8.052f, 7.982f, 7.702f, - 7.157f, 6.262f, 5.030f, 3.695f, 2.436f, 0.873f, -0.875f, -2.804f, -5.025f, -7.445f, - -9.996f,-12.449f,-14.900f,-17.422f,-19.728f,-21.928f,-24.146f,-26.538f,-28.135f,-28.100f, --31.466f,-33.458f,-36.454f,-38.700f,-40.431f,-42.100f,-43.217f,-44.779f,-46.285f,-47.488f, --48.712f,-50.001f,-49.997f,-49.333f,-51.527f,-52.650f,-52.663f,-52.752f,-52.296f,-51.591f, --51.876f,-49.877f,-49.846f,-48.453f,-47.612f,-45.640f,-43.999f,-42.601f,-41.872f,-40.566f, --39.827f,-40.257f,-43.444f,-44.285f,-44.418f,-49.277f,-52.431f,-49.846f,-49.250f,-51.485f, --53.093f,-53.007f,-53.989f,-57.366f,-58.728f,-55.954f,-56.348f,-57.811f,-54.845f,-51.028f, --50.097f,-51.302f,-51.250f,-50.849f,-50.532f,-49.795f,-54.711f,-55.841f,-41.369f,-30.052f, --35.086f,-36.197f,-38.237f,-39.494f,-40.796f,-42.762f,-46.000f,-57.961f,-58.415f,-52.480f, --61.834f,-61.021f,-62.763f,-57.334f,-59.746f,-56.141f,-48.866f,-49.375f,-48.618f,-46.456f, --46.093f,-43.402f,-42.699f,-39.884f,-38.560f,-37.156f,-39.191f,-38.525f,-36.408f,-33.509f, --31.408f,-31.212f,-29.247f,-27.720f,-26.684f,-25.130f,-22.335f,-19.521f,-16.306f,-14.704f, --13.004f,-14.736f,-14.132f,-11.146f, -9.827f, -8.178f, -6.879f, -6.348f, -4.323f, -1.380f, - 1.985f, 5.142f, 7.089f, 6.724f, 9.588f, 11.897f, 13.305f, 13.191f, 13.314f, 13.275f, - 13.606f -},{ --29.534f,-28.896f,-27.425f,-25.447f,-23.056f,-20.256f,-17.429f,-14.621f,-12.009f, -9.648f, - -8.450f, -8.316f, -7.647f, -6.712f, -6.159f, -5.091f, -3.090f, -0.489f, 0.716f, -0.598f, - 2.662f, 6.687f, 6.126f, 3.295f, 0.141f, 3.432f, 2.396f, 0.354f, -0.308f, 1.363f, - 2.952f, 4.629f, 5.704f, 6.255f, 6.542f, 6.669f, 6.773f, 6.694f, 6.471f, 6.149f, - 5.650f, 4.859f, 3.582f, 2.223f, 0.705f, -0.734f, -2.774f, -4.668f, -6.806f, -9.367f, --11.975f,-14.436f,-16.999f,-19.420f,-21.852f,-23.934f,-26.084f,-27.989f,-29.728f,-29.559f, --32.114f,-34.179f,-37.191f,-39.483f,-41.212f,-42.621f,-43.849f,-44.864f,-45.881f,-47.053f, --48.332f,-49.157f,-50.793f,-51.338f,-49.641f,-48.583f,-49.519f,-47.551f,-47.934f,-47.787f, --46.860f,-45.718f,-44.802f,-44.450f,-43.559f,-41.506f,-39.064f,-36.975f,-35.570f,-34.657f, --34.089f,-35.312f,-38.876f,-36.796f,-42.686f,-41.775f,-40.405f,-41.808f,-42.784f,-44.019f, --46.101f,-48.188f,-48.914f,-49.978f,-50.516f,-50.176f,-50.713f,-51.304f,-49.931f,-49.314f, --51.185f,-51.803f,-51.373f,-51.015f,-50.659f,-50.540f,-52.108f,-55.732f,-48.239f,-39.941f, --38.469f,-37.136f,-38.640f,-40.004f,-40.849f,-42.296f,-47.623f,-57.078f,-52.694f,-50.947f, --58.938f,-59.665f,-60.955f,-57.243f,-61.526f,-52.932f,-51.803f,-49.307f,-47.558f,-45.589f, --45.950f,-43.456f,-40.960f,-39.702f,-37.850f,-37.867f,-39.455f,-40.243f,-37.775f,-33.687f, --33.081f,-31.723f,-29.256f,-28.663f,-27.504f,-24.801f,-21.957f,-19.538f,-16.238f,-14.242f, --13.799f,-14.575f,-14.131f,-11.848f, -9.614f, -8.580f, -7.164f, -6.527f, -4.558f, -1.413f, - 2.124f, 5.410f, 6.350f, 6.747f, 9.572f, 11.967f, 13.234f, 13.075f, 13.281f, 13.240f, - 13.606f -},{ --29.534f,-28.925f,-27.543f,-25.651f,-23.328f,-20.595f,-17.874f,-15.437f,-12.908f,-10.527f, - -9.681f, -9.820f, -9.039f, -7.929f, -7.062f, -6.141f, -4.199f, -1.478f, -0.783f, -2.268f, - 0.880f, 4.526f, 3.989f, 1.152f, -0.089f, 2.524f, 1.603f, -1.061f, -1.327f, 0.302f, - 1.547f, 3.382f, 4.391f, 4.946f, 5.301f, 5.447f, 5.602f, 5.332f, 4.979f, 4.552f, - 4.170f, 3.310f, 2.281f, 0.852f, -0.866f, -2.591f, -4.529f, -6.522f, -8.839f,-11.338f, --13.763f,-16.342f,-18.906f,-21.358f,-23.759f,-26.028f,-28.070f,-29.762f,-29.477f,-32.457f, --33.490f,-35.518f,-37.698f,-39.888f,-42.014f,-42.990f,-44.277f,-44.964f,-45.795f,-46.599f, --47.849f,-48.804f,-49.330f,-48.882f,-48.771f,-48.092f,-46.078f,-43.018f,-43.856f,-43.686f, --42.898f,-42.461f,-42.019f,-39.741f,-37.328f,-34.863f,-33.100f,-31.302f,-30.139f,-29.434f, --29.623f,-32.145f,-32.076f,-31.191f,-32.634f,-29.403f,-33.675f,-34.539f,-35.906f,-39.079f, --42.208f,-44.463f,-46.104f,-46.776f,-46.208f,-46.636f,-46.961f,-47.862f,-47.967f,-48.121f, --48.132f,-47.658f,-48.031f,-48.460f,-48.554f,-48.838f,-49.250f,-51.005f,-48.956f,-43.934f, --38.006f,-38.083f,-39.136f,-40.309f,-41.096f,-42.259f,-46.890f,-54.504f,-48.364f,-48.687f, --55.661f,-57.777f,-57.710f,-59.599f,-57.832f,-52.558f,-49.740f,-48.373f,-46.693f,-45.287f, --44.768f,-43.311f,-40.312f,-39.127f,-36.842f,-38.200f,-39.785f,-40.523f,-38.647f,-34.422f, --34.526f,-32.703f,-29.653f,-29.144f,-27.532f,-24.911f,-22.295f,-19.850f,-16.473f,-14.309f, --14.364f,-14.276f,-13.475f,-12.515f, -9.667f, -8.906f, -7.662f, -6.661f, -4.821f, -1.468f, - 2.180f, 5.475f, 5.587f, 6.766f, 9.531f, 12.050f, 13.169f, 12.954f, 13.247f, 13.206f, - 13.606f -},{ --29.534f,-28.955f,-27.659f,-25.861f,-23.604f,-20.921f,-18.326f,-16.246f,-13.819f,-11.477f, --10.733f,-10.868f,-10.354f, -8.992f, -7.946f, -7.067f, -5.532f, -2.992f, -2.647f, -3.641f, - -0.913f, 2.299f, 2.357f, -0.734f, -1.257f, 1.481f, 0.411f, -1.558f, -2.145f, -0.739f, - 0.333f, 1.812f, 2.876f, 3.625f, 4.221f, 4.223f, 4.404f, 3.993f, 3.620f, 3.043f, - 2.455f, 1.850f, 0.758f, -0.785f, -2.618f, -4.548f, -6.435f, -8.432f,-10.824f,-13.216f, --15.663f,-18.083f,-20.710f,-23.199f,-25.491f,-27.726f,-29.611f,-31.925f,-30.650f,-33.727f, --35.054f,-36.846f,-38.376f,-39.959f,-42.022f,-43.232f,-44.443f,-45.838f,-46.593f,-47.162f, --47.605f,-47.652f,-48.005f,-47.686f,-46.252f,-43.988f,-42.446f,-42.107f,-39.167f,-39.273f, --38.598f,-37.396f,-35.311f,-33.754f,-31.345f,-29.658f,-27.664f,-26.676f,-26.179f,-27.047f, --29.074f,-25.725f,-27.033f,-28.612f,-22.450f,-25.693f,-29.777f,-30.510f,-31.927f,-33.975f, --35.792f,-37.764f,-39.257f,-40.676f,-42.390f,-43.097f,-43.839f,-44.153f,-44.406f,-43.961f, --43.621f,-43.326f,-44.201f,-44.133f,-45.874f,-45.496f,-45.554f,-45.540f,-42.191f,-40.303f, --36.075f,-37.353f,-38.622f,-39.733f,-40.007f,-41.921f,-47.599f,-53.604f,-47.404f,-47.213f, --54.977f,-56.310f,-56.238f,-56.760f,-55.964f,-50.850f,-49.317f,-47.326f,-45.511f,-45.336f, --43.147f,-42.890f,-39.879f,-38.027f,-35.719f,-37.709f,-40.547f,-40.391f,-39.579f,-34.912f, --34.626f,-34.114f,-30.492f,-29.264f,-27.563f,-25.127f,-22.698f,-19.590f,-16.635f,-15.145f, --14.577f,-13.798f,-12.869f,-12.768f,-10.114f, -9.088f, -7.998f, -6.785f, -5.063f, -1.554f, - 2.188f, 5.386f, 4.974f, 6.768f, 9.465f, 12.121f, 13.102f, 12.827f, 13.213f, 13.172f, - 13.606f -},{ --29.534f,-28.985f,-27.773f,-26.078f,-23.888f,-21.250f,-18.805f,-17.021f,-14.735f,-12.512f, --11.679f,-11.605f,-11.617f,-10.237f, -9.017f, -7.987f, -6.957f, -5.008f, -4.554f, -4.786f, - -2.428f, 0.210f, 1.033f, -1.169f, -2.843f, 0.421f, 0.019f, -2.935f, -3.175f, -2.026f, - -0.956f, 0.370f, 1.028f, 2.228f, 2.780f, 2.458f, 2.835f, 2.778f, 2.100f, 1.568f, - 0.999f, 0.193f, -0.881f, -2.452f, -4.362f, -6.159f, -8.173f,-10.545f,-12.700f,-14.928f, --17.539f,-19.991f,-22.422f,-24.999f,-27.196f,-29.269f,-31.085f,-33.396f,-32.235f,-34.379f, --35.565f,-35.893f,-37.001f,-39.999f,-41.574f,-43.068f,-44.599f,-45.956f,-47.192f,-47.821f, --47.748f,-47.303f,-46.571f,-45.606f,-44.754f,-43.288f,-41.467f,-39.858f,-37.874f,-36.695f, --35.436f,-32.338f,-30.412f,-28.999f,-27.070f,-24.154f,-21.754f,-21.444f,-24.639f,-22.571f, --19.016f,-18.904f,-21.020f,-19.321f,-20.083f,-20.949f,-23.338f,-25.321f,-27.193f,-29.294f, --31.694f,-33.746f,-35.970f,-38.292f,-38.144f,-38.873f,-39.928f,-41.133f,-41.563f,-41.484f, --41.573f,-41.746f,-41.951f,-42.592f,-42.816f,-41.328f,-42.043f,-43.708f,-39.965f,-36.733f, --35.142f,-35.716f,-36.590f,-37.431f,-38.524f,-41.005f,-47.401f,-50.054f,-46.550f,-46.408f, --56.990f,-56.336f,-55.846f,-56.153f,-54.463f,-49.210f,-49.435f,-45.696f,-44.357f,-44.613f, --42.644f,-41.523f,-38.895f,-37.126f,-36.123f,-38.064f,-41.068f,-40.278f,-39.577f,-35.505f, --34.429f,-34.202f,-31.112f,-29.376f,-27.748f,-24.601f,-22.534f,-19.122f,-16.445f,-15.404f, --14.592f,-13.426f,-12.722f,-12.602f,-10.693f, -9.219f, -8.019f, -6.964f, -5.252f, -1.612f, - 2.226f, 5.257f, 4.626f, 6.740f, 9.387f, 12.155f, 13.024f, 12.697f, 13.175f, 13.139f, - 13.606f -},{ --29.534f,-29.017f,-27.885f,-26.303f,-24.182f,-21.591f,-19.323f,-17.750f,-15.625f,-13.566f, --12.639f,-12.357f,-12.846f,-11.960f,-10.294f, -9.127f, -8.211f, -6.878f, -6.152f, -5.860f, - -4.111f, -2.496f, -1.543f, -2.104f, -2.271f, -0.567f, -0.337f, -4.468f, -4.741f, -3.744f, - -2.225f, -0.864f, -0.174f, 0.684f, 1.278f, 1.590f, 1.273f, 1.438f, 0.812f, 0.096f, - -0.558f, -1.562f, -2.601f, -4.027f, -5.938f, -7.973f, -9.774f,-12.133f,-14.494f,-16.847f, --19.253f,-21.759f,-24.165f,-26.406f,-28.470f,-30.405f,-32.139f,-34.070f,-33.756f,-35.563f, --36.500f,-36.639f,-37.682f,-39.846f,-41.244f,-42.565f,-43.990f,-45.324f,-46.527f,-47.231f, --47.212f,-46.404f,-45.314f,-44.186f,-43.074f,-41.479f,-40.498f,-38.026f,-36.004f,-33.352f, --31.967f,-29.510f,-26.286f,-23.329f,-21.479f,-19.172f,-18.623f,-22.610f,-17.362f,-16.648f, --12.513f,-11.930f,-10.454f,-12.209f,-15.450f,-17.239f,-18.852f,-21.067f,-22.776f,-25.073f, --28.006f,-30.225f,-32.348f,-33.958f,-35.033f,-35.976f,-36.752f,-38.152f,-39.291f,-39.341f, --39.250f,-39.446f,-40.005f,-40.911f,-40.611f,-40.017f,-39.217f,-39.586f,-36.802f,-34.035f, --33.885f,-33.985f,-34.462f,-35.768f,-37.724f,-39.731f,-43.953f,-47.384f,-45.401f,-48.352f, --56.961f,-55.645f,-55.895f,-55.314f,-53.319f,-48.987f,-49.145f,-44.976f,-43.831f,-43.507f, --42.289f,-40.099f,-37.628f,-36.342f,-37.437f,-39.628f,-40.661f,-40.180f,-39.540f,-36.080f, --34.176f,-33.623f,-31.170f,-29.917f,-28.082f,-23.850f,-22.143f,-19.302f,-16.268f,-15.697f, --14.797f,-13.029f,-12.534f,-12.152f,-11.098f, -9.333f, -7.918f, -7.148f, -5.290f, -1.533f, - 2.329f, 5.181f, 4.556f, 6.679f, 9.320f, 12.139f, 12.927f, 12.565f, 13.134f, 13.107f, - 13.606f -},{ --29.534f,-29.049f,-27.996f,-26.534f,-24.489f,-21.952f,-19.877f,-18.439f,-16.455f,-14.550f, --13.682f,-13.369f,-14.048f,-14.056f,-11.624f,-10.604f, -9.383f, -8.206f, -7.598f, -7.256f, - -5.931f, -4.728f, -3.376f, -2.699f, -1.440f, -1.012f, -1.750f, -5.836f, -6.210f, -5.179f, - -3.480f, -1.910f, -1.264f, -0.741f, 0.001f, 0.291f, 0.065f, -0.043f, -0.571f, -1.337f, - -2.186f, -2.884f, -4.241f, -5.691f, -7.475f, -9.424f,-11.698f,-13.930f,-16.107f,-18.557f, --21.037f,-23.362f,-25.662f,-27.853f,-29.752f,-31.545f,-32.950f,-35.036f,-34.627f,-36.906f, --37.669f,-38.261f,-39.388f,-39.784f,-39.026f,-41.687f,-42.964f,-44.005f,-45.070f,-45.597f, --46.072f,-45.381f,-43.794f,-42.131f,-40.499f,-39.592f,-37.892f,-36.574f,-33.436f,-28.624f, --26.696f,-25.350f,-22.660f,-18.388f,-16.738f,-18.756f,-18.736f,-15.032f,-15.937f,-11.869f, - -7.164f, -6.713f, -6.779f, -8.616f,-10.514f,-12.602f,-14.787f,-16.730f,-18.779f,-21.905f, --25.356f,-27.666f,-29.490f,-31.763f,-33.153f,-34.152f,-35.141f,-36.560f,-37.238f,-37.499f, --37.448f,-37.267f,-37.901f,-38.670f,-38.851f,-38.927f,-37.869f,-36.248f,-33.506f,-31.976f, --31.653f,-32.061f,-33.683f,-34.535f,-36.364f,-39.783f,-45.708f,-45.848f,-44.247f,-51.897f, --55.322f,-55.625f,-55.417f,-53.369f,-52.005f,-49.338f,-47.841f,-44.478f,-43.509f,-43.362f, --41.668f,-39.569f,-36.815f,-36.236f,-39.183f,-40.230f,-40.260f,-39.020f,-38.734f,-36.181f, --34.245f,-32.926f,-31.189f,-30.141f,-28.782f,-23.926f,-22.068f,-19.930f,-16.496f,-16.892f, --15.010f,-12.318f,-12.421f,-11.763f,-11.309f, -9.290f, -7.880f, -7.115f, -5.014f, -1.243f, - 2.463f, 5.160f, 4.670f, 6.600f, 9.285f, 12.068f, 12.807f, 12.432f, 13.087f, 13.075f, - 13.606f -},{ --29.534f,-29.082f,-28.105f,-26.772f,-24.808f,-22.332f,-20.445f,-19.099f,-17.207f,-15.425f, --14.784f,-14.643f,-15.284f,-16.109f,-13.014f,-12.222f,-10.764f, -9.481f, -9.170f, -8.847f, - -7.434f, -6.247f, -4.917f, -3.180f, -2.006f, -1.737f, -4.371f, -7.229f, -7.134f, -6.017f, - -4.385f, -2.994f, -2.308f, -1.627f, -1.120f, -0.590f, -0.801f, -1.392f, -1.937f, -2.677f, - -3.619f, -4.513f, -5.608f, -7.348f, -9.182f,-10.881f,-13.140f,-15.922f,-18.059f,-20.181f, --22.609f,-24.922f,-27.182f,-29.318f,-31.152f,-32.754f,-34.873f,-36.540f,-35.821f,-37.067f, --38.185f,-38.627f,-38.993f,-39.074f,-39.847f,-40.875f,-41.804f,-42.723f,-43.562f,-44.312f, --43.960f,-43.534f,-42.569f,-41.829f,-39.761f,-36.924f,-34.574f,-31.366f,-28.257f,-25.930f, --23.151f,-20.644f,-18.726f,-16.848f,-16.668f,-14.938f,-10.372f, -9.765f, -3.401f, -0.385f, - -1.964f, -3.164f, -3.932f, -5.126f, -6.538f, -7.989f,-10.370f,-13.935f,-16.916f,-19.891f, --22.697f,-25.178f,-27.343f,-29.178f,-30.011f,-31.292f,-32.094f,-33.128f,-34.321f,-34.562f, --35.306f,-35.773f,-36.761f,-37.002f,-37.042f,-36.807f,-36.823f,-35.095f,-32.064f,-30.762f, --31.127f,-31.241f,-32.469f,-33.852f,-35.663f,-39.138f,-44.352f,-43.554f,-44.789f,-51.792f, --54.294f,-54.810f,-54.121f,-51.793f,-50.846f,-48.903f,-45.806f,-43.397f,-43.703f,-43.198f, --41.191f,-39.456f,-36.520f,-36.964f,-39.718f,-39.700f,-38.960f,-37.686f,-37.335f,-36.033f, --34.067f,-32.663f,-31.171f,-29.516f,-29.027f,-24.867f,-22.245f,-19.959f,-16.665f,-17.349f, --14.966f,-11.930f,-13.140f,-11.848f,-11.322f, -9.029f, -7.815f, -6.678f, -4.355f, -0.780f, - 2.552f, 5.103f, 4.816f, 6.530f, 9.299f, 11.947f, 12.660f, 12.304f, 13.033f, 13.045f, - 13.606f -},{ --29.534f,-29.116f,-28.213f,-27.015f,-25.141f,-22.726f,-20.998f,-19.740f,-17.897f,-16.225f, --15.878f,-15.984f,-16.704f,-17.730f,-14.564f,-13.595f,-12.300f,-11.231f,-10.837f,-10.100f, - -8.773f, -7.957f, -7.564f, -5.647f, -3.244f, -4.120f, -7.723f, -8.454f, -7.925f, -6.881f, - -5.479f, -4.286f, -3.547f, -2.843f, -2.244f, -2.214f, -2.271f, -2.592f, -3.269f, -3.929f, - -5.044f, -5.991f, -7.326f, -8.936f,-10.954f,-12.583f,-14.440f,-16.951f,-19.426f,-21.855f, --24.243f,-26.563f,-28.571f,-30.692f,-32.577f,-34.094f,-36.623f,-38.793f,-37.194f,-38.562f, --38.140f,-38.433f,-38.432f,-38.974f,-39.618f,-39.940f,-40.712f,-41.252f,-41.748f,-42.160f, --42.187f,-41.836f,-41.337f,-39.804f,-37.299f,-34.075f,-29.971f,-26.474f,-24.068f,-22.655f, --20.808f,-16.803f,-14.674f,-14.935f,-12.496f, -8.891f, -2.837f, 4.160f, 5.147f, 3.317f, - 1.980f, 1.433f, -0.163f, -1.066f, -2.178f, -3.173f, -7.428f,-11.618f,-14.271f,-16.869f, --19.424f,-21.993f,-23.817f,-25.302f,-26.585f,-29.043f,-30.512f,-31.592f,-32.481f,-33.413f, --33.711f,-34.090f,-34.274f,-34.785f,-35.525f,-34.720f,-35.594f,-34.668f,-32.953f,-32.393f, --32.222f,-30.976f,-32.114f,-34.049f,-35.706f,-37.924f,-42.555f,-43.201f,-46.203f,-51.532f, --52.731f,-52.883f,-52.691f,-49.998f,-49.440f,-47.337f,-44.577f,-43.756f,-43.926f,-42.482f, --40.899f,-38.447f,-37.888f,-37.889f,-38.905f,-38.653f,-38.136f,-36.570f,-36.243f,-35.511f, --33.495f,-32.365f,-30.621f,-29.387f,-28.645f,-25.148f,-21.991f,-18.991f,-16.376f,-16.463f, --14.906f,-12.350f,-14.193f,-12.381f,-11.006f, -8.803f, -7.546f, -5.939f, -3.474f, -0.270f, - 2.551f, 4.889f, 4.850f, 6.502f, 9.364f, 11.789f, 12.486f, 12.181f, 12.971f, 13.015f, - 13.606f -},{ --29.534f,-29.150f,-28.318f,-27.262f,-25.484f,-23.128f,-21.510f,-20.367f,-18.558f,-17.022f, --16.924f,-17.192f,-18.401f,-18.760f,-16.078f,-14.625f,-13.733f,-13.174f,-12.446f,-11.225f, --10.269f, -9.590f, -9.397f, -8.125f, -5.573f, -6.787f, -9.325f, -9.455f, -8.523f, -7.660f, - -6.735f, -5.574f, -4.834f, -4.206f, -3.803f, -3.449f, -3.536f, -4.140f, -4.542f, -5.364f, - -6.343f, -7.506f, -8.808f,-10.487f,-12.469f,-14.124f,-16.142f,-18.463f,-20.788f,-23.070f, --25.439f,-27.811f,-30.036f,-32.032f,-33.497f,-37.120f,-37.597f,-39.365f,-40.195f,-39.276f, --38.943f,-38.201f,-37.651f,-38.259f,-38.858f,-39.131f,-39.554f,-39.315f,-39.536f,-39.479f, --39.925f,-39.641f,-38.824f,-37.459f,-35.423f,-32.191f,-28.171f,-23.794f,-21.091f,-18.729f, --15.987f,-12.867f,-13.219f,-11.839f,-10.484f, -3.999f, 7.362f, 8.368f, 7.677f, 7.506f, - 6.350f, 4.482f, 3.779f, 2.027f, 0.725f, -1.237f, -5.238f, -8.569f,-10.771f,-13.149f, --15.734f,-17.992f,-19.907f,-22.218f,-24.179f,-26.994f,-29.583f,-29.650f,-31.907f,-30.570f, --31.367f,-32.454f,-32.666f,-32.788f,-33.170f,-32.686f,-32.704f,-34.453f,-34.666f,-37.849f, --41.015f,-32.766f,-31.435f,-32.769f,-35.664f,-38.362f,-43.336f,-43.047f,-48.993f,-50.900f, --49.922f,-50.310f,-50.144f,-48.813f,-47.001f,-46.974f,-44.723f,-43.530f,-43.188f,-41.501f, --40.380f,-38.307f,-38.010f,-37.865f,-37.834f,-36.836f,-36.582f,-35.920f,-34.815f,-33.967f, --32.914f,-31.381f,-30.238f,-29.846f,-27.999f,-23.958f,-21.239f,-18.312f,-16.028f,-15.690f, --14.633f,-12.793f,-14.274f,-12.942f,-10.527f, -8.908f, -7.096f, -5.239f, -2.676f, 0.163f, - 2.466f, 4.446f, 4.699f, 6.543f, 9.461f, 11.614f, 12.289f, 12.069f, 12.901f, 12.987f, - 13.606f -},{ --29.534f,-29.184f,-28.422f,-27.512f,-25.835f,-23.529f,-21.965f,-20.981f,-19.224f,-17.869f, --17.943f,-18.213f,-20.192f,-19.254f,-17.137f,-15.653f,-15.152f,-14.913f,-13.997f,-12.657f, --11.752f,-11.201f,-10.615f, -9.480f, -8.066f, -8.285f,-10.140f,-10.264f, -9.080f, -8.004f, - -7.371f, -6.813f, -5.882f, -5.482f, -5.015f, -4.963f, -4.834f, -5.170f, -5.908f, -6.809f, - -7.728f, -8.845f,-10.240f,-11.987f,-13.916f,-15.701f,-17.708f,-20.037f,-22.155f,-24.452f, --26.680f,-29.018f,-31.273f,-33.374f,-35.507f,-38.035f,-39.895f,-40.092f,-40.436f,-39.345f, --38.831f,-38.355f,-38.055f,-37.988f,-37.952f,-37.902f,-38.660f,-37.434f,-34.946f,-36.646f, --37.187f,-37.349f,-36.320f,-34.845f,-33.229f,-31.018f,-26.942f,-22.028f,-17.211f,-13.780f, --11.260f,-10.025f,-12.152f, -9.350f, -3.998f, 7.620f, 11.303f, 12.084f, 11.646f, 10.955f, - 10.414f, 8.552f, 7.551f, 5.488f, 2.903f, 0.499f, -3.097f, -5.412f, -7.083f, -9.402f, --12.188f,-14.798f,-17.232f,-19.700f,-21.367f,-24.488f,-26.825f,-27.129f,-29.982f,-29.038f, --29.683f,-31.107f,-30.396f,-31.217f,-31.687f,-30.965f,-30.882f,-32.166f,-37.263f,-42.559f, --43.693f,-40.560f,-34.876f,-34.149f,-36.421f,-38.886f,-42.258f,-43.552f,-46.919f,-48.222f, --47.233f,-48.031f,-48.087f,-45.887f,-45.812f,-45.765f,-44.101f,-43.199f,-42.590f,-41.037f, --39.978f,-37.811f,-39.147f,-37.146f,-35.609f,-35.260f,-35.646f,-35.327f,-33.530f,-32.351f, --32.061f,-30.524f,-29.799f,-29.637f,-27.156f,-22.647f,-20.701f,-18.449f,-16.088f,-15.428f, --13.722f,-12.558f,-13.369f,-13.151f,-10.363f, -9.190f, -6.644f, -4.806f, -2.158f, 0.479f, - 2.311f, 3.790f, 4.383f, 6.658f, 9.560f, 11.441f, 12.074f, 11.970f, 12.820f, 12.960f, - 13.606f -},{ --29.534f,-29.220f,-28.525f,-27.761f,-26.192f,-23.924f,-22.372f,-21.577f,-19.910f,-18.760f, --18.970f,-19.138f,-21.601f,-19.385f,-17.661f,-16.911f,-16.752f,-16.619f,-15.609f,-14.027f, --13.031f,-13.019f,-12.072f,-10.980f,-10.020f, -9.251f,-11.418f,-11.572f, -9.973f, -8.859f, - -7.926f, -7.597f, -6.943f, -6.593f, -6.179f, -6.062f, -6.089f, -6.443f, -7.032f, -8.019f, - -9.262f,-10.203f,-11.765f,-13.297f,-15.145f,-16.957f,-19.198f,-21.440f,-23.558f,-25.585f, --28.008f,-30.266f,-32.378f,-34.300f,-37.064f,-39.742f,-40.891f,-40.847f,-41.046f,-39.568f, --39.222f,-38.931f,-38.547f,-37.869f,-37.434f,-37.830f,-36.965f,-36.991f,-34.002f,-35.348f, --35.113f,-35.029f,-34.088f,-32.734f,-30.743f,-28.367f,-24.647f,-19.307f,-13.797f, -8.364f, - -6.048f, -9.393f,-11.687f, -6.018f, 7.611f, 13.225f, 14.182f, 14.803f, 15.268f, 15.029f, - 14.418f, 12.950f, 11.715f, 9.358f, 6.203f, 3.131f, 0.446f, -1.517f, -3.446f, -6.096f, - -9.052f,-11.924f,-14.073f,-16.084f,-18.078f,-21.198f,-23.453f,-24.596f,-24.756f,-26.914f, --28.058f,-29.378f,-30.018f,-30.102f,-31.709f,-31.800f,-31.042f,-31.076f,-37.037f,-41.823f, --42.342f,-42.709f,-40.917f,-38.067f,-37.978f,-39.465f,-40.034f,-42.068f,-44.619f,-45.095f, --44.625f,-45.663f,-45.806f,-43.775f,-44.058f,-43.640f,-42.469f,-42.238f,-41.351f,-40.403f, --39.806f,-38.313f,-39.964f,-35.881f,-33.971f,-34.486f,-34.278f,-34.821f,-33.651f,-31.778f, --31.123f,-29.963f,-29.484f,-29.113f,-26.474f,-22.040f,-20.446f,-18.576f,-16.493f,-15.221f, --12.615f,-11.841f,-12.377f,-12.810f,-10.604f, -9.138f, -6.264f, -4.538f, -1.866f, 0.710f, - 2.062f, 3.018f, 4.002f, 6.828f, 9.623f, 11.286f, 11.850f, 11.888f, 12.729f, 12.935f, - 13.606f -},{ --29.534f,-29.255f,-28.625f,-28.009f,-26.552f,-24.314f,-22.757f,-22.158f,-20.618f,-19.659f, --20.005f,-20.094f,-22.232f,-19.386f,-18.104f,-18.185f,-18.324f,-18.399f,-17.312f,-15.193f, --14.377f,-14.577f,-13.064f,-12.085f,-12.111f,-10.559f,-11.844f,-12.585f,-11.464f,-10.060f, - -8.876f, -8.383f, -8.068f, -7.622f, -7.407f, -7.134f, -7.252f, -7.791f, -8.458f, -9.414f, --10.398f,-11.728f,-13.091f,-14.667f,-16.406f,-18.534f,-20.629f,-22.709f,-25.027f,-26.968f, --29.177f,-31.313f,-33.225f,-34.836f,-38.144f,-40.493f,-40.943f,-40.395f,-40.389f,-40.296f, --39.556f,-39.001f,-38.905f,-38.008f,-36.997f,-37.076f,-37.099f,-36.280f,-35.739f,-34.874f, --33.837f,-33.098f,-31.923f,-30.561f,-28.185f,-24.649f,-20.610f,-16.572f,-12.734f, -7.986f, - -4.677f, -8.951f, -6.802f, 7.619f, 14.027f, 15.950f, 17.187f, 18.286f, 18.841f, 18.929f, - 18.051f, 16.916f, 15.413f, 13.346f, 10.218f, 7.622f, 5.730f, 3.146f, -0.020f, -2.904f, - -5.068f, -7.548f, -9.935f,-12.022f,-14.087f,-16.802f,-19.343f,-19.816f,-21.199f,-23.615f, --25.120f,-27.477f,-28.726f,-28.941f,-31.280f,-31.595f,-30.438f,-30.926f,-34.598f,-38.931f, --40.583f,-41.894f,-40.755f,-38.524f,-38.168f,-37.533f,-36.851f,-39.744f,-42.385f,-41.606f, --43.169f,-41.977f,-43.350f,-42.571f,-41.886f,-41.639f,-40.537f,-40.230f,-39.806f,-39.438f, --39.034f,-38.607f,-39.319f,-35.333f,-33.975f,-32.938f,-33.510f,-34.416f,-33.639f,-31.788f, --31.094f,-29.896f,-29.213f,-28.993f,-26.248f,-21.897f,-20.052f,-18.500f,-16.601f,-14.970f, --11.895f,-10.908f,-11.551f,-12.005f,-10.780f, -8.554f, -5.849f, -4.225f, -1.630f, 0.889f, - 1.668f, 2.251f, 3.682f, 7.003f, 9.620f, 11.159f, 11.624f, 11.824f, 12.627f, 12.912f, - 13.606f -},{ --29.534f,-29.291f,-28.724f,-28.254f,-26.913f,-24.704f,-23.161f,-22.734f,-21.345f,-20.544f, --21.011f,-21.150f,-22.198f,-19.511f,-18.932f,-19.337f,-19.699f,-20.014f,-18.920f,-16.627f, --15.807f,-15.862f,-14.267f,-13.303f,-13.583f,-11.930f,-13.174f,-13.336f,-13.211f,-11.440f, --10.063f, -9.388f, -9.185f, -8.875f, -8.757f, -8.509f, -8.581f, -9.041f, -9.779f,-10.719f, --11.744f,-12.874f,-14.484f,-15.969f,-17.670f,-19.878f,-22.020f,-24.079f,-26.051f,-28.242f, --30.185f,-32.143f,-33.847f,-35.520f,-38.806f,-40.499f,-40.490f,-40.043f,-40.629f,-40.326f, --39.447f,-39.087f,-38.852f,-37.792f,-37.149f,-37.115f,-34.962f,-33.784f,-32.976f,-32.964f, --32.297f,-31.151f,-29.724f,-27.835f,-25.246f,-21.674f,-17.385f,-12.792f, -9.300f, -7.320f, - -7.770f, -5.856f, 1.904f, 20.129f, 18.627f, 19.670f, 21.365f, 21.773f, 22.295f, 22.032f, - 22.043f, 21.201f, 19.845f, 17.857f, 14.981f, 11.861f, 9.515f, 6.924f, 4.218f, 1.524f, - -1.483f, -3.074f, -5.101f, -7.265f, -8.831f,-12.113f,-14.269f,-17.360f,-19.484f,-21.452f, --23.408f,-24.180f,-25.965f,-27.746f,-29.273f,-29.523f,-28.376f,-29.427f,-31.318f,-34.321f, --37.827f,-39.249f,-37.951f,-35.979f,-36.315f,-36.246f,-36.057f,-36.792f,-39.124f,-39.137f, --39.767f,-40.348f,-39.789f,-40.413f,-39.754f,-39.591f,-38.559f,-37.758f,-36.766f,-36.869f, --37.186f,-37.061f,-36.454f,-35.153f,-32.557f,-32.474f,-32.559f,-33.611f,-33.421f,-31.211f, --30.532f,-29.793f,-29.087f,-28.584f,-25.985f,-21.697f,-19.256f,-18.334f,-16.405f,-14.578f, --11.311f, -9.947f,-10.758f,-11.185f,-10.559f, -7.793f, -5.288f, -3.883f, -1.387f, 0.984f, - 1.119f, 1.594f, 3.520f, 7.126f, 9.541f, 11.062f, 11.406f, 11.779f, 12.515f, 12.890f, - 13.606f -},{ --29.534f,-29.327f,-28.822f,-28.492f,-27.273f,-25.102f,-23.625f,-23.325f,-22.097f,-21.447f, --21.970f,-22.282f,-22.130f,-19.996f,-20.123f,-20.714f,-21.321f,-21.683f,-20.372f,-18.069f, --16.805f,-16.858f,-15.532f,-15.147f,-14.361f,-13.140f,-15.562f,-14.525f,-13.964f,-12.622f, --11.158f,-10.659f,-10.166f, -9.901f, -9.735f, -9.804f, -9.842f,-10.264f,-11.018f,-11.973f, --13.052f,-14.127f,-15.598f,-17.395f,-19.030f,-21.034f,-23.318f,-25.216f,-27.403f,-29.238f, --31.083f,-32.863f,-34.121f,-36.627f,-39.371f,-40.097f,-39.729f,-40.628f,-40.673f,-40.187f, --39.922f,-39.404f,-39.452f,-37.887f,-37.687f,-35.356f,-32.379f,-31.820f,-31.114f,-31.257f, --30.054f,-29.096f,-27.308f,-25.046f,-21.993f,-18.374f,-14.426f, -9.525f, -6.512f, -5.275f, - -6.581f, -2.772f, 12.361f, 21.680f, 21.157f, 22.874f, 23.886f, 25.062f, 25.654f, 26.036f, - 26.013f, 25.156f, 23.070f, 21.383f, 18.955f, 16.684f, 14.236f, 10.941f, 7.779f, 6.156f, - 2.760f, 1.067f, 1.192f, -2.300f, -4.468f, -7.348f,-11.745f,-14.519f,-16.043f,-17.835f, --20.635f,-21.799f,-23.015f,-25.512f,-26.711f,-27.152f,-26.480f,-26.945f,-28.445f,-30.438f, --32.462f,-35.125f,-33.932f,-33.981f,-34.954f,-35.380f,-33.942f,-33.777f,-35.713f,-35.749f, --36.301f,-37.970f,-36.179f,-37.948f,-37.316f,-37.015f,-36.388f,-35.472f,-34.393f,-33.769f, --34.263f,-34.455f,-34.272f,-34.227f,-32.071f,-31.568f,-32.185f,-33.233f,-32.818f,-30.589f, --29.414f,-29.041f,-28.990f,-27.786f,-25.231f,-20.881f,-18.121f,-17.904f,-16.551f,-14.051f, --10.346f, -9.239f,-10.183f,-10.723f,-10.110f, -7.210f, -4.637f, -3.703f, -1.239f, 0.898f, - 0.494f, 1.103f, 3.541f, 7.150f, 9.403f, 10.989f, 11.204f, 11.751f, 12.392f, 12.871f, - 13.606f -},{ --29.534f,-29.364f,-28.917f,-28.723f,-27.631f,-25.521f,-24.176f,-23.950f,-22.890f,-22.435f, --22.934f,-23.418f,-22.650f,-20.997f,-21.394f,-22.571f,-23.556f,-23.969f,-22.079f,-19.020f, --17.521f,-17.624f,-16.621f,-16.550f,-14.910f,-15.107f,-17.655f,-16.047f,-14.834f,-13.555f, --12.338f,-11.911f,-11.487f,-11.165f,-10.795f,-10.928f,-11.138f,-11.503f,-12.128f,-12.946f, --14.149f,-15.400f,-16.944f,-18.614f,-20.502f,-22.456f,-24.456f,-26.369f,-28.423f,-30.390f, --31.967f,-33.418f,-34.367f,-37.390f,-39.850f,-39.987f,-39.512f,-39.898f,-40.106f,-40.095f, --39.921f,-39.646f,-39.121f,-38.136f,-36.609f,-33.988f,-32.370f,-31.487f,-30.994f,-29.602f, --27.664f,-26.757f,-25.100f,-22.494f,-19.437f,-15.270f, -9.412f, -5.591f, -2.915f, -2.442f, - -3.742f, 1.020f, 19.057f, 22.256f, 23.896f, 25.614f, 26.960f, 28.112f, 29.281f, 30.053f, - 30.414f, 28.755f, 26.490f, 24.221f, 21.912f, 19.636f, 17.300f, 14.986f, 12.506f, 10.354f, - 7.962f, 5.647f, 4.184f, 1.242f, -2.050f, -5.427f, -9.048f,-10.533f,-12.626f,-13.898f, --16.623f,-18.849f,-20.234f,-22.356f,-23.742f,-24.505f,-23.910f,-24.286f,-25.245f,-27.431f, --27.322f,-29.411f,-28.623f,-31.388f,-33.186f,-33.502f,-31.353f,-31.371f,-32.186f,-32.032f, --32.062f,-33.170f,-32.727f,-34.398f,-35.093f,-34.296f,-33.858f,-33.068f,-32.338f,-31.944f, --32.193f,-31.908f,-31.887f,-31.236f,-32.877f,-32.303f,-28.789f,-29.788f,-31.615f,-29.651f, --28.314f,-28.496f,-27.869f,-26.492f,-23.962f,-19.927f,-17.400f,-17.384f,-16.489f,-13.575f, - -9.317f, -8.902f,-10.024f,-10.533f, -9.694f, -6.738f, -4.075f, -3.688f, -1.296f, 0.530f, - -0.063f, 0.788f, 3.698f, 7.063f, 9.250f, 10.928f, 11.024f, 11.739f, 12.261f, 12.853f, - 13.606f -},{ --29.534f,-29.401f,-29.011f,-28.946f,-27.988f,-25.969f,-24.822f,-24.622f,-23.737f,-23.552f, --23.998f,-24.499f,-23.823f,-22.489f,-22.748f,-24.520f,-25.864f,-26.558f,-24.226f,-20.047f, --18.279f,-18.392f,-18.010f,-17.716f,-15.249f,-17.216f,-19.295f,-17.850f,-16.162f,-14.709f, --13.579f,-13.001f,-12.690f,-12.432f,-12.153f,-12.082f,-12.160f,-12.675f,-13.320f,-14.108f, --15.248f,-16.621f,-18.024f,-19.646f,-21.405f,-23.486f,-25.467f,-27.443f,-29.220f,-31.040f, --32.551f,-33.756f,-34.888f,-37.656f,-39.970f,-38.893f,-36.850f,-37.750f,-39.305f,-39.783f, --39.551f,-39.257f,-38.102f,-37.224f,-34.763f,-33.560f,-33.132f,-32.224f,-30.688f,-28.152f, --25.772f,-23.693f,-22.000f,-20.096f,-17.512f,-14.067f, -9.586f, -4.376f, 0.377f, -0.161f, - -2.172f, 7.220f, 23.520f, 24.376f, 26.294f, 27.840f, 29.368f, 31.392f, 32.590f, 33.751f, - 33.904f, 32.824f, 29.999f, 27.503f, 25.245f, 22.852f, 21.199f, 17.674f, 16.293f, 13.060f, - 10.843f, 8.636f, 5.960f, 3.443f, -0.473f, -2.657f, -6.312f, -7.635f, -8.483f,-10.467f, --12.674f,-14.684f,-17.398f,-18.751f,-20.179f,-21.409f,-20.716f,-21.607f,-22.510f,-23.731f, --23.688f,-24.386f,-26.251f,-28.410f,-28.295f,-31.517f,-28.832f,-29.851f,-29.788f,-28.467f, --28.800f,-27.841f,-29.346f,-31.277f,-32.127f,-31.935f,-31.536f,-31.007f,-30.491f,-29.776f, --29.537f,-29.477f,-29.605f,-29.142f,-31.154f,-29.784f,-28.000f,-26.610f,-29.016f,-28.546f, --27.674f,-27.265f,-26.561f,-25.129f,-22.617f,-19.136f,-17.047f,-17.036f,-15.764f,-13.300f, - -9.214f, -9.026f,-10.181f,-10.394f, -9.348f, -6.234f, -3.732f, -3.528f, -1.518f, -0.158f, - -0.449f, 0.629f, 3.901f, 6.895f, 9.135f, 10.861f, 10.870f, 11.738f, 12.122f, 12.838f, - 13.606f -},{ --29.534f,-29.437f,-29.104f,-29.158f,-28.342f,-26.454f,-25.544f,-25.342f,-24.631f,-24.768f, --25.214f,-25.518f,-25.191f,-24.220f,-24.442f,-26.072f,-27.422f,-28.286f,-26.022f,-21.678f, --18.641f,-18.630f,-18.370f,-18.332f,-16.236f,-18.461f,-19.984f,-19.538f,-17.549f,-16.003f, --14.696f,-14.139f,-13.813f,-13.647f,-13.487f,-13.398f,-13.554f,-13.758f,-14.438f,-15.300f, --16.386f,-17.658f,-19.100f,-20.618f,-22.397f,-24.292f,-26.239f,-28.217f,-30.074f,-31.754f, --33.168f,-34.385f,-35.452f,-38.600f,-39.864f,-38.224f,-36.341f,-37.951f,-39.092f,-39.259f, --38.619f,-37.819f,-36.806f,-34.428f,-31.469f,-30.080f,-30.402f,-30.748f,-28.850f,-26.905f, --23.887f,-22.174f,-19.384f,-17.263f,-14.808f,-12.069f, -7.682f, -2.584f, 3.293f, 2.693f, - 0.856f, 11.403f, 25.340f, 24.987f, 28.397f, 30.460f, 31.965f, 33.964f, 35.619f, 36.931f, - 37.184f, 36.720f, 34.325f, 31.103f, 28.843f, 26.792f, 24.124f, 21.764f, 20.310f, 17.714f, - 14.662f, 11.932f, 8.640f, 6.204f, 3.311f, 1.521f, -1.119f, -4.829f, -6.365f, -6.918f, - -9.310f,-10.715f,-13.591f,-14.882f,-16.648f,-17.422f,-18.524f,-19.476f,-20.340f,-21.369f, --22.146f,-22.513f,-23.843f,-25.906f,-25.074f,-27.118f,-26.324f,-24.801f,-25.047f,-25.220f, --25.060f,-23.983f,-26.288f,-28.047f,-28.427f,-28.734f,-28.342f,-28.338f,-28.056f,-27.586f, --27.261f,-27.485f,-27.446f,-26.737f,-27.403f,-26.304f,-26.965f,-24.432f,-26.560f,-27.871f, --27.536f,-26.231f,-25.328f,-24.313f,-21.517f,-18.281f,-16.263f,-16.455f,-15.205f,-12.968f, --10.057f, -9.596f,-10.306f,-10.247f, -9.017f, -5.845f, -3.546f, -2.975f, -1.740f, -1.088f, - -0.669f, 0.593f, 4.065f, 6.712f, 9.108f, 10.774f, 10.746f, 11.741f, 11.978f, 12.826f, - 13.606f -},{ --29.534f,-29.474f,-29.194f,-29.360f,-28.695f,-26.976f,-26.307f,-26.098f,-25.543f,-25.981f, --26.519f,-26.530f,-26.337f,-25.862f,-26.418f,-27.330f,-28.175f,-28.664f,-26.757f,-23.508f, --19.380f,-18.776f,-17.884f,-17.908f,-17.592f,-19.057f,-20.640f,-20.764f,-19.075f,-17.300f, --15.952f,-15.323f,-14.969f,-14.915f,-14.736f,-14.715f,-14.820f,-15.147f,-15.554f,-16.349f, --17.417f,-18.658f,-20.007f,-21.492f,-23.293f,-25.210f,-27.202f,-28.870f,-30.647f,-32.308f, --33.671f,-34.914f,-36.152f,-38.679f,-40.603f,-38.649f,-37.126f,-38.555f,-39.113f,-38.355f, --37.187f,-36.453f,-33.667f,-30.094f,-26.687f,-24.930f,-24.986f,-26.577f,-26.551f,-23.944f, --22.191f,-20.465f,-17.100f,-14.337f,-11.377f, -8.020f, -4.422f, 0.615f, 5.655f, 4.979f, - 4.806f, 15.538f, 26.548f, 27.910f, 31.102f, 32.988f, 35.317f, 37.544f, 39.378f, 41.254f, - 40.794f, 40.681f, 38.076f, 34.751f, 32.756f, 31.108f, 28.497f, 26.055f, 24.852f, 22.610f, - 19.156f, 16.218f, 13.435f, 10.641f, 8.397f, 5.876f, 3.717f, 0.587f, -3.548f, -3.850f, - -5.892f, -7.977f, -9.540f,-11.631f,-13.258f,-13.976f,-16.081f,-17.710f,-19.120f,-20.434f, --22.107f,-22.382f,-23.509f,-23.373f,-22.897f,-22.385f,-21.623f,-20.671f,-19.565f,-19.237f, --19.705f,-20.619f,-22.666f,-24.955f,-25.465f,-25.595f,-25.440f,-25.517f,-25.740f,-25.259f, --25.376f,-25.353f,-24.747f,-24.772f,-23.693f,-24.748f,-25.769f,-23.534f,-24.095f,-27.370f, --27.699f,-26.020f,-24.612f,-23.674f,-20.655f,-17.586f,-15.560f,-15.422f,-14.963f,-12.317f, --10.791f,-10.173f,-10.094f,-10.015f, -8.653f, -5.719f, -3.330f, -2.254f, -1.817f, -2.053f, - -0.810f, 0.654f, 4.146f, 6.597f, 9.197f, 10.652f, 10.651f, 11.742f, 11.833f, 12.815f, - 13.606f -},{ --29.534f,-29.511f,-29.283f,-29.551f,-29.046f,-27.533f,-27.071f,-26.872f,-26.435f,-27.081f, --27.768f,-27.605f,-27.325f,-27.287f,-28.169f,-28.633f,-28.687f,-28.493f,-27.041f,-25.066f, --21.698f,-20.145f,-18.059f,-17.493f,-18.949f,-19.314f,-21.763f,-21.854f,-20.665f,-18.702f, --17.094f,-16.486f,-16.171f,-16.057f,-15.923f,-15.827f,-16.007f,-16.265f,-16.843f,-17.420f, --18.324f,-19.450f,-20.916f,-22.358f,-24.112f,-25.968f,-27.698f,-29.362f,-31.014f,-32.695f, --33.926f,-35.212f,-36.256f,-39.004f,-40.615f,-40.078f,-38.134f,-38.227f,-38.281f,-37.481f, --36.208f,-33.612f,-28.901f,-25.989f,-23.834f,-21.998f,-20.904f,-21.314f,-22.105f,-21.917f, --18.734f,-16.581f,-14.122f,-10.313f, -8.927f, -5.196f, -0.509f, 2.950f, 7.134f, 4.606f, - 9.709f, 20.761f, 30.445f, 31.081f, 33.957f, 36.105f, 38.694f, 40.600f, 42.422f, 45.283f, - 45.363f, 44.526f, 41.257f, 39.681f, 36.528f, 34.387f, 31.255f, 31.034f, 28.884f, 26.341f, - 24.161f, 20.371f, 17.514f, 15.101f, 12.485f, 9.406f, 7.226f, 4.371f, 0.835f, 0.127f, - -1.877f, -4.205f, -5.743f, -7.715f, -9.984f,-10.748f,-12.855f,-14.906f,-16.404f,-17.689f, --19.020f,-19.524f,-20.720f,-20.737f,-20.682f,-20.737f,-17.143f,-16.406f,-16.696f,-16.443f, --16.085f,-16.777f,-19.127f,-21.659f,-22.330f,-22.088f,-22.150f,-22.708f,-23.324f,-23.205f, --23.151f,-23.478f,-23.237f,-22.815f,-22.350f,-22.629f,-23.623f,-22.794f,-21.607f,-25.430f, --27.821f,-25.798f,-24.417f,-22.946f,-19.971f,-17.084f,-15.357f,-14.514f,-14.619f,-12.024f, --11.124f,-10.366f, -9.742f, -9.612f, -8.216f, -5.668f, -3.013f, -1.874f, -1.726f, -2.785f, - -0.938f, 0.796f, 4.157f, 6.610f, 9.391f, 10.486f, 10.586f, 11.731f, 11.687f, 12.808f, - 13.606f -},{ --29.534f,-29.548f,-29.369f,-29.731f,-29.395f,-28.115f,-27.804f,-27.646f,-27.283f,-28.017f, --28.834f,-28.760f,-28.515f,-28.655f,-29.377f,-29.918f,-29.364f,-28.785f,-27.778f,-26.094f, --23.851f,-22.089f,-19.212f,-18.452f,-20.825f,-19.717f,-22.258f,-22.737f,-21.983f,-19.942f, --18.363f,-17.560f,-17.274f,-17.051f,-17.022f,-17.024f,-17.201f,-17.452f,-17.829f,-18.356f, --19.226f,-20.312f,-21.735f,-23.380f,-24.939f,-26.539f,-28.167f,-29.798f,-31.230f,-32.712f, --34.173f,-35.362f,-36.474f,-38.876f,-40.127f,-38.113f,-35.634f,-35.786f,-36.104f,-35.569f, --32.685f,-28.097f,-24.116f,-23.006f,-22.459f,-21.131f,-18.891f,-16.382f,-15.200f,-17.952f, --17.091f,-14.534f,-11.650f, -8.686f, -7.834f, -2.641f, 1.010f, 4.927f, 7.826f, 4.318f, - 10.214f, 24.158f, 33.203f, 33.550f, 37.091f, 39.504f, 41.982f, 43.132f, 45.144f, 48.242f, - 50.179f, 49.606f, 45.141f, 44.907f, 42.493f, 39.233f, 34.888f, 33.319f, 33.401f, 30.803f, - 28.674f, 25.159f, 22.342f, 19.191f, 16.587f, 13.667f, 13.080f, 7.915f, 4.901f, 3.546f, - 1.801f, -0.896f, -2.269f, -4.052f, -6.069f, -7.472f, -8.657f,-10.829f,-12.169f,-13.229f, --14.930f,-15.776f,-17.101f,-17.938f,-18.601f,-18.991f,-16.510f,-15.599f,-15.615f,-14.017f, --13.175f,-13.779f,-15.585f,-17.660f,-18.422f,-18.123f,-18.838f,-19.934f,-20.748f,-21.033f, --21.006f,-21.306f,-21.005f,-20.468f,-20.681f,-20.437f,-21.774f,-21.345f,-20.345f,-22.665f, --27.412f,-26.264f,-24.151f,-22.260f,-19.649f,-17.235f,-15.222f,-13.924f,-14.107f,-12.349f, --11.402f,-10.225f, -9.637f, -9.187f, -7.750f, -5.452f, -2.773f, -2.028f, -1.566f, -3.087f, - -1.036f, 1.002f, 4.149f, 6.768f, 9.644f, 10.277f, 10.547f, 11.702f, 11.547f, 12.803f, - 13.606f -},{ --29.534f,-29.584f,-29.454f,-29.901f,-29.740f,-28.711f,-28.491f,-28.411f,-28.094f,-28.830f, --29.703f,-29.928f,-30.034f,-30.159f,-30.385f,-30.967f,-30.228f,-29.652f,-28.800f,-26.612f, --24.262f,-23.327f,-21.711f,-21.647f,-22.080f,-20.094f,-22.243f,-23.374f,-23.020f,-21.173f, --19.630f,-18.745f,-18.348f,-18.175f,-18.079f,-17.947f,-18.156f,-18.443f,-18.817f,-19.415f, --20.084f,-21.170f,-22.377f,-23.859f,-25.507f,-27.126f,-28.679f,-30.063f,-31.513f,-32.969f, --34.106f,-35.328f,-36.653f,-38.504f,-39.493f,-34.807f,-32.519f,-33.094f,-34.522f,-31.425f, --29.165f,-26.281f,-21.458f,-20.305f,-19.473f,-18.287f,-16.170f,-13.090f,-11.878f,-11.547f, --12.406f,-13.835f,-10.015f, -5.705f, -5.653f, -1.318f, 3.137f, 7.415f, 10.343f, 7.216f, - 11.007f, 27.485f, 33.992f, 36.847f, 39.933f, 42.651f, 43.891f, 45.119f, 47.592f, 50.195f, - 54.232f, 54.504f, 53.321f, 49.957f, 47.186f, 44.130f, 41.553f, 36.182f, 35.967f, 34.719f, - 32.467f, 30.259f, 26.834f, 23.808f, 21.075f, 18.009f, 16.279f, 12.329f, 9.283f, 6.744f, - 5.360f, 3.444f, 1.199f, -0.191f, -1.912f, -3.614f, -5.637f, -7.149f, -8.730f, -9.258f, --10.758f,-12.119f,-13.170f,-14.870f,-15.363f,-15.558f,-15.473f,-15.600f,-15.363f,-13.474f, --10.692f,-10.665f,-11.383f,-13.028f,-13.863f,-14.792f,-16.181f,-17.040f,-18.256f,-18.634f, --18.803f,-18.721f,-18.941f,-18.704f,-18.992f,-18.471f,-19.603f,-19.053f,-19.112f,-20.308f, --25.678f,-25.675f,-23.446f,-22.406f,-20.202f,-18.006f,-15.363f,-13.584f,-13.326f,-12.318f, --11.437f, -9.968f, -9.592f, -8.978f, -7.361f, -5.168f, -2.821f, -2.324f, -1.506f, -2.966f, - -1.028f, 1.243f, 4.168f, 7.029f, 9.880f, 10.031f, 10.528f, 11.647f, 11.414f, 12.801f, - 13.606f -},{ --29.534f,-29.621f,-29.537f,-30.060f,-30.079f,-29.309f,-29.137f,-29.161f,-28.901f,-29.604f, --30.470f,-31.011f,-31.582f,-31.739f,-31.708f,-31.943f,-31.133f,-30.521f,-29.656f,-27.216f, --24.779f,-24.164f,-23.886f,-24.713f,-22.511f,-20.685f,-22.965f,-24.219f,-24.095f,-22.240f, --20.702f,-19.747f,-19.196f,-19.042f,-18.892f,-18.941f,-19.017f,-19.197f,-19.387f,-20.057f, --20.776f,-21.565f,-22.991f,-24.597f,-25.884f,-27.312f,-28.772f,-30.353f,-31.650f,-32.793f, --34.197f,-35.299f,-36.300f,-38.283f,-38.458f,-33.102f,-30.618f,-30.416f,-31.414f,-30.299f, --27.495f,-23.436f,-20.353f,-17.952f,-17.492f,-15.962f,-12.847f,-10.374f, -8.570f, -8.551f, - -7.216f, -7.309f, -7.376f, -6.035f, -3.300f, 1.308f, 5.574f, 10.537f, 13.216f, 10.806f, - 13.714f, 30.686f, 33.469f, 39.470f, 42.250f, 45.070f, 48.119f, 50.100f, 51.129f, 53.740f, - 54.842f, 58.143f, 56.205f, 53.673f, 52.227f, 49.404f, 46.609f, 43.540f, 38.254f, 38.453f, - 36.634f, 34.878f, 30.672f, 28.028f, 25.511f, 22.651f, 19.750f, 16.425f, 13.368f, 10.496f, - 9.273f, 8.107f, 5.472f, 3.744f, 2.145f, 0.524f, -1.489f, -3.774f, -5.210f, -6.137f, - -7.067f, -7.792f, -9.240f,-11.015f,-11.316f,-11.191f,-11.595f,-12.261f,-12.513f,-12.244f, --10.045f, -8.243f, -7.496f, -8.360f,-10.218f,-12.127f,-13.483f,-14.796f,-15.627f,-16.064f, --16.455f,-16.307f,-16.329f,-17.003f,-17.134f,-16.588f,-17.816f,-17.112f,-17.010f,-19.101f, --22.986f,-24.061f,-21.780f,-22.797f,-20.460f,-18.224f,-15.696f,-13.326f,-12.407f,-11.848f, --11.145f, -9.779f, -9.258f, -8.953f, -7.058f, -5.032f, -3.067f, -2.220f, -1.699f, -2.634f, - -0.885f, 1.464f, 4.227f, 7.306f, 10.018f, 9.763f, 10.522f, 11.559f, 11.294f, 12.802f, - 13.606f -},{ --29.534f,-29.657f,-29.619f,-30.210f,-30.410f,-29.896f,-29.766f,-29.892f,-29.732f,-30.401f, --31.246f,-31.974f,-32.809f,-33.154f,-33.272f,-33.120f,-31.982f,-31.114f,-30.544f,-28.229f, --26.114f,-25.074f,-24.689f,-25.656f,-23.616f,-22.364f,-24.647f,-25.397f,-25.173f,-23.223f, --21.793f,-20.780f,-20.266f,-20.008f,-19.680f,-19.606f,-19.652f,-19.931f,-20.011f,-20.547f, --21.285f,-22.309f,-23.533f,-24.704f,-26.010f,-27.409f,-28.875f,-30.204f,-31.406f,-32.741f, --34.210f,-35.370f,-36.881f,-38.944f,-37.894f,-32.179f,-28.125f,-27.113f,-27.085f,-26.181f, --24.396f,-22.593f,-19.857f,-17.628f,-16.613f,-16.284f,-11.402f, -8.737f, -7.477f, -7.742f, - -6.219f, -3.547f, -5.022f, -3.526f, -0.966f, 3.531f, 7.714f, 12.252f, 14.930f, 13.390f, - 16.273f, 34.751f, 35.471f, 40.810f, 44.126f, 46.913f, 49.921f, 52.559f, 53.354f, 53.783f, - 54.745f, 57.704f, 57.832f, 56.617f, 55.528f, 54.423f, 53.092f, 48.284f, 45.877f, 42.261f, - 39.686f, 39.297f, 35.967f, 32.109f, 29.938f, 26.964f, 24.317f, 21.133f, 17.980f, 14.571f, - 13.242f, 12.443f, 10.243f, 7.775f, 6.108f, 5.016f, 3.069f, 0.662f, -1.217f, -2.310f, - -3.048f, -4.381f, -5.602f, -6.483f, -6.873f, -6.782f, -6.754f, -8.034f, -8.768f, -9.364f, - -8.466f, -6.575f, -4.932f, -4.342f, -6.106f, -8.439f,-10.635f,-11.877f,-12.666f,-13.399f, --13.628f,-13.585f,-13.970f,-14.886f,-14.955f,-14.707f,-14.554f,-14.580f,-15.549f,-18.788f, --20.236f,-21.408f,-19.634f,-21.904f,-19.804f,-17.951f,-15.497f,-12.716f,-11.613f,-11.571f, --10.776f, -9.629f, -8.913f, -8.856f, -6.777f, -4.953f, -3.144f, -1.609f, -2.166f, -2.366f, - -0.680f, 1.598f, 4.293f, 7.497f, 9.989f, 9.493f, 10.520f, 11.437f, 11.191f, 12.805f, - 13.606f -},{ --29.534f,-29.693f,-29.698f,-30.352f,-30.730f,-30.463f,-30.404f,-30.600f,-30.588f,-31.212f, --32.076f,-32.881f,-33.744f,-34.307f,-34.551f,-34.359f,-32.871f,-31.748f,-31.545f,-29.317f, --26.860f,-25.742f,-25.829f,-26.722f,-24.605f,-24.653f,-26.651f,-26.670f,-26.152f,-24.243f, --22.709f,-21.737f,-21.129f,-20.851f,-20.580f,-20.399f,-20.280f,-20.570f,-20.665f,-20.940f, --21.735f,-22.782f,-24.017f,-25.094f,-26.171f,-27.345f,-28.679f,-30.048f,-31.318f,-32.782f, --34.099f,-35.307f,-36.338f,-38.541f,-38.079f,-31.899f,-27.927f,-26.918f,-26.512f,-25.103f, --23.813f,-21.428f,-19.521f,-17.979f,-16.634f,-15.268f,-10.279f, -7.247f, -7.081f, -6.175f, - -2.822f, -0.304f, 0.293f, -0.496f, 2.136f, 6.447f, 10.386f, 14.510f, 17.190f, 15.738f, - 19.300f, 33.271f, 36.796f, 42.863f, 46.371f, 47.114f, 48.083f, 53.708f, 51.171f, 53.808f, - 52.813f, 57.685f, 57.086f, 54.819f, 55.448f, 57.107f, 53.021f, 51.525f, 50.348f, 48.832f, - 44.822f, 41.551f, 38.218f, 35.814f, 33.586f, 31.448f, 28.715f, 25.224f, 22.140f, 19.393f, - 16.598f, 15.311f, 13.961f, 13.076f, 9.712f, 8.932f, 7.289f, 4.777f, 3.218f, 1.871f, - 1.158f, -0.654f, -1.791f, -2.429f, -2.527f, -2.354f, -1.937f, -3.478f, -4.587f, -5.026f, - -4.390f, -3.120f, -2.370f, -2.189f, -3.561f, -4.999f, -7.318f, -8.291f, -9.360f,-10.460f, --10.953f,-11.018f,-11.603f,-12.471f,-12.778f,-12.649f,-11.390f,-12.986f,-15.905f,-18.664f, --19.024f,-19.373f,-19.420f,-19.685f,-18.951f,-17.522f,-14.939f,-12.185f,-11.103f,-11.175f, --10.263f, -9.275f, -8.924f, -8.539f, -6.516f, -4.641f, -2.847f, -0.860f, -2.715f, -2.293f, - -0.535f, 1.603f, 4.311f, 7.523f, 9.763f, 9.243f, 10.511f, 11.279f, 11.109f, 12.812f, - 13.606f -},{ --29.534f,-29.728f,-29.775f,-30.485f,-31.035f,-31.004f,-31.073f,-31.273f,-31.428f,-31.976f, --32.924f,-33.836f,-34.718f,-35.344f,-35.349f,-35.298f,-33.907f,-32.581f,-32.137f,-30.267f, --27.628f,-26.278f,-26.484f,-27.824f,-24.923f,-26.778f,-28.332f,-27.846f,-27.256f,-25.292f, --23.695f,-22.634f,-22.017f,-21.646f,-21.235f,-21.070f,-21.061f,-21.322f,-21.184f,-21.497f, --22.006f,-23.158f,-24.318f,-25.379f,-26.279f,-27.482f,-28.786f,-30.000f,-31.212f,-32.597f, --33.805f,-34.863f,-36.246f,-38.397f,-38.487f,-33.668f,-29.882f,-27.675f,-25.909f,-24.736f, --22.482f,-20.721f,-19.021f,-17.254f,-13.844f,-12.179f, -7.521f, -5.225f, -5.963f, -3.294f, - 0.652f, 3.647f, 5.690f, 7.180f, 8.077f, 9.770f, 14.334f, 18.198f, 20.578f, 17.591f, - 27.170f, 35.991f, 37.276f, 44.209f, 47.217f, 50.277f, 51.002f, 56.046f, 56.867f, 55.312f, - 53.638f, 55.995f, 53.885f, 54.624f, 56.882f, 59.152f, 56.383f, 53.399f, 51.643f, 48.990f, - 49.922f, 47.600f, 43.140f, 38.280f, 33.769f, 31.930f, 30.801f, 28.128f, 24.882f, 22.061f, - 20.100f, 17.927f, 17.282f, 16.274f, 14.150f, 12.350f, 10.356f, 9.379f, 7.445f, 5.641f, - 4.206f, 2.799f, 1.690f, 1.124f, 1.133f, 1.554f, 1.553f, 0.390f, -0.687f, -1.374f, - -0.752f, 0.653f, 0.036f, -0.702f, -1.565f, -1.770f, -3.076f, -4.346f, -5.680f, -6.922f, - -7.840f, -8.267f, -8.716f,-10.098f,-10.904f,-10.920f, -9.690f,-11.964f,-14.099f,-17.819f, --18.230f,-18.905f,-21.728f,-18.300f,-18.219f,-17.091f,-14.678f,-12.066f,-10.941f,-10.455f, - -9.515f, -8.694f, -9.043f, -8.112f, -6.276f, -4.064f, -2.388f, -0.329f, -3.039f, -2.338f, - -0.509f, 1.498f, 4.236f, 7.357f, 9.354f, 9.033f, 10.483f, 11.088f, 11.051f, 12.821f, - 13.606f -},{ --29.534f,-29.763f,-29.851f,-30.611f,-31.323f,-31.515f,-31.778f,-31.902f,-32.194f,-32.652f, --33.756f,-34.890f,-35.914f,-36.396f,-35.991f,-35.873f,-34.898f,-33.280f,-32.178f,-30.891f, --28.964f,-27.199f,-26.615f,-27.657f,-26.059f,-28.877f,-29.756f,-28.953f,-28.353f,-26.241f, --24.625f,-23.594f,-22.781f,-22.382f,-21.991f,-21.631f,-21.727f,-21.429f,-21.553f,-21.976f, --22.668f,-23.382f,-24.462f,-25.450f,-26.389f,-27.350f,-28.569f,-29.994f,-31.151f,-32.482f, --33.574f,-34.502f,-35.499f,-37.678f,-38.507f,-34.648f,-30.380f,-28.227f,-25.458f,-24.343f, --22.596f,-20.454f,-18.069f,-15.262f,-11.635f, -8.796f, -5.008f, -5.120f, -2.321f, 1.090f, - 4.407f, 7.754f, 8.468f, 12.246f, 13.906f, 15.436f, 19.364f, 23.024f, 23.389f, 22.827f, - 36.360f, 39.719f, 37.895f, 44.402f, 49.795f, 53.974f, 56.689f, 60.713f, 63.793f, 61.864f, - 58.348f, 56.354f, 54.462f, 56.886f, 58.526f, 61.821f, 59.608f, 55.120f, 53.832f, 54.269f, - 52.010f, 52.056f, 48.928f, 37.842f, 36.434f, 40.614f, 41.033f, 34.306f, 30.586f, 23.796f, - 21.269f, 18.538f, 18.852f, 18.608f, 17.438f, 14.959f, 13.099f, 11.711f, 10.040f, 8.408f, - 7.023f, 5.760f, 5.071f, 4.587f, 4.690f, 4.387f, 4.307f, 4.283f, 3.011f, 1.948f, - 2.711f, 2.802f, 2.366f, 1.283f, 0.312f, 0.371f, 0.116f, -0.638f, -1.872f, -3.361f, - -4.504f, -5.281f, -6.660f, -8.027f, -8.983f, -9.359f, -8.871f,-10.156f,-12.612f,-15.910f, --16.614f,-17.266f,-21.518f,-18.298f,-17.948f,-17.007f,-14.534f,-11.932f,-10.928f,-10.066f, - -8.772f, -8.081f, -8.870f, -7.726f, -5.969f, -3.511f, -2.104f, -0.048f, -2.960f, -2.346f, - -0.539f, 1.371f, 4.067f, 7.029f, 8.818f, 8.879f, 10.426f, 10.872f, 11.022f, 12.832f, - 13.606f -},{ --29.534f,-29.798f,-29.925f,-30.731f,-31.591f,-31.997f,-32.508f,-32.490f,-32.854f,-33.274f, --34.595f,-36.001f,-37.151f,-37.399f,-36.721f,-36.295f,-35.620f,-33.839f,-32.353f,-31.090f, --29.551f,-28.120f,-27.986f,-28.019f,-27.363f,-30.655f,-31.189f,-30.060f,-29.216f,-27.319f, --25.546f,-24.347f,-23.716f,-23.096f,-22.731f,-22.355f,-22.109f,-22.162f,-22.131f,-22.592f, --22.993f,-23.887f,-24.722f,-25.596f,-26.385f,-27.425f,-28.613f,-29.841f,-30.962f,-32.290f, --33.247f,-34.122f,-35.268f,-36.958f,-38.303f,-34.549f,-29.791f,-28.336f,-25.887f,-23.638f, --22.392f,-19.992f,-16.213f,-13.558f,-10.974f, -7.332f, -4.323f, -2.025f, 0.026f, 3.713f, - 8.487f, 10.297f, 11.538f, 15.765f, 19.845f, 21.324f, 21.649f, 25.657f, 24.985f, 27.071f, - 33.589f, 37.484f, 37.933f, 48.961f, 49.011f, 53.601f, 57.393f, 61.225f, 64.492f, 61.140f, - 61.248f, 64.002f, 58.716f, 59.202f, 61.194f, 61.879f, 66.521f, 58.542f, 56.199f, 55.266f, - 55.887f, 54.411f, 51.156f, 46.697f, 43.503f, 42.516f, 42.621f, 43.318f, 39.063f, 30.166f, - 22.427f, 20.733f, 21.698f, 26.463f, 24.261f, 17.954f, 16.376f, 14.887f, 13.465f, 11.505f, - 10.356f, 9.442f, 8.968f, 8.004f, 7.928f, 7.297f, 7.676f, 7.249f, 6.695f, 5.995f, - 4.529f, 4.734f, 4.280f, 3.452f, 2.325f, 1.939f, 2.135f, 1.643f, 1.515f, 0.408f, - -0.629f, -1.552f, -3.762f, -6.398f, -7.605f, -8.208f, -7.984f, -9.757f,-10.943f,-13.936f, --14.617f,-14.656f,-17.633f,-17.356f,-17.576f,-16.981f,-14.356f,-11.993f,-11.111f,-10.484f, - -8.418f, -7.508f, -8.352f, -7.362f, -5.587f, -3.231f, -2.014f, 0.102f, -2.590f, -2.266f, - -0.497f, 1.340f, 3.849f, 6.614f, 8.239f, 8.786f, 10.329f, 10.640f, 11.024f, 12.846f, - 13.606f -},{ --29.534f,-29.832f,-29.997f,-30.845f,-31.839f,-32.451f,-33.232f,-33.058f,-33.436f,-33.948f, --35.518f,-37.095f,-38.171f,-38.292f,-37.418f,-36.726f,-36.307f,-34.756f,-33.123f,-31.502f, --29.867f,-28.747f,-28.761f,-28.908f,-28.009f,-31.556f,-32.265f,-31.238f,-30.001f,-28.125f, --26.216f,-25.194f,-24.364f,-23.764f,-23.368f,-22.915f,-22.678f,-22.586f,-22.616f,-23.045f, --23.311f,-23.984f,-24.894f,-25.727f,-26.478f,-27.407f,-28.399f,-29.550f,-30.872f,-31.954f, --32.900f,-33.775f,-34.585f,-36.328f,-37.082f,-33.886f,-29.958f,-28.248f,-26.268f,-23.100f, --21.565f,-18.046f,-15.422f,-12.570f,-10.595f, -6.328f, -3.569f, -0.489f, 3.265f, 6.408f, - 9.455f, 11.422f, 14.178f, 19.355f, 22.443f, 25.630f, 26.951f, 29.028f, 29.507f, 28.989f, - 27.231f, 34.638f, 41.267f, 48.114f, 51.427f, 57.115f, 60.801f, 61.360f, 61.228f, 64.379f, - 63.128f, 64.533f, 58.998f, 61.830f, 63.428f, 63.829f, 65.250f, 67.063f, 59.613f, 52.945f, - 54.297f, 55.089f, 52.480f, 49.791f, 47.889f, 41.154f, 37.840f, 40.548f, 37.027f, 32.601f, - 30.723f, 27.500f, 23.402f, 19.619f, 15.414f, 19.787f, 19.136f, 17.443f, 16.360f, 14.985f, - 14.063f, 13.253f, 11.940f, 11.201f, 11.002f, 10.593f, 10.452f, 9.991f, 9.802f, 9.966f, - 8.405f, 6.959f, 6.005f, 5.458f, 4.352f, 4.087f, 3.757f, 3.634f, 3.054f, 3.268f, - 2.681f, 2.052f, -0.202f, -4.190f, -6.069f, -6.074f, -6.706f, -7.771f, -8.843f,-11.199f, --11.683f,-12.701f,-14.181f,-15.497f,-16.966f,-16.995f,-14.403f,-12.476f,-11.911f,-11.522f, - -8.628f, -7.050f, -7.609f, -6.987f, -5.260f, -3.168f, -1.841f, 0.107f, -2.203f, -2.207f, - -0.317f, 1.477f, 3.648f, 6.199f, 7.706f, 8.749f, 10.186f, 10.406f, 11.060f, 12.862f, - 13.606f -},{ --29.534f,-29.865f,-30.067f,-30.955f,-32.067f,-32.879f,-33.917f,-33.645f,-34.037f,-34.779f, --36.561f,-38.123f,-38.994f,-39.207f,-38.050f,-37.280f,-37.314f,-35.962f,-34.044f,-32.459f, --30.926f,-29.592f,-28.654f,-29.181f,-29.001f,-31.932f,-33.079f,-32.014f,-30.917f,-28.883f, --26.882f,-25.905f,-25.005f,-24.351f,-23.964f,-23.560f,-23.241f,-23.123f,-23.031f,-23.402f, --23.620f,-24.154f,-24.846f,-25.605f,-26.340f,-27.356f,-28.177f,-29.414f,-30.455f,-31.522f, --32.436f,-32.997f,-34.087f,-35.448f,-36.426f,-33.035f,-29.069f,-26.591f,-23.809f,-24.026f, --20.620f,-17.058f,-14.125f,-12.422f,-10.106f, -6.998f, -3.829f, 1.227f, 4.890f, 6.992f, - 9.698f, 13.432f, 17.480f, 21.931f, 24.825f, 28.139f, 29.352f, 32.432f, 34.984f, 29.966f, - 26.926f, 32.270f, 43.313f, 47.518f, 52.077f, 57.074f, 59.324f, 57.860f, 61.451f, 60.564f, - 56.136f, 63.179f, 60.424f, 64.867f, 65.911f, 65.904f, 65.849f, 66.460f, 67.233f, 60.356f, - 61.728f, 59.888f, 55.139f, 51.367f, 50.390f, 41.604f, 33.232f, 32.912f, 31.476f, 30.213f, - 27.974f, 25.901f, 24.078f, 16.777f, 17.619f, 21.980f, 22.074f, 20.629f, 19.604f, 18.731f, - 17.497f, 16.112f, 15.173f, 14.828f, 14.462f, 13.685f, 12.944f, 13.164f, 12.697f, 13.156f, - 11.325f, 10.018f, 8.425f, 7.647f, 6.656f, 5.624f, 5.369f, 4.855f, 4.955f, 4.560f, - 4.627f, 4.145f, 2.388f, -1.788f, -4.010f, -4.229f, -4.470f, -4.980f, -6.673f, -8.112f, - -9.531f,-11.397f,-12.461f,-14.288f,-16.323f,-17.012f,-14.589f,-13.340f,-13.506f,-12.715f, - -9.063f, -6.802f, -6.871f, -6.747f, -5.021f, -3.069f, -1.438f, -0.110f, -1.977f, -2.296f, - -0.064f, 1.759f, 3.512f, 5.853f, 7.292f, 8.751f, 9.997f, 10.186f, 11.132f, 12.881f, - 13.606f -},{ --29.534f,-29.898f,-30.136f,-31.060f,-32.275f,-33.283f,-34.528f,-34.296f,-34.784f,-35.793f, --37.646f,-39.066f,-39.842f,-40.242f,-38.885f,-38.134f,-38.478f,-36.873f,-34.706f,-33.263f, --31.743f,-30.422f,-29.395f,-29.668f,-29.991f,-32.357f,-33.925f,-32.472f,-31.796f,-29.628f, --27.603f,-26.534f,-25.694f,-25.060f,-24.537f,-24.129f,-23.841f,-23.655f,-23.615f,-23.593f, --23.728f,-24.196f,-24.818f,-25.387f,-26.100f,-26.987f,-27.753f,-28.791f,-29.886f,-30.990f, --31.830f,-32.523f,-33.494f,-34.595f,-35.587f,-32.996f,-27.202f,-25.565f,-24.174f,-21.342f, --20.387f,-16.777f,-13.566f,-10.837f, -8.183f, -6.319f, -3.052f, 1.609f, 4.504f, 7.617f, - 11.171f, 15.869f, 19.787f, 24.294f, 27.032f, 30.233f, 32.355f, 35.340f, 36.514f, 31.208f, - 33.261f, 37.336f, 45.255f, 48.612f, 54.592f, 55.795f, 55.996f, 57.871f, 61.181f, 50.058f, - 54.811f, 66.814f, 64.072f, 67.831f, 68.268f, 67.058f, 67.253f, 69.252f, 70.642f, 63.685f, - 64.799f, 61.835f, 58.447f, 53.136f, 52.478f, 44.059f, 41.375f, 39.762f, 35.516f, 33.263f, - 31.119f, 29.019f, 26.768f, 18.564f, 21.432f, 25.200f, 25.744f, 24.076f, 22.912f, 21.599f, - 20.599f, 19.035f, 17.973f, 17.676f, 17.916f, 17.113f, 15.883f, 15.757f, 15.309f, 14.957f, - 14.146f, 14.160f, 12.627f, 10.619f, 9.415f, 8.129f, 7.215f, 6.650f, 6.565f, 6.752f, - 6.554f, 5.990f, 4.479f, 0.194f, -1.669f, -1.775f, -1.881f, -3.791f, -4.830f, -6.330f, - -7.718f,-10.008f,-11.581f,-13.594f,-15.668f,-17.111f,-14.867f,-14.176f,-15.190f,-13.783f, - -9.408f, -6.763f, -6.517f, -6.716f, -4.750f, -2.784f, -1.009f, -0.421f, -1.884f, -2.506f, - 0.111f, 2.068f, 3.445f, 5.607f, 7.034f, 8.767f, 9.765f, 9.995f, 11.240f, 12.901f, - 13.606f -},{ --29.534f,-29.930f,-30.203f,-31.162f,-32.464f,-33.662f,-35.045f,-35.037f,-35.766f,-36.903f, --38.605f,-39.885f,-40.764f,-41.147f,-39.955f,-39.324f,-39.460f,-37.765f,-35.565f,-33.697f, --32.267f,-31.154f,-30.085f,-30.644f,-30.611f,-32.864f,-34.844f,-33.105f,-32.299f,-30.188f, --28.328f,-27.306f,-26.316f,-25.604f,-25.100f,-24.682f,-24.270f,-24.014f,-23.815f,-23.689f, --23.635f,-24.040f,-24.557f,-25.269f,-25.880f,-26.654f,-27.480f,-28.327f,-29.331f,-30.297f, --31.071f,-31.819f,-32.720f,-33.766f,-34.879f,-33.176f,-26.322f,-23.308f,-21.822f,-20.487f, --17.679f,-16.012f,-13.666f,-10.238f, -7.244f, -3.864f, -0.616f, 2.899f, 5.427f, 9.212f, - 13.550f, 17.818f, 21.834f, 25.781f, 29.174f, 31.843f, 34.010f, 36.246f, 38.432f, 36.798f, - 33.094f, 41.986f, 45.824f, 50.191f, 55.078f, 56.293f, 58.451f, 59.767f, 62.223f, 43.752f, - 50.794f, 67.688f, 70.406f, 70.052f, 69.117f, 63.696f, 70.126f, 71.314f, 71.351f, 67.663f, - 64.685f, 65.336f, 60.343f, 46.375f, 43.900f, 42.282f, 44.490f, 42.920f, 38.355f, 35.324f, - 32.589f, 30.783f, 28.288f, 21.516f, 23.365f, 28.146f, 27.917f, 27.475f, 25.831f, 24.097f, - 23.207f, 21.600f, 20.825f, 20.984f, 20.994f, 19.827f, 18.838f, 18.500f, 17.900f, 17.468f, - 17.210f, 17.975f, 17.574f, 15.223f, 12.740f, 11.002f, 9.999f, 9.253f, 9.092f, 8.927f, - 8.714f, 7.777f, 5.975f, 2.305f, 0.996f, 0.330f, -0.224f, -1.565f, -1.660f, -4.767f, - -5.769f, -8.239f,-10.835f,-12.971f,-15.213f,-16.393f,-14.209f,-13.626f,-15.526f,-14.299f, - -9.715f, -6.975f, -6.686f, -6.665f, -4.474f, -2.413f, -0.818f, -0.520f, -1.848f, -2.653f, - 0.095f, 2.258f, 3.406f, 5.454f, 6.929f, 8.767f, 9.503f, 9.851f, 11.383f, 12.923f, - 13.606f -},{ --29.534f,-29.961f,-30.267f,-31.260f,-32.638f,-34.017f,-35.461f,-35.857f,-36.969f,-37.955f, --39.294f,-40.519f,-41.519f,-41.542f,-40.771f,-40.561f,-40.357f,-39.228f,-36.909f,-34.240f, --33.073f,-32.214f,-31.312f,-31.876f,-31.640f,-33.102f,-35.738f,-33.567f,-32.719f,-30.720f, --28.809f,-27.911f,-27.043f,-26.151f,-25.504f,-24.993f,-24.611f,-24.256f,-24.029f,-24.011f, --23.697f,-23.936f,-24.412f,-24.901f,-25.640f,-26.364f,-27.068f,-27.849f,-28.851f,-29.647f, --30.386f,-31.087f,-31.844f,-32.562f,-33.578f,-33.059f,-27.159f,-22.108f,-20.430f,-19.950f, --18.070f,-16.261f,-13.241f,-10.260f, -6.193f, -2.897f, 0.290f, 3.561f, 6.698f, 11.480f, - 15.531f, 19.703f, 24.076f, 28.757f, 33.042f, 34.763f, 35.743f, 37.247f, 40.938f, 41.559f, - 36.139f, 41.786f, 47.617f, 50.333f, 54.167f, 57.506f, 58.875f, 60.048f, 63.931f, 45.464f, - 46.844f, 58.459f, 62.148f, 67.323f, 70.163f, 65.074f, 64.085f, 61.921f, 64.718f, 68.014f, - 64.066f, 55.470f, 47.427f, 44.967f, 46.293f, 45.467f, 44.695f, 42.304f, 39.628f, 36.751f, - 34.461f, 32.560f, 30.392f, 26.308f, 27.221f, 26.365f, 29.129f, 30.014f, 29.283f, 27.057f, - 25.363f, 24.271f, 23.724f, 23.965f, 23.575f, 22.238f, 21.553f, 20.538f, 20.456f, 20.209f, - 20.383f, 20.708f, 21.037f, 18.812f, 16.011f, 13.553f, 12.162f, 11.586f, 11.444f, 11.179f, - 10.669f, 9.166f, 6.605f, 4.505f, 3.546f, 2.140f, 1.701f, 1.192f, 0.828f, -3.184f, - -4.113f, -6.690f,-10.100f,-12.563f,-14.259f,-13.592f,-11.527f,-11.231f,-13.753f,-13.408f, - -9.831f, -7.401f, -7.027f, -6.424f, -4.339f, -2.167f, -0.830f, -0.266f, -1.873f, -2.569f, - -0.106f, 2.237f, 3.342f, 5.362f, 6.940f, 8.722f, 9.230f, 9.769f, 11.561f, 12.947f, - 13.606f -},{ --29.534f,-29.992f,-30.331f,-31.356f,-32.799f,-34.342f,-35.786f,-36.703f,-38.255f,-38.809f, --39.705f,-40.945f,-41.903f,-41.512f,-41.016f,-41.509f,-41.253f,-40.294f,-37.750f,-34.810f, --33.576f,-33.194f,-33.580f,-33.944f,-33.404f,-33.687f,-36.595f,-34.195f,-33.574f,-31.306f, --29.504f,-28.581f,-27.443f,-26.488f,-25.728f,-24.896f,-24.388f,-23.826f,-23.427f,-23.486f, --23.466f,-23.723f,-24.094f,-24.688f,-25.265f,-25.997f,-26.662f,-27.328f,-28.294f,-29.025f, --29.691f,-30.295f,-30.927f,-31.809f,-32.704f,-32.553f,-27.695f,-21.315f,-19.332f,-18.813f, --17.339f,-16.439f,-12.382f, -8.247f, -1.866f, -2.565f, 1.973f, 6.187f, 10.091f, 13.878f, - 17.720f, 22.142f, 27.261f, 31.443f, 34.158f, 36.615f, 37.662f, 39.117f, 43.283f, 45.749f, - 42.028f, 37.418f, 45.588f, 50.058f, 54.362f, 57.946f, 58.806f, 58.785f, 61.523f, 54.522f, - 68.556f, 65.387f, 56.185f, 55.833f, 61.785f, 53.469f, 45.248f, 51.153f, 55.077f, 50.729f, - 49.711f, 51.713f, 52.089f, 51.194f, 49.570f, 47.087f, 44.895f, 42.435f, 39.925f, 38.000f, - 35.469f, 34.070f, 32.325f, 29.781f, 25.055f, 25.108f, 28.907f, 31.154f, 30.613f, 29.244f, - 28.390f, 27.216f, 26.314f, 26.118f, 25.895f, 25.322f, 24.296f, 23.290f, 22.890f, 23.026f, - 23.868f, 24.367f, 22.542f, 21.006f, 18.755f, 16.226f, 14.209f, 13.398f, 13.621f, 12.867f, - 11.805f, 10.050f, 7.989f, 5.862f, 5.183f, 3.816f, 3.799f, 3.866f, 2.355f, -1.271f, - -3.158f, -5.788f, -9.007f,-12.051f,-12.509f,-10.005f, -8.162f, -7.986f,-10.280f,-10.790f, - -9.507f, -7.759f, -7.123f, -6.153f, -4.260f, -2.118f, -0.777f, 0.136f, -1.947f, -2.276f, - -0.388f, 2.013f, 3.226f, 5.299f, 7.004f, 8.609f, 8.968f, 9.760f, 11.770f, 12.971f, - 13.606f -},{ --29.534f,-30.021f,-30.392f,-31.450f,-32.949f,-34.632f,-36.037f,-37.486f,-39.405f,-39.415f, --39.986f,-41.245f,-42.063f,-41.677f,-41.180f,-42.140f,-41.749f,-39.617f,-37.278f,-35.259f, --34.458f,-34.542f,-34.949f,-36.387f,-35.108f,-34.608f,-37.419f,-35.128f,-34.376f,-31.985f, --30.338f,-29.132f,-27.764f,-26.778f,-25.893f,-24.854f,-24.171f,-23.549f,-23.040f,-22.911f, --23.097f,-23.369f,-23.816f,-24.462f,-24.963f,-25.736f,-26.458f,-27.073f,-27.818f,-28.472f, --28.933f,-29.424f,-29.835f,-30.363f,-31.232f,-31.537f,-27.670f,-21.133f,-20.135f,-20.238f, --18.365f,-16.116f,-12.401f, -7.152f, 0.227f, 0.211f, 3.366f, 8.179f, 12.527f, 15.930f, - 20.568f, 23.501f, 28.264f, 32.873f, 34.618f, 37.472f, 38.925f, 41.965f, 44.724f, 47.967f, - 46.665f, 34.138f, 42.174f, 49.514f, 53.494f, 57.663f, 59.135f, 57.934f, 59.343f, 67.793f, - 72.155f, 71.211f, 68.269f, 61.556f, 65.198f, 55.527f, 60.250f, 61.977f, 61.455f, 60.184f, - 58.561f, 57.189f, 55.140f, 52.625f, 50.113f, 47.347f, 45.276f, 43.001f, 41.007f, 38.838f, - 36.471f, 35.344f, 33.921f, 32.117f, 28.926f, 24.479f, 28.159f, 31.978f, 31.217f, 30.280f, - 29.680f, 29.285f, 28.998f, 28.235f, 28.060f, 28.147f, 27.087f, 25.893f, 25.576f, 24.291f, - 24.167f, 26.288f, 24.573f, 22.224f, 20.379f, 17.957f, 16.762f, 15.861f, 16.049f, 14.285f, - 11.962f, 10.721f, 9.342f, 7.556f, 6.668f, 5.382f, 5.965f, 5.554f, 3.660f, 0.260f, - -2.470f, -4.792f, -7.586f,-11.288f,-10.556f, -6.848f, -5.585f, -5.498f, -6.653f, -7.492f, - -8.653f, -7.838f, -6.916f, -5.979f, -3.989f, -2.122f, -0.529f, 0.416f, -1.874f, -1.968f, - -0.643f, 1.678f, 3.077f, 5.242f, 7.054f, 8.421f, 8.746f, 9.835f, 12.006f, 12.997f, - 13.606f -},{ --29.534f,-30.050f,-30.452f,-31.542f,-33.092f,-34.881f,-36.237f,-38.116f,-40.207f,-39.819f, --40.337f,-41.574f,-42.362f,-42.485f,-41.973f,-42.704f,-41.771f,-38.371f,-36.714f,-36.065f, --36.139f,-36.383f,-35.717f,-37.323f,-35.904f,-35.056f,-38.154f,-36.117f,-34.718f,-32.623f, --30.975f,-29.544f,-28.221f,-26.937f,-25.881f,-24.896f,-24.114f,-23.362f,-22.691f,-22.511f, --22.821f,-22.857f,-23.280f,-23.763f,-24.379f,-25.127f,-25.909f,-26.474f,-27.133f,-27.841f, --28.315f,-28.644f,-28.920f,-29.425f,-30.176f,-30.612f,-26.915f,-20.666f,-19.435f,-18.100f, --16.637f,-14.720f,-11.983f, -5.220f, 3.121f, 2.449f, 3.692f, 9.129f, 14.226f, 17.485f, - 22.993f, 26.724f, 28.818f, 30.889f, 33.818f, 36.834f, 41.878f, 44.016f, 45.951f, 48.946f, - 49.787f, 40.950f, 41.725f, 49.521f, 52.540f, 55.787f, 59.148f, 59.713f, 63.761f, 70.802f, - 73.505f, 72.402f, 69.304f, 67.432f, 66.449f, 67.603f, 67.609f, 66.622f, 64.790f, 62.245f, - 59.894f, 57.813f, 55.374f, 52.563f, 49.956f, 47.630f, 45.472f, 43.296f, 41.478f, 39.314f, - 37.391f, 35.904f, 35.110f, 34.086f, 32.413f, 28.762f, 25.055f, 26.041f, 29.278f, 30.209f, - 30.562f, 30.499f, 30.116f, 30.708f, 29.661f, 29.167f, 29.600f, 28.724f, 25.586f, 22.982f, - 23.407f, 26.623f, 26.435f, 23.995f, 22.291f, 20.292f, 18.797f, 18.120f, 17.406f, 15.666f, - 13.106f, 11.978f, 10.833f, 9.399f, 8.004f, 7.207f, 8.200f, 7.472f, 5.732f, 1.361f, - -1.077f, -3.263f, -6.124f,-10.505f, -9.451f, -4.765f, -4.273f, -4.901f, -4.993f, -5.426f, - -7.267f, -7.618f, -6.562f, -5.753f, -3.581f, -2.001f, -0.249f, 0.584f, -1.361f, -1.818f, - -0.822f, 1.342f, 2.949f, 5.183f, 7.036f, 8.164f, 8.592f, 9.994f, 12.266f, 13.023f, - 13.606f -},{ --29.534f,-30.078f,-30.509f,-31.633f,-33.230f,-35.084f,-36.407f,-38.532f,-40.558f,-40.127f, --40.885f,-42.067f,-42.966f,-43.659f,-43.352f,-43.497f,-42.230f,-39.032f,-37.639f,-37.349f, --36.867f,-36.946f,-36.619f,-36.708f,-36.408f,-35.483f,-38.987f,-37.254f,-35.246f,-33.287f, --31.401f,-29.957f,-28.471f,-27.177f,-25.974f,-24.837f,-23.791f,-23.005f,-22.449f,-22.141f, --22.409f,-22.395f,-22.671f,-23.262f,-23.804f,-24.438f,-25.124f,-25.604f,-26.272f,-26.871f, --27.493f,-27.753f,-27.792f,-28.287f,-29.210f,-28.386f,-23.947f,-19.137f,-17.724f,-16.238f, --14.407f,-12.107f,-10.259f, -1.797f, 3.609f, 3.100f, 3.348f, 11.401f, 14.795f, 20.232f, - 24.383f, 28.525f, 31.876f, 33.408f, 35.033f, 39.084f, 42.481f, 45.728f, 49.110f, 51.997f, - 52.229f, 46.467f, 45.506f, 45.318f, 50.106f, 54.817f, 57.761f, 59.909f, 68.127f, 72.366f, - 76.604f, 73.326f, 72.358f, 72.731f, 71.136f, 69.890f, 68.196f, 66.701f, 64.336f, 61.499f, - 59.414f, 57.051f, 54.732f, 52.036f, 49.843f, 47.512f, 46.067f, 43.825f, 41.420f, 39.758f, - 37.807f, 36.193f, 35.165f, 35.124f, 35.144f, 33.203f, 28.254f, 24.248f, 24.898f, 26.293f, - 30.395f, 31.243f, 31.804f, 32.165f, 31.069f, 29.942f, 27.716f, 26.918f, 25.810f, 24.776f, - 22.967f, 23.528f, 24.571f, 25.405f, 25.271f, 22.695f, 20.460f, 18.573f, 18.116f, 16.102f, - 14.964f, 13.592f, 12.346f, 11.005f, 9.797f, 9.198f, 10.469f, 8.861f, 7.126f, 2.176f, - 0.589f, -1.486f, -4.620f, -9.764f, -9.524f, -4.145f, -4.341f, -5.111f, -5.184f, -5.331f, - -6.067f, -7.105f, -6.162f, -5.316f, -3.314f, -1.753f, -0.146f, 0.866f, -0.353f, -1.811f, - -0.931f, 1.072f, 2.894f, 5.117f, 6.916f, 7.864f, 8.529f, 10.237f, 12.542f, 13.049f, - 13.606f -},{ --29.534f,-30.105f,-30.565f,-31.722f,-33.366f,-35.238f,-36.563f,-38.732f,-40.524f,-40.442f, --41.610f,-42.745f,-43.707f,-44.616f,-44.689f,-44.723f,-43.877f,-41.469f,-39.277f,-38.351f, --36.881f,-36.828f,-37.093f,-36.413f,-36.905f,-35.515f,-39.646f,-38.085f,-35.791f,-33.807f, --31.932f,-30.271f,-28.599f,-27.250f,-25.847f,-24.703f,-23.654f,-22.988f,-22.132f,-21.891f, --22.114f,-21.822f,-22.113f,-22.559f,-23.153f,-23.618f,-24.163f,-24.660f,-25.198f,-25.994f, --26.331f,-26.923f,-26.748f,-27.172f,-28.052f,-25.044f,-21.750f,-16.552f,-14.821f,-13.019f, --10.285f, -9.198f, -8.592f, 0.011f, 1.203f, 3.495f, 4.508f, 12.905f, 15.585f, 22.265f, - 24.230f, 28.364f, 32.094f, 34.525f, 36.803f, 40.509f, 44.716f, 49.140f, 52.294f, 54.565f, - 55.261f, 51.742f, 46.677f, 41.798f, 34.941f, 43.155f, 56.643f, 58.588f, 68.866f, 73.940f, - 76.337f, 74.328f, 74.110f, 73.359f, 72.191f, 69.478f, 67.396f, 65.794f, 63.517f, 60.753f, - 58.579f, 56.355f, 54.318f, 51.891f, 49.940f, 48.014f, 46.015f, 43.939f, 41.812f, 39.879f, - 38.466f, 37.205f, 36.014f, 35.597f, 36.256f, 36.269f, 33.368f, 28.972f, 25.904f, 24.359f, - 25.716f, 29.264f, 31.243f, 32.673f, 32.313f, 31.020f, 28.457f, 27.524f, 27.198f, 24.783f, - 23.884f, 22.907f, 22.961f, 25.279f, 25.381f, 23.763f, 21.139f, 19.562f, 18.905f, 17.627f, - 16.818f, 15.810f, 13.997f, 12.712f, 11.658f, 11.801f, 11.295f, 9.589f, 8.401f, 3.781f, - 2.438f, 0.060f, -2.727f, -8.459f, -8.661f, -3.655f, -4.668f, -5.029f, -5.191f, -5.617f, - -5.829f, -6.426f, -5.732f, -4.664f, -3.189f, -1.529f, -0.198f, 1.338f, 0.799f, -1.769f, - -0.981f, 0.875f, 2.920f, 5.033f, 6.695f, 7.557f, 8.575f, 10.555f, 12.830f, 13.076f, - 13.606f -},{ --29.534f,-30.131f,-30.620f,-31.811f,-33.502f,-35.346f,-36.716f,-38.775f,-40.326f,-40.835f, --42.391f,-43.540f,-44.385f,-45.291f,-45.793f,-46.310f,-45.926f,-43.249f,-39.974f,-38.613f, --37.613f,-37.317f,-37.245f,-36.781f,-37.409f,-35.871f,-40.187f,-38.576f,-36.190f,-34.218f, --32.350f,-30.465f,-28.678f,-27.275f,-25.723f,-24.649f,-23.651f,-22.785f,-21.896f,-21.455f, --21.618f,-21.268f,-21.515f,-21.916f,-22.480f,-22.976f,-23.296f,-23.811f,-24.130f,-24.738f, --25.496f,-25.557f,-25.559f,-26.038f,-25.984f,-22.202f,-18.195f,-14.558f,-12.249f, -8.810f, - -6.130f, -4.116f, -5.796f, 0.312f, 1.837f, 4.739f, 7.081f, 15.490f, 18.529f, 23.856f, - 24.593f, 28.908f, 32.961f, 36.472f, 39.050f, 42.548f, 47.734f, 51.513f, 53.545f, 57.043f, - 57.786f, 56.275f, 51.040f, 46.077f, 43.563f, 48.859f, 54.477f, 63.454f, 70.554f, 76.510f, - 72.741f, 74.425f, 74.322f, 74.421f, 72.110f, 69.736f, 67.146f, 65.909f, 64.034f, 60.858f, - 58.246f, 56.054f, 53.869f, 51.616f, 49.611f, 48.452f, 46.409f, 44.127f, 42.281f, 40.493f, - 39.010f, 37.952f, 36.972f, 36.728f, 37.200f, 34.286f, 36.186f, 32.971f, 32.661f, 28.726f, - 26.786f, 26.630f, 25.814f, 30.691f, 31.903f, 32.720f, 30.003f, 29.132f, 27.961f, 25.842f, - 24.943f, 23.745f, 23.109f, 26.275f, 24.454f, 23.018f, 21.786f, 20.297f, 19.097f, 19.346f, - 18.555f, 17.128f, 15.884f, 14.542f, 13.104f, 13.459f, 12.351f, 11.086f, 9.827f, 5.640f, - 3.737f, 1.537f, -1.126f, -6.843f, -5.920f, -2.813f, -4.363f, -4.852f, -4.645f, -5.020f, - -5.810f, -5.757f, -5.240f, -3.919f, -2.966f, -1.456f, -0.252f, 1.753f, 1.612f, -1.556f, - -0.964f, 0.729f, 2.988f, 4.915f, 6.403f, 7.292f, 8.738f, 10.934f, 13.121f, 13.102f, - 13.606f -},{ --29.534f,-30.156f,-30.672f,-31.900f,-33.639f,-35.416f,-36.872f,-38.765f,-40.248f,-41.349f, --43.122f,-44.376f,-45.080f,-46.184f,-47.091f,-47.755f,-46.807f,-43.408f,-40.183f,-39.022f, --38.148f,-37.030f,-36.988f,-37.526f,-38.104f,-37.257f,-40.710f,-39.262f,-36.494f,-34.608f, --32.671f,-30.466f,-28.726f,-27.181f,-25.619f,-24.487f,-23.436f,-22.565f,-21.645f,-21.122f, --20.991f,-20.753f,-20.855f,-21.309f,-21.700f,-22.243f,-22.589f,-23.065f,-23.296f,-23.458f, --24.200f,-24.024f,-24.230f,-24.655f,-24.252f,-19.022f,-14.064f,-14.474f,-12.264f, -7.304f, - -3.517f, -0.993f, 0.042f, 0.512f, 4.390f, 6.667f, 9.880f, 19.153f, 21.349f, 25.896f, - 27.511f, 31.394f, 35.039f, 37.980f, 40.693f, 44.757f, 50.216f, 53.836f, 56.428f, 58.940f, - 60.347f, 59.849f, 58.995f, 53.909f, 52.503f, 58.730f, 65.159f, 68.542f, 70.688f, 79.491f, - 73.762f, 74.390f, 74.306f, 73.398f, 72.473f, 70.540f, 68.720f, 66.501f, 63.978f, 61.640f, - 58.137f, 55.787f, 53.810f, 52.016f, 50.048f, 48.737f, 46.421f, 44.399f, 42.555f, 41.049f, - 39.813f, 38.858f, 38.288f, 37.653f, 37.244f, 35.683f, 36.475f, 34.852f, 34.839f, 33.080f, - 31.990f, 29.804f, 31.368f, 34.322f, 34.017f, 35.077f, 32.916f, 31.457f, 28.904f, 27.670f, - 26.177f, 24.878f, 23.774f, 26.041f, 24.603f, 23.532f, 22.248f, 20.662f, 19.772f, 19.625f, - 19.985f, 18.499f, 17.584f, 16.534f, 14.058f, 14.126f, 13.029f, 11.492f, 10.009f, 7.119f, - 4.494f, 2.849f, -0.111f, -5.893f, -2.888f, -1.704f, -3.435f, -4.239f, -4.158f, -4.312f, - -5.047f, -5.119f, -4.676f, -3.348f, -2.611f, -1.498f, -0.291f, 1.795f, 1.928f, -1.241f, - -0.877f, 0.632f, 3.034f, 4.749f, 6.092f, 7.115f, 9.012f, 11.355f, 13.409f, 13.127f, - 13.606f -},{ --29.534f,-30.179f,-30.723f,-31.987f,-33.778f,-35.464f,-37.031f,-38.812f,-40.516f,-42.017f, --43.794f,-45.247f,-46.044f,-47.563f,-48.681f,-48.443f,-46.178f,-43.149f,-41.154f,-40.453f, --38.887f,-37.202f,-37.392f,-38.791f,-38.565f,-38.302f,-41.024f,-40.137f,-36.906f,-34.985f, --32.914f,-30.612f,-28.746f,-27.091f,-25.631f,-24.516f,-23.398f,-22.405f,-21.382f,-20.636f, --20.486f,-20.287f,-20.243f,-20.449f,-20.875f,-21.313f,-21.724f,-21.995f,-22.308f,-22.301f, --22.618f,-23.088f,-22.455f,-22.744f,-21.408f,-14.951f,-11.394f,-11.013f, -8.952f, -5.687f, - -1.150f, 1.725f, 3.533f, 4.313f, 7.982f, 9.524f, 12.902f, 21.742f, 25.114f, 27.975f, - 31.048f, 34.295f, 36.909f, 39.131f, 42.810f, 46.959f, 51.413f, 54.801f, 56.760f, 58.662f, - 61.227f, 61.965f, 63.176f, 62.905f, 57.547f, 57.415f, 66.820f, 68.675f, 69.716f, 77.891f, - 73.017f, 73.115f, 72.654f, 71.925f, 70.658f, 68.990f, 66.325f, 67.650f, 64.061f, 61.167f, - 58.783f, 56.083f, 53.846f, 52.283f, 50.621f, 49.402f, 47.162f, 45.280f, 43.485f, 41.825f, - 40.659f, 39.721f, 39.471f, 38.757f, 36.824f, 36.792f, 36.313f, 35.340f, 35.058f, 35.787f, - 34.399f, 33.208f, 32.508f, 34.908f, 36.959f, 36.063f, 33.064f, 31.643f, 31.162f, 29.770f, - 28.989f, 25.795f, 24.724f, 26.798f, 25.004f, 25.212f, 23.684f, 22.506f, 20.679f, 20.066f, - 20.791f, 20.219f, 18.817f, 17.785f, 15.531f, 14.257f, 13.484f, 11.575f, 10.373f, 8.049f, - 5.147f, 3.464f, 0.589f, -5.060f, -0.371f, -0.341f, -2.088f, -3.273f, -3.565f, -3.823f, - -4.001f, -4.540f, -4.136f, -3.125f, -2.269f, -1.491f, -0.425f, 1.405f, 2.019f, -1.050f, - -0.757f, 0.621f, 3.017f, 4.547f, 5.828f, 7.065f, 9.381f, 11.795f, 13.685f, 13.152f, - 13.606f -},{ --29.534f,-30.202f,-30.772f,-32.075f,-33.918f,-35.507f,-37.194f,-38.993f,-41.193f,-42.854f, --44.499f,-46.199f,-47.319f,-48.999f,-49.903f,-48.375f,-45.389f,-43.490f,-42.433f,-42.107f, --41.532f,-40.109f,-39.467f,-39.597f,-39.170f,-39.385f,-41.130f,-40.251f,-37.273f,-35.001f, --32.875f,-30.688f,-28.761f,-27.111f,-25.620f,-24.476f,-23.313f,-22.149f,-20.980f,-20.325f, --19.921f,-19.651f,-19.525f,-19.659f,-19.935f,-20.413f,-20.563f,-20.847f,-20.974f,-21.033f, --21.098f,-21.682f,-20.831f,-20.885f,-18.493f,-10.529f, -8.012f, -6.754f, -3.681f, -2.234f, - 0.429f, 3.821f, 5.143f, 6.749f, 9.634f, 13.389f, 17.001f, 23.980f, 27.253f, 30.792f, - 33.081f, 35.676f, 39.161f, 42.588f, 45.405f, 48.441f, 52.059f, 55.515f, 58.875f, 60.157f, - 62.761f, 64.513f, 66.447f, 67.124f, 66.134f, 67.526f, 70.023f, 68.664f, 72.121f, 75.191f, - 71.986f, 70.967f, 71.584f, 70.606f, 69.714f, 68.299f, 65.557f, 62.784f, 62.583f, 61.716f, - 59.575f, 58.032f, 55.340f, 53.643f, 51.830f, 50.329f, 48.649f, 46.718f, 44.692f, 42.622f, - 41.601f, 40.707f, 40.052f, 39.523f, 37.911f, 36.865f, 37.262f, 37.185f, 37.139f, 36.130f, - 36.017f, 35.644f, 33.159f, 33.537f, 36.515f, 36.355f, 34.320f, 32.656f, 30.558f, 30.632f, - 30.194f, 26.966f, 25.819f, 26.052f, 26.952f, 28.680f, 26.580f, 24.519f, 21.909f, 20.660f, - 20.553f, 20.227f, 18.974f, 18.480f, 16.616f, 14.537f, 14.082f, 12.421f, 10.822f, 8.506f, - 5.295f, 3.766f, 1.190f, -4.091f, 1.385f, 0.480f, -0.946f, -2.358f, -3.020f, -3.053f, - -3.196f, -4.083f, -3.695f, -3.033f, -1.972f, -1.301f, -0.585f, 0.817f, 2.241f, -1.125f, - -0.672f, 0.755f, 2.959f, 4.357f, 5.676f, 7.162f, 9.815f, 12.228f, 13.942f, 13.175f, - 13.606f -},{ --29.534f,-30.224f,-30.819f,-32.162f,-34.058f,-35.565f,-37.357f,-39.329f,-42.154f,-43.834f, --45.344f,-47.254f,-48.603f,-49.881f,-50.209f,-48.307f,-45.852f,-44.567f,-43.402f,-43.175f, --44.096f,-43.035f,-41.195f,-39.826f,-40.077f,-40.653f,-40.903f,-40.240f,-37.540f,-35.107f, --32.947f,-30.641f,-28.764f,-27.079f,-25.619f,-24.426f,-23.140f,-21.910f,-20.778f,-19.991f, --19.433f,-19.015f,-18.757f,-18.939f,-19.114f,-19.329f,-19.542f,-19.683f,-19.795f,-19.684f, --19.499f,-19.858f,-19.275f,-18.233f,-10.740f, -6.662f, -4.164f, -2.361f, 0.223f, 1.243f, - 3.202f, 5.387f, 7.510f, 8.805f, 12.246f, 16.394f, 21.843f, 26.481f, 29.720f, 31.859f, - 34.319f, 37.378f, 41.025f, 44.623f, 47.392f, 50.731f, 53.677f, 56.875f, 60.478f, 62.279f, - 64.934f, 66.660f, 67.204f, 68.115f, 68.022f, 67.518f, 75.594f, 69.122f, 72.104f, 74.609f, - 67.969f, 70.649f, 71.088f, 69.979f, 68.803f, 67.846f, 66.661f, 62.665f, 63.063f, 61.653f, - 59.510f, 57.946f, 55.709f, 53.988f, 52.155f, 50.667f, 49.134f, 47.615f, 46.058f, 44.870f, - 43.607f, 41.968f, 40.848f, 39.437f, 39.137f, 39.113f, 39.293f, 38.598f, 38.145f, 37.703f, - 37.491f, 37.208f, 35.537f, 34.273f, 39.600f, 36.730f, 35.649f, 34.538f, 32.362f, 31.354f, - 30.990f, 28.375f, 27.197f, 25.688f, 26.666f, 29.927f, 29.054f, 26.049f, 23.388f, 21.272f, - 20.394f, 19.692f, 18.183f, 17.283f, 16.292f, 14.666f, 14.574f, 13.529f, 11.317f, 9.676f, - 6.307f, 4.973f, 2.216f, -2.428f, 2.690f, 1.184f, -0.228f, -1.761f, -2.445f, -2.307f, - -2.466f, -3.691f, -3.318f, -2.792f, -1.724f, -0.952f, -0.466f, 0.332f, 2.635f, -1.319f, - -0.659f, 1.070f, 2.948f, 4.264f, 5.688f, 7.407f, 10.273f, 12.629f, 14.174f, 13.196f, - 13.606f -},{ --29.534f,-30.244f,-30.865f,-32.249f,-34.195f,-35.654f,-37.514f,-39.775f,-43.145f,-44.858f, --46.362f,-48.352f,-49.544f,-50.183f,-50.020f,-48.884f,-47.484f,-46.374f,-45.007f,-44.388f, --44.102f,-43.227f,-41.453f,-40.285f,-41.088f,-41.894f,-40.697f,-40.763f,-37.849f,-35.123f, --33.008f,-30.772f,-28.648f,-27.121f,-25.655f,-24.289f,-22.864f,-21.683f,-20.463f,-19.501f, --18.900f,-18.437f,-18.160f,-18.123f,-18.327f,-18.517f,-18.690f,-18.636f,-18.632f,-18.452f, --18.045f,-18.086f,-17.220f,-13.475f, -6.752f, -3.837f, -1.656f, 0.861f, 2.182f, 3.782f, - 5.848f, 7.571f, 9.025f, 11.654f, 14.470f, 19.446f, 24.286f, 28.010f, 31.402f, 33.828f, - 37.018f, 39.660f, 43.502f, 45.402f, 48.975f, 52.675f, 55.115f, 57.586f, 60.660f, 62.579f, - 64.210f, 66.472f, 68.354f, 69.843f, 70.102f, 69.888f, 80.779f, 76.710f, 73.647f, 72.421f, - 68.395f, 70.858f, 70.471f, 69.381f, 68.111f, 67.059f, 65.743f, 61.494f, 65.328f, 61.712f, - 59.703f, 57.794f, 55.974f, 54.642f, 52.821f, 51.316f, 49.750f, 48.650f, 47.290f, 46.353f, - 45.457f, 44.538f, 43.831f, 42.002f, 41.722f, 40.976f, 40.333f, 40.076f, 39.628f, 39.118f, - 38.564f, 37.920f, 37.244f, 35.670f, 36.136f, 37.492f, 39.826f, 36.770f, 35.931f, 32.791f, - 31.452f, 29.624f, 28.120f, 26.932f, 26.269f, 26.219f, 28.526f, 28.228f, 25.300f, 22.789f, - 20.588f, 19.417f, 18.396f, 17.538f, 16.480f, 15.210f, 15.050f, 14.891f, 12.413f, 10.883f, - 8.593f, 7.689f, 4.471f, 1.053f, 3.945f, 2.274f, 0.602f, -1.454f, -0.938f, -1.616f, - -1.874f, -3.299f, -3.017f, -2.501f, -1.604f, -0.587f, 0.071f, 0.146f, 2.935f, -1.247f, - -0.667f, 1.543f, 3.094f, 4.362f, 5.886f, 7.774f, 10.713f, 12.973f, 14.374f, 13.216f, - 13.606f -},{ --29.534f,-30.263f,-30.909f,-32.335f,-34.327f,-35.783f,-37.657f,-40.246f,-43.907f,-45.766f, --47.463f,-49.361f,-50.102f,-50.459f,-50.244f,-49.906f,-49.047f,-48.405f,-47.748f,-45.944f, --43.062f,-42.069f,-41.223f,-40.380f,-41.967f,-43.070f,-40.698f,-41.075f,-38.408f,-35.039f, --32.922f,-30.744f,-28.576f,-26.820f,-25.289f,-23.798f,-22.361f,-21.034f,-20.014f,-19.041f, --18.310f,-17.783f,-17.529f,-17.436f,-17.587f,-17.648f,-17.759f,-17.889f,-17.644f,-17.165f, --16.740f,-16.040f,-15.441f, -8.585f, -4.841f, -2.067f, 0.613f, 2.627f, 4.343f, 6.625f, - 7.975f, 9.716f, 10.744f, 13.569f, 16.969f, 21.232f, 26.206f, 30.388f, 33.575f, 36.273f, - 39.085f, 41.951f, 45.454f, 47.531f, 49.779f, 52.218f, 54.914f, 58.280f, 61.781f, 63.826f, - 65.607f, 67.491f, 68.685f, 69.639f, 70.066f, 69.257f, 82.330f, 78.075f, 74.879f, 69.956f, - 70.105f, 70.796f, 70.092f, 68.763f, 67.475f, 66.518f, 65.513f, 63.922f, 58.489f, 58.601f, - 60.112f, 58.869f, 56.081f, 54.956f, 53.069f, 51.907f, 50.658f, 49.566f, 48.268f, 47.473f, - 46.523f, 45.902f, 45.325f, 44.336f, 43.715f, 43.065f, 42.183f, 41.728f, 40.724f, 39.997f, - 39.470f, 39.227f, 38.618f, 36.997f, 37.136f, 40.882f, 42.320f, 39.586f, 36.248f, 34.509f, - 32.518f, 30.282f, 29.052f, 28.098f, 26.945f, 25.613f, 26.092f, 27.309f, 26.075f, 23.904f, - 21.807f, 20.341f, 19.489f, 17.958f, 16.957f, 15.661f, 14.953f, 15.060f, 13.798f, 11.811f, - 10.072f, 9.410f, 7.059f, 4.638f, 4.982f, 2.998f, 1.864f, 0.157f, 0.831f, -0.631f, - -1.458f, -2.896f, -2.820f, -2.267f, -1.524f, -0.304f, 0.693f, 0.317f, 2.897f, -0.592f, - -0.572f, 2.093f, 3.463f, 4.716f, 6.261f, 8.218f, 11.088f, 13.237f, 14.535f, 13.234f, - 13.606f -},{ --29.534f,-30.281f,-30.951f,-32.420f,-34.449f,-35.949f,-37.777f,-40.647f,-44.289f,-46.400f, --48.477f,-50.160f,-50.561f,-51.163f,-51.193f,-50.765f,-49.703f,-49.548f,-50.260f,-47.041f, --43.056f,-41.884f,-41.005f,-40.295f,-42.038f,-43.698f,-40.943f,-41.085f,-39.004f,-34.983f, --32.848f,-30.484f,-28.281f,-26.664f,-25.070f,-23.480f,-22.155f,-21.047f,-19.893f,-18.740f, --17.925f,-17.390f,-17.103f,-17.148f,-17.301f,-17.132f,-17.010f,-16.619f,-16.694f,-16.191f, --15.381f,-14.709f,-11.729f, -6.333f, -3.385f, -0.432f, 2.872f, 7.085f, 8.556f, 10.978f, - 11.752f, 11.534f, 13.214f, 15.988f, 19.472f, 23.911f, 28.380f, 33.129f, 37.267f, 40.227f, - 43.208f, 44.920f, 47.610f, 50.190f, 50.856f, 52.347f, 55.230f, 58.581f, 61.968f, 65.522f, - 67.514f, 68.885f, 69.818f, 70.126f, 70.331f, 71.609f, 81.022f, 76.423f, 73.707f, 69.321f, - 71.190f, 70.927f, 69.740f, 68.533f, 67.289f, 66.290f, 64.777f, 64.115f, 63.251f, 60.622f, - 55.067f, 50.489f, 54.030f, 53.788f, 53.111f, 52.134f, 51.111f, 49.966f, 49.314f, 48.606f, - 48.078f, 47.468f, 46.939f, 46.324f, 45.447f, 44.327f, 43.285f, 42.522f, 42.356f, 42.101f, - 42.094f, 42.374f, 41.856f, 40.636f, 39.672f, 39.367f, 41.430f, 42.368f, 38.126f, 36.699f, - 34.420f, 32.305f, 30.465f, 28.799f, 27.744f, 26.637f, 24.621f, 25.229f, 25.690f, 24.157f, - 22.715f, 21.420f, 19.742f, 18.478f, 17.436f, 15.605f, 14.627f, 14.550f, 14.877f, 12.973f, - 11.272f, 10.521f, 8.351f, 6.973f, 5.963f, 3.325f, 3.224f, 2.525f, 1.329f, 0.078f, - -0.989f, -2.427f, -2.576f, -1.870f, -1.273f, -0.088f, 0.922f, 0.756f, 2.534f, 0.600f, - -0.261f, 2.610f, 4.022f, 5.325f, 6.767f, 8.679f, 11.358f, 13.404f, 14.655f, 13.250f, - 13.606f -},{ --29.534f,-30.298f,-30.992f,-32.503f,-34.559f,-36.139f,-37.870f,-40.904f,-44.309f,-46.695f, --49.244f,-50.735f,-51.200f,-52.240f,-52.425f,-51.359f,-49.759f,-49.444f,-51.158f,-47.872f, --43.893f,-43.030f,-41.432f,-40.805f,-41.796f,-44.282f,-41.419f,-40.978f,-38.809f,-34.974f, --32.984f,-30.368f,-28.433f,-26.656f,-24.875f,-23.155f,-21.547f,-20.170f,-19.124f,-18.831f, --18.521f,-18.191f,-17.913f,-17.663f,-17.589f,-17.202f,-16.785f,-16.199f,-16.157f,-15.775f, --15.067f,-13.052f, -7.929f, -3.588f, -1.050f, 1.131f, 3.714f, 7.182f, 9.689f, 10.214f, - 12.594f, 13.599f, 15.034f, 17.691f, 20.906f, 25.805f, 31.368f, 35.923f, 40.445f, 43.896f, - 45.995f, 47.288f, 49.649f, 51.509f, 52.457f, 53.736f, 56.872f, 59.712f, 62.437f, 66.327f, - 69.201f, 70.472f, 70.995f, 72.213f, 72.856f, 75.784f, 77.301f, 77.238f, 71.214f, 72.106f, - 72.228f, 70.936f, 69.250f, 67.937f, 66.631f, 65.510f, 64.299f, 63.392f, 62.728f, 60.429f, - 61.322f, 50.860f, 52.845f, 52.936f, 53.022f, 52.366f, 51.165f, 50.845f, 50.042f, 49.307f, - 48.859f, 48.324f, 47.593f, 46.894f, 46.357f, 45.608f, 44.488f, 43.658f, 43.431f, 42.589f, - 42.338f, 42.313f, 41.582f, 43.158f, 39.302f, 33.735f, 38.186f, 42.581f, 41.619f, 39.119f, - 37.738f, 35.303f, 34.537f, 31.627f, 29.552f, 28.156f, 25.545f, 23.766f, 23.504f, 23.262f, - 22.490f, 21.417f, 20.022f, 18.815f, 17.853f, 15.715f, 14.179f, 14.292f, 14.255f, 13.422f, - 12.185f, 11.204f, 9.443f, 8.262f, 6.389f, 4.132f, 4.383f, 3.045f, 1.325f, 0.181f, - -0.683f, -1.937f, -2.198f, -1.300f, -0.945f, 0.107f, 0.715f, 1.216f, 2.065f, 1.900f, - 0.277f, 2.994f, 4.635f, 6.102f, 7.329f, 9.091f, 11.492f, 13.461f, 14.729f, 13.263f, - 13.606f -},{ --29.534f,-30.313f,-31.032f,-32.583f,-34.652f,-36.329f,-37.935f,-40.986f,-44.124f,-46.724f, --49.691f,-51.200f,-52.048f,-53.349f,-53.487f,-52.080f,-49.965f,-49.012f,-50.603f,-48.688f, --44.822f,-43.744f,-42.631f,-41.666f,-42.036f,-44.405f,-41.963f,-40.930f,-37.914f,-34.957f, --32.666f,-30.203f,-27.897f,-25.845f,-23.860f,-22.242f,-20.836f,-20.052f,-19.407f,-18.731f, --18.077f,-17.598f,-17.424f,-17.050f,-17.021f,-16.809f,-16.247f,-15.763f,-15.400f,-15.274f, --13.533f,-10.218f, -3.801f, -0.877f, 0.942f, 2.138f, 4.024f, 8.162f, 11.919f, 13.575f, - 15.313f, 16.289f, 17.512f, 20.089f, 22.792f, 26.588f, 32.388f, 37.448f, 40.986f, 43.649f, - 45.264f, 47.750f, 49.929f, 52.312f, 53.700f, 55.892f, 58.703f, 60.989f, 63.469f, 66.727f, - 70.022f, 71.361f, 72.174f, 73.311f, 74.572f, 81.112f, 78.736f, 77.573f, 71.138f, 72.791f, - 72.307f, 70.894f, 69.541f, 68.177f, 66.662f, 65.206f, 64.210f, 62.534f, 61.875f, 60.847f, - 56.076f, 43.494f, 48.140f, 52.422f, 52.610f, 52.181f, 51.634f, 50.670f, 50.132f, 49.347f, - 48.793f, 48.294f, 47.473f, 47.646f, 47.685f, 46.811f, 42.552f, 41.868f, 40.203f, 36.436f, - 34.539f, 35.484f, 33.148f, 33.620f, 24.859f, 22.738f, 30.788f, 39.027f, 41.355f, 41.209f, - 40.368f, 35.918f, 32.730f, 33.140f, 30.624f, 28.599f, 26.500f, 23.677f, 21.629f, 21.446f, - 20.872f, 19.814f, 19.283f, 18.698f, 16.926f, 15.225f, 14.408f, 14.215f, 13.284f, 13.223f, - 12.581f, 11.702f, 10.625f, 8.483f, 6.209f, 5.402f, 5.025f, 2.526f, 1.543f, 0.174f, - -0.800f, -1.592f, -1.888f, -0.927f, -0.831f, 0.278f, 0.498f, 1.420f, 1.717f, 2.806f, - 0.931f, 3.185f, 5.113f, 6.888f, 7.859f, 9.395f, 11.472f, 13.403f, 14.755f, 13.274f, - 13.606f -},{ --29.534f,-30.327f,-31.070f,-32.659f,-34.729f,-36.492f,-37.977f,-40.911f,-43.932f,-46.676f, --49.868f,-51.712f,-52.947f,-54.267f,-54.345f,-53.058f,-50.600f,-49.160f,-49.909f,-49.035f, --45.870f,-44.062f,-43.944f,-42.918f,-43.019f,-44.354f,-42.873f,-40.499f,-37.319f,-34.627f, --32.206f,-29.625f,-27.219f,-25.125f,-23.175f,-21.568f,-20.321f,-19.365f,-18.841f,-18.232f, --17.584f,-17.162f,-17.018f,-16.625f,-16.381f,-16.177f,-15.818f,-15.001f,-15.262f,-14.034f, --11.686f, -6.272f, -0.710f, 2.071f, 3.031f, 4.077f, 5.676f, 8.343f, 12.659f, 15.677f, - 17.624f, 18.854f, 19.897f, 21.928f, 23.985f, 27.870f, 31.903f, 37.240f, 40.757f, 43.407f, - 45.481f, 48.740f, 51.451f, 53.922f, 55.938f, 58.162f, 61.583f, 63.780f, 66.535f, 69.363f, - 72.079f, 73.286f, 74.238f, 74.952f, 78.517f, 83.627f, 78.267f, 77.106f, 73.477f, 73.389f, - 72.288f, 70.667f, 69.235f, 68.104f, 66.877f, 65.527f, 64.453f, 62.543f, 61.330f, 60.456f, - 53.968f, 37.894f, 46.371f, 53.394f, 52.784f, 52.196f, 51.536f, 50.641f, 49.941f, 49.287f, - 48.759f, 48.431f, 48.928f, 47.436f, 44.197f, 41.764f, 38.836f, 45.581f, 48.476f, 36.724f, - 25.043f, 19.519f, 16.345f, 14.570f, 10.793f, 12.689f, 18.972f, 28.451f, 35.366f, 38.049f, - 37.377f, 29.321f, 22.499f, 30.337f, 31.342f, 28.418f, 26.411f, 24.913f, 23.795f, 22.433f, - 20.734f, 19.210f, 18.678f, 18.052f, 16.014f, 15.764f, 14.803f, 13.802f, 13.125f, 13.007f, - 12.383f, 12.539f, 11.531f, 8.641f, 6.516f, 6.112f, 4.787f, 2.977f, 0.949f, 0.296f, - -0.953f, -1.403f, -1.708f, -0.795f, -0.801f, 0.392f, 0.589f, 1.307f, 1.612f, 3.114f, - 1.529f, 3.168f, 5.289f, 7.496f, 8.275f, 9.547f, 11.295f, 13.231f, 14.732f, 13.282f, - 13.606f -},{ --29.534f,-30.340f,-31.107f,-32.730f,-34.789f,-36.601f,-38.008f,-40.731f,-43.863f,-46.744f, --49.899f,-52.327f,-53.785f,-54.980f,-55.096f,-53.961f,-51.474f,-49.905f,-50.193f,-49.673f, --47.395f,-45.696f,-45.212f,-43.913f,-44.243f,-44.687f,-43.705f,-40.020f,-37.050f,-34.451f, --31.758f,-29.236f,-26.908f,-24.689f,-22.848f,-21.268f,-19.897f,-18.963f,-18.395f,-17.761f, --17.140f,-16.644f,-16.725f,-16.518f,-16.034f,-15.787f,-15.119f,-14.911f,-14.478f,-11.652f, - -7.415f, -2.647f, 1.500f, 3.788f, 4.607f, 6.031f, 7.848f, 9.067f, 12.231f, 16.132f, - 19.181f, 20.477f, 22.345f, 24.273f, 26.335f, 28.757f, 32.829f, 37.308f, 41.656f, 44.356f, - 48.264f, 52.441f, 53.834f, 56.827f, 58.842f, 61.251f, 63.732f, 66.734f, 69.328f, 72.354f, - 74.296f, 74.611f, 74.775f, 76.373f, 81.409f, 80.506f, 76.549f, 77.502f, 76.485f, 72.873f, - 72.123f, 70.214f, 68.123f, 66.630f, 65.757f, 64.866f, 63.767f, 62.616f, 61.590f, 57.357f, - 51.897f, 40.894f, 48.303f, 54.110f, 54.450f, 53.704f, 52.964f, 52.326f, 51.560f, 50.886f, - 50.196f, 48.993f, 47.185f, 40.385f, 34.846f, 32.709f, 35.251f, 33.341f, 32.239f, 23.492f, - 22.705f, 24.353f, 24.602f, 24.106f, 22.765f, 20.461f, 16.163f, 16.178f, 24.233f, 24.724f, - 23.564f, 17.019f, 20.894f, 30.896f, 31.694f, 28.042f, 25.718f, 24.531f, 22.783f, 22.142f, - 21.642f, 20.149f, 18.152f, 17.787f, 17.345f, 16.463f, 15.146f, 14.853f, 13.287f, 12.544f, - 12.561f, 12.656f, 12.119f, 8.851f, 7.767f, 6.376f, 4.609f, 4.586f, 0.232f, 0.575f, - -0.819f, -1.267f, -1.396f, -0.567f, -0.435f, 0.458f, 0.846f, 1.125f, 1.746f, 3.017f, - 1.941f, 2.971f, 5.103f, 7.773f, 8.516f, 9.527f, 10.976f, 12.954f, 14.661f, 13.288f, - 13.606f -},{ --29.534f,-30.351f,-31.142f,-32.795f,-34.836f,-36.639f,-38.039f,-40.517f,-43.928f,-47.002f, --49.902f,-52.931f,-54.576f,-55.575f,-55.717f,-54.608f,-52.416f,-50.890f,-51.097f,-51.155f, --49.271f,-47.397f,-46.396f,-44.743f,-44.962f,-44.907f,-43.834f,-39.812f,-36.830f,-34.235f, --31.370f,-28.920f,-26.633f,-24.616f,-22.773f,-21.034f,-19.783f,-18.868f,-18.243f,-17.778f, --17.149f,-16.506f,-16.072f,-15.894f,-15.508f,-15.291f,-14.965f,-14.091f,-11.623f, -5.904f, - -1.966f, -1.034f, 2.961f, 5.494f, 6.394f, 8.151f, 9.736f, 11.503f, 13.151f, 16.612f, - 20.860f, 22.821f, 24.746f, 26.489f, 28.282f, 31.639f, 34.710f, 39.102f, 43.323f, 46.689f, - 52.184f, 55.547f, 56.731f, 58.534f, 61.832f, 63.994f, 66.365f, 65.139f, 68.005f, 71.806f, - 73.661f, 74.385f, 74.530f, 77.424f, 82.389f, 76.693f, 74.999f, 78.182f, 77.568f, 73.336f, - 70.758f, 69.128f, 66.941f, 65.625f, 64.598f, 63.652f, 62.990f, 61.977f, 59.281f, 54.723f, - 53.264f, 46.358f, 38.267f, 52.992f, 54.722f, 54.827f, 53.655f, 52.603f, 51.219f, 50.117f, - 49.238f, 47.551f, 42.930f, 32.943f, 28.743f, 37.631f, 39.188f, 33.008f, 30.191f, 30.224f, - 29.865f, 28.874f, 28.507f, 27.625f, 26.909f, 23.573f, 21.916f, 18.006f, 16.680f, 15.470f, - 14.508f, 11.211f, 14.635f, 28.293f, 30.541f, 27.386f, 24.122f, 21.640f, 21.620f, 21.172f, - 20.994f, 18.447f, 17.606f, 17.307f, 16.508f, 15.917f, 16.248f, 14.998f, 13.491f, 12.839f, - 13.697f, 13.424f, 12.246f, 9.730f, 8.719f, 7.335f, 5.482f, 5.797f, 0.770f, 0.913f, - -0.553f, -1.103f, -0.901f, -0.285f, 0.192f, 0.545f, 0.983f, 1.191f, 1.989f, 2.885f, - 2.142f, 2.658f, 4.623f, 7.647f, 8.560f, 9.341f, 10.542f, 12.584f, 14.545f, 13.291f, - 13.606f -},{ --29.534f,-30.361f,-31.176f,-32.852f,-34.874f,-36.604f,-38.075f,-40.332f,-44.039f,-47.363f, --49.932f,-53.320f,-55.335f,-56.158f,-56.236f,-55.253f,-53.435f,-51.967f,-51.576f,-51.889f, --50.802f,-48.425f,-47.654f,-46.514f,-45.307f,-45.162f,-43.365f,-39.501f,-36.820f,-33.808f, --31.017f,-28.716f,-26.385f,-24.101f,-22.204f,-20.677f,-19.556f,-18.661f,-17.933f,-17.367f, --17.072f,-16.623f,-16.295f,-16.132f,-15.289f,-14.607f,-13.007f, -8.970f, -5.565f, -2.332f, - -1.725f, 0.795f, 3.864f, 6.684f, 7.909f, 9.682f, 11.768f, 14.017f, 16.500f, 18.355f, - 22.339f, 24.518f, 27.358f, 29.446f, 31.177f, 34.457f, 38.297f, 42.290f, 45.796f, 49.852f, - 55.249f, 58.179f, 59.535f, 61.114f, 62.777f, 65.219f, 64.652f, 64.335f, 66.948f, 70.070f, - 70.927f, 74.402f, 73.796f, 76.712f, 80.519f, 70.403f, 75.182f, 78.842f, 78.306f, 73.276f, - 69.202f, 68.039f, 66.229f, 64.783f, 63.980f, 63.016f, 62.586f, 60.859f, 60.107f, 55.520f, - 55.253f, 50.752f, 35.438f, 45.781f, 54.949f, 54.991f, 53.682f, 52.075f, 49.936f, 47.996f, - 46.608f, 43.811f, 32.953f, 26.550f, 36.126f, 38.298f, 38.387f, 35.144f, 32.397f, 31.585f, - 29.962f, 28.313f, 28.187f, 27.310f, 25.496f, 23.421f, 22.400f, 22.151f, 21.160f, 19.808f, - 16.913f, 10.494f, 10.981f, 28.077f, 30.534f, 25.606f, 23.080f, 21.134f, 21.833f, 21.010f, - 19.219f, 17.471f, 16.397f, 15.738f, 15.315f, 15.957f, 17.383f, 15.792f, 14.006f, 13.264f, - 13.741f, 13.581f, 12.285f, 10.999f, 8.699f, 8.831f, 6.992f, 4.531f, 1.810f, 1.168f, - -0.135f, -0.725f, -0.504f, -0.268f, 0.514f, 0.729f, 1.017f, 1.553f, 2.135f, 2.927f, - 2.215f, 2.314f, 4.017f, 7.153f, 8.425f, 9.017f, 10.030f, 12.142f, 14.385f, 13.291f, - 13.606f -},{ --29.534f,-30.370f,-31.208f,-32.902f,-34.910f,-36.511f,-38.112f,-40.220f,-44.085f,-47.644f, --49.969f,-53.375f,-55.980f,-56.779f,-56.816f,-56.079f,-54.528f,-53.127f,-51.844f,-51.516f, --51.345f,-50.206f,-48.871f,-47.976f,-45.358f,-45.309f,-42.676f,-39.439f,-36.663f,-33.808f, --30.913f,-28.366f,-25.951f,-24.076f,-22.261f,-20.507f,-19.318f,-19.190f,-18.810f,-18.222f, --17.887f,-17.221f,-15.733f,-14.937f,-13.966f,-13.726f, -9.746f, -5.227f, -1.927f, -1.377f, - -1.002f, 1.953f, 6.677f, 8.790f, 9.506f, 11.757f, 14.161f, 16.737f, 20.025f, 21.563f, - 24.109f, 26.228f, 29.005f, 31.683f, 34.558f, 37.836f, 41.954f, 46.097f, 49.123f, 52.548f, - 56.329f, 58.522f, 59.662f, 61.834f, 62.054f, 62.830f, 63.916f, 65.670f, 67.879f, 70.213f, - 69.206f, 70.884f, 75.442f, 78.264f, 72.099f, 68.271f, 77.267f, 79.405f, 77.637f, 72.968f, - 67.927f, 66.999f, 65.612f, 64.170f, 63.002f, 61.916f, 61.244f, 60.420f, 59.754f, 56.006f, - 53.500f, 50.458f, 41.714f, 31.760f, 42.874f, 49.670f, 52.657f, 48.828f, 44.180f, 42.227f, - 40.519f, 34.819f, 25.733f, 31.228f, 36.730f, 35.254f, 36.369f, 33.784f, 32.985f, 30.191f, - 28.272f, 26.356f, 26.036f, 25.410f, 24.005f, 21.937f, 22.024f, 21.822f, 22.238f, 22.030f, - 20.693f, 16.296f, 8.986f, 21.354f, 30.973f, 25.708f, 23.014f, 20.454f, 19.800f, 20.014f, - 18.812f, 17.495f, 16.462f, 15.938f, 15.827f, 16.945f, 17.620f, 17.037f, 14.855f, 13.892f, - 13.994f, 13.605f, 12.497f, 10.926f, 9.416f, 9.148f, 8.181f, 2.419f, 2.602f, 1.590f, - 0.607f, -0.074f, -0.259f, -0.370f, 0.345f, 1.008f, 1.176f, 1.947f, 2.073f, 3.067f, - 2.286f, 2.029f, 3.476f, 6.420f, 8.161f, 8.603f, 9.484f, 11.649f, 14.188f, 13.289f, - 13.606f -},{ --29.534f,-30.378f,-31.239f,-32.941f,-34.953f,-36.390f,-38.131f,-40.190f,-44.019f,-47.717f, --49.975f,-53.179f,-56.393f,-57.339f,-57.463f,-56.842f,-55.563f,-54.319f,-52.719f,-51.941f, --51.295f,-51.382f,-49.619f,-48.642f,-45.584f,-45.807f,-42.436f,-39.433f,-36.443f,-33.247f, --30.497f,-28.026f,-25.964f,-23.827f,-22.021f,-21.185f,-20.738f,-20.288f,-19.384f,-18.356f, --17.995f,-17.099f,-14.772f,-13.352f,-13.744f,-13.147f, -8.084f, -4.055f, -1.341f, -1.036f, - -0.032f, 1.627f, 6.520f, 12.393f, 11.819f, 13.558f, 16.575f, 18.869f, 21.657f, 24.488f, - 26.035f, 27.792f, 30.148f, 33.940f, 38.071f, 41.330f, 45.500f, 48.824f, 51.405f, 53.939f, - 56.609f, 58.355f, 59.050f, 59.333f, 61.043f, 63.347f, 64.844f, 64.939f, 67.210f, 69.299f, - 69.072f, 77.019f, 84.229f, 73.312f, 71.121f, 73.513f, 79.020f, 79.868f, 77.597f, 72.313f, - 66.041f, 66.345f, 65.300f, 63.749f, 62.464f, 61.276f, 60.137f, 59.348f, 58.682f, 54.071f, - 51.226f, 49.687f, 46.808f, 39.501f, 32.106f, 36.966f, 39.536f, 38.184f, 36.946f, 34.772f, - 31.172f, 29.460f, 32.055f, 35.019f, 35.440f, 34.104f, 33.829f, 32.244f, 30.172f, 27.900f, - 25.778f, 24.448f, 24.022f, 22.985f, 21.476f, 20.964f, 20.797f, 20.322f, 20.746f, 21.475f, - 20.805f, 18.685f, 9.999f, 10.537f, 29.627f, 26.460f, 22.913f, 21.082f, 19.957f, 19.841f, - 18.778f, 17.572f, 17.054f, 16.656f, 16.739f, 17.706f, 17.961f, 17.228f, 15.354f, 14.278f, - 14.142f, 14.024f, 12.585f, 10.866f, 10.537f, 8.850f, 8.183f, 2.301f, 3.204f, 2.229f, - 1.419f, 0.518f, 0.048f, -0.198f, 0.161f, 1.247f, 1.505f, 2.101f, 1.943f, 3.096f, - 2.449f, 1.867f, 3.130f, 5.626f, 7.838f, 8.156f, 8.949f, 11.131f, 13.957f, 13.284f, - 13.606f -},{ --29.534f,-30.384f,-31.268f,-32.971f,-35.010f,-36.282f,-38.105f,-40.213f,-43.888f,-47.631f, --49.953f,-52.945f,-56.567f,-57.646f,-57.899f,-57.268f,-56.379f,-55.452f,-54.004f,-53.401f, --52.058f,-51.236f,-50.563f,-49.336f,-45.865f,-46.246f,-42.382f,-39.188f,-36.054f,-33.000f, --30.493f,-27.966f,-25.598f,-23.751f,-22.907f,-22.068f,-21.246f,-19.732f,-19.060f,-18.169f, --17.479f,-16.248f,-13.842f,-12.275f,-13.746f,-13.252f, -9.376f, -5.051f, -1.741f, -0.259f, - 0.795f, 2.693f, 6.489f, 13.516f, 15.704f, 16.853f, 19.131f, 21.994f, 23.708f, 25.351f, - 27.663f, 30.086f, 32.165f, 35.211f, 39.151f, 44.317f, 47.382f, 49.758f, 52.111f, 55.042f, - 56.504f, 57.766f, 57.734f, 60.471f, 62.880f, 64.295f, 63.626f, 64.868f, 66.536f, 68.378f, - 75.329f, 82.188f, 74.844f, 59.791f, 69.821f, 78.240f, 80.567f, 79.443f, 76.228f, 71.140f, - 65.546f, 65.905f, 64.155f, 62.815f, 62.089f, 60.936f, 59.464f, 58.423f, 58.680f, 54.482f, - 51.174f, 47.426f, 47.108f, 46.510f, 42.883f, 39.610f, 36.164f, 31.384f, 30.938f, 32.978f, - 35.643f, 37.633f, 36.921f, 35.983f, 33.908f, 32.339f, 32.055f, 29.478f, 27.598f, 24.873f, - 23.454f, 21.845f, 21.732f, 20.817f, 19.496f, 18.957f, 18.808f, 18.371f, 18.620f, 19.890f, - 19.799f, 18.743f, 13.798f, 2.790f, 18.909f, 27.966f, 23.174f, 21.244f, 19.911f, 20.159f, - 19.313f, 18.127f, 17.826f, 17.759f, 17.725f, 18.109f, 18.466f, 17.515f, 15.661f, 15.015f, - 14.449f, 14.532f, 12.938f, 11.658f, 10.571f, 9.672f, 7.048f, 3.501f, 3.700f, 2.780f, - 1.893f, 0.861f, 0.387f, 0.180f, 0.358f, 1.271f, 1.829f, 2.007f, 2.041f, 2.921f, - 2.717f, 1.837f, 3.005f, 4.942f, 7.524f, 7.729f, 8.461f, 10.611f, 13.699f, 13.277f, - 13.606f -},{ --29.534f,-30.388f,-31.295f,-32.990f,-35.087f,-36.227f,-38.001f,-40.226f,-43.785f,-47.608f, --49.974f,-52.850f,-56.596f,-57.632f,-57.927f,-57.477f,-56.966f,-56.416f,-55.264f,-54.709f, --53.765f,-51.843f,-51.667f,-49.320f,-45.557f,-45.860f,-42.172f,-39.020f,-35.996f,-33.130f, --30.233f,-27.383f,-25.508f,-24.483f,-23.318f,-21.769f,-20.739f,-19.674f,-18.669f,-17.609f, --16.865f,-15.768f,-13.499f,-12.924f,-13.567f,-12.393f,-10.685f, -8.223f, -5.100f, -2.531f, - 0.169f, 0.793f, 7.076f, 14.101f, 18.586f, 19.524f, 22.141f, 24.827f, 25.988f, 27.243f, - 28.218f, 30.633f, 33.234f, 36.212f, 40.265f, 45.601f, 47.680f, 50.330f, 53.604f, 55.296f, - 57.346f, 58.048f, 58.738f, 61.140f, 63.270f, 64.072f, 62.308f, 64.648f, 65.337f, 69.000f, - 78.171f, 77.721f, 67.704f, 58.705f, 74.951f, 80.377f, 80.531f, 78.162f, 73.807f, 68.897f, - 62.062f, 62.435f, 61.957f, 60.985f, 59.461f, 59.093f, 57.703f, 58.455f, 57.721f, 50.707f, - 46.013f, 45.657f, 46.347f, 45.521f, 44.324f, 43.449f, 43.177f, 40.059f, 39.007f, 38.277f, - 41.115f, 36.670f, 37.272f, 35.485f, 31.894f, 30.936f, 28.186f, 27.698f, 24.483f, 22.705f, - 21.181f, 19.504f, 19.775f, 17.959f, 17.018f, 16.658f, 16.385f, 15.654f, 16.293f, 17.685f, - 18.389f, 18.468f, 16.468f, 5.614f, 2.230f, 24.029f, 23.699f, 21.219f, 19.886f, 20.278f, - 20.009f, 18.450f, 18.834f, 18.235f, 18.146f, 18.838f, 18.934f, 17.702f, 15.996f, 16.155f, - 15.302f, 14.921f, 13.570f, 11.960f, 10.385f, 9.259f, 5.336f, 4.613f, 4.289f, 3.231f, - 2.066f, 1.198f, 0.496f, 0.458f, 0.729f, 1.069f, 2.050f, 1.866f, 2.487f, 2.644f, - 3.012f, 1.891f, 3.025f, 4.477f, 7.267f, 7.366f, 8.052f, 10.114f, 13.421f, 13.268f, - 13.606f -},{ --29.534f,-30.392f,-31.321f,-32.999f,-35.187f,-36.257f,-37.793f,-40.149f,-43.769f,-47.890f, --50.124f,-52.912f,-56.544f,-57.431f,-57.740f,-57.731f,-57.454f,-57.054f,-56.359f,-55.803f, --54.940f,-52.839f,-51.859f,-48.891f,-45.244f,-45.580f,-42.018f,-38.840f,-35.983f,-32.693f, --29.654f,-27.227f,-25.791f,-24.298f,-23.024f,-21.523f,-20.637f,-19.599f,-19.055f,-18.075f, --17.065f,-14.012f,-14.281f,-14.314f,-13.509f,-11.796f, -9.014f, -8.741f, -6.905f, -4.609f, - -2.335f, -0.889f, 6.400f, 11.825f, 16.643f, 20.421f, 24.353f, 26.895f, 28.226f, 29.576f, - 31.691f, 32.827f, 35.217f, 38.001f, 42.150f, 46.178f, 49.255f, 51.466f, 53.438f, 55.637f, - 57.400f, 58.049f, 60.027f, 62.759f, 64.178f, 63.429f, 62.212f, 64.435f, 65.248f, 71.548f, - 78.443f, 78.413f, 71.729f, 64.837f, 81.327f, 81.823f, 79.809f, 77.093f, 72.988f, 64.406f, - 63.325f, 62.227f, 59.971f, 57.337f, 57.120f, 54.925f, 56.729f, 52.586f, 52.293f, 55.623f, - 44.975f, 44.268f, 44.558f, 44.053f, 43.485f, 43.862f, 42.363f, 44.069f, 40.858f, 38.105f, - 40.881f, 36.493f, 35.874f, 33.524f, 32.656f, 28.007f, 27.125f, 25.232f, 22.181f, 21.304f, - 19.332f, 17.630f, 16.977f, 16.208f, 15.809f, 14.782f, 13.999f, 13.672f, 13.400f, 15.650f, - 16.643f, 17.274f, 16.992f, 12.132f, -2.953f, 13.590f, 25.003f, 21.549f, 20.172f, 21.001f, - 20.277f, 19.053f, 19.310f, 18.430f, 18.782f, 19.310f, 19.081f, 17.595f, 16.517f, 17.164f, - 16.206f, 15.408f, 14.059f, 11.874f, 10.468f, 7.218f, 4.385f, 5.277f, 4.652f, 3.570f, - 2.234f, 1.498f, 0.369f, 0.655f, 0.904f, 0.864f, 2.243f, 1.849f, 3.023f, 2.452f, - 3.203f, 1.950f, 3.066f, 4.260f, 7.082f, 7.093f, 7.737f, 9.660f, 13.129f, 13.256f, - 13.606f -},{ --29.534f,-30.394f,-31.344f,-32.998f,-35.311f,-36.381f,-37.474f,-39.902f,-43.795f,-48.532f, --50.417f,-53.032f,-56.370f,-57.163f,-57.616f,-58.012f,-57.871f,-57.323f,-56.770f,-56.504f, --55.436f,-53.456f,-51.989f,-48.729f,-45.677f,-45.432f,-41.785f,-38.649f,-35.359f,-31.834f, --29.110f,-27.160f,-25.536f,-24.310f,-23.131f,-21.965f,-21.495f,-20.159f,-19.168f,-18.277f, --16.904f,-15.099f,-15.038f,-14.318f,-13.194f,-11.771f, -8.861f, -8.111f, -6.719f, -4.229f, - -2.061f, 0.103f, 2.491f, 5.584f, 9.663f, 17.015f, 22.309f, 26.023f, 29.709f, 32.306f, - 33.923f, 34.792f, 38.060f, 41.217f, 44.679f, 46.978f, 49.060f, 50.727f, 52.929f, 55.249f, - 57.341f, 58.214f, 60.055f, 62.576f, 63.902f, 61.965f, 62.609f, 64.334f, 65.556f, 74.733f, - 76.643f, 77.650f, 72.816f, 66.839f, 74.534f, 79.819f, 77.861f, 75.505f, 70.092f, 61.828f, - 61.307f, 59.178f, 57.008f, 55.745f, 54.986f, 53.599f, 53.349f, 52.298f, 49.915f, 46.676f, - 43.754f, 43.432f, 42.601f, 42.164f, 41.723f, 41.648f, 40.585f, 40.425f, 42.708f, 37.783f, - 37.463f, 33.707f, 34.043f, 30.912f, 29.701f, 27.108f, 26.002f, 23.168f, 20.988f, 19.571f, - 17.296f, 16.162f, 15.796f, 14.445f, 13.714f, 12.357f, 11.705f, 11.448f, 11.682f, 13.378f, - 14.530f, 15.728f, 16.401f, 14.661f, 2.040f, 1.264f, 23.752f, 22.533f, 20.839f, 20.756f, - 21.130f, 19.485f, 19.600f, 18.940f, 19.176f, 19.600f, 18.824f, 17.249f, 16.724f, 17.571f, - 16.689f, 15.637f, 14.215f, 11.917f, 10.113f, 6.852f, 5.388f, 5.549f, 4.667f, 3.567f, - 2.382f, 1.407f, 0.368f, 0.934f, 0.967f, 0.913f, 2.420f, 1.972f, 3.226f, 2.438f, - 3.179f, 1.952f, 3.025f, 4.242f, 6.956f, 6.914f, 7.520f, 9.266f, 12.831f, 13.243f, - 13.606f -},{ --29.534f,-30.395f,-31.365f,-32.990f,-35.455f,-36.586f,-37.055f,-39.441f,-43.718f,-49.293f, --50.747f,-53.104f,-56.042f,-56.766f,-57.479f,-58.163f,-58.088f,-57.464f,-56.676f,-56.626f, --56.166f,-54.280f,-52.729f,-48.704f,-47.382f,-44.984f,-41.520f,-38.397f,-34.537f,-31.317f, --29.148f,-27.293f,-26.181f,-25.052f,-23.811f,-22.421f,-21.053f,-19.879f,-18.837f,-17.904f, --16.827f,-16.147f,-14.954f,-14.126f,-12.627f,-11.113f, -9.269f, -7.501f, -5.929f, -3.211f, - -0.672f, 1.823f, 4.141f, 6.553f, 9.137f, 11.270f, 17.846f, 25.087f, 29.164f, 32.950f, - 35.543f, 37.332f, 40.406f, 43.171f, 45.007f, 46.761f, 48.667f, 50.934f, 53.755f, 56.034f, - 57.519f, 59.017f, 59.729f, 62.952f, 63.127f, 61.397f, 62.969f, 64.227f, 65.824f, 73.960f, - 74.346f, 77.115f, 68.732f, 69.737f, 60.484f, 74.007f, 74.172f, 71.220f, 66.444f, 60.487f, - 59.258f, 57.633f, 55.761f, 54.288f, 53.320f, 53.061f, 53.088f, 55.287f, 52.482f, 51.185f, - 43.767f, 41.915f, 41.395f, 40.626f, 39.626f, 40.090f, 41.066f, 41.043f, 37.612f, 36.628f, - 35.701f, 32.784f, 32.218f, 29.256f, 27.976f, 25.891f, 24.300f, 22.249f, 18.360f, 17.353f, - 15.546f, 14.256f, 13.163f, 12.752f, 11.120f, 9.939f, 10.088f, 9.817f, 10.165f, 11.420f, - 12.275f, 13.696f, 15.053f, 14.407f, 8.598f, -3.962f, 17.184f, 24.712f, 21.171f, 21.001f, - 21.200f, 20.374f, 20.151f, 19.769f, 19.685f, 19.823f, 18.395f, 16.526f, 16.309f, 17.339f, - 16.828f, 16.014f, 14.389f, 11.642f, 9.552f, 7.702f, 6.608f, 5.742f, 4.745f, 3.319f, - 2.318f, 1.119f, 0.739f, 1.206f, 1.298f, 1.207f, 2.447f, 2.172f, 2.952f, 2.565f, - 2.912f, 1.887f, 2.863f, 4.331f, 6.853f, 6.815f, 7.394f, 8.944f, 12.533f, 13.228f, - 13.606f -},{ --29.534f,-30.394f,-31.382f,-32.974f,-35.610f,-36.832f,-36.571f,-38.774f,-43.372f,-49.722f, --50.930f,-53.064f,-55.638f,-56.178f,-57.066f,-58.194f,-58.179f,-57.740f,-57.156f,-57.164f, --56.660f,-54.170f,-52.627f,-48.987f,-48.622f,-44.251f,-41.112f,-37.632f,-34.150f,-31.512f, --29.671f,-28.442f,-26.879f,-25.342f,-23.925f,-22.469f,-20.976f,-20.232f,-18.537f,-17.736f, --16.768f,-16.152f,-14.766f,-13.501f,-11.878f,-10.654f, -8.881f, -6.904f, -4.811f, -1.846f, - 0.584f, 2.886f, 5.426f, 8.001f, 10.500f, 13.288f, 15.355f, 20.192f, 27.127f, 30.590f, - 34.641f, 37.059f, 39.827f, 42.639f, 44.581f, 46.816f, 47.857f, 50.240f, 53.183f, 55.582f, - 56.362f, 57.365f, 59.320f, 61.311f, 60.686f, 61.770f, 63.384f, 64.090f, 66.448f, 73.717f, - 73.064f, 73.608f, 70.623f, 68.387f, 57.041f, 57.793f, 65.784f, 67.300f, 63.264f, 59.829f, - 58.042f, 56.552f, 56.291f, 54.342f, 52.939f, 52.453f, 51.590f, 51.954f, 48.978f, 45.814f, - 42.294f, 41.176f, 39.775f, 39.453f, 38.428f, 38.182f, 36.715f, 36.857f, 36.275f, 35.401f, - 32.993f, 32.574f, 29.583f, 31.460f, 24.881f, 24.480f, 21.805f, 18.146f, 17.478f, 15.607f, - 13.995f, 12.976f, 12.113f, 10.497f, 8.780f, 8.229f, 8.067f, 7.842f, 8.406f, 9.140f, - 10.125f, 11.617f, 12.977f, 13.504f, 11.454f, 2.664f, 6.863f, 23.648f, 23.905f, 21.689f, - 21.627f, 21.637f, 20.960f, 20.570f, 20.067f, 19.623f, 17.846f, 16.490f, 16.223f, 16.875f, - 16.739f, 16.317f, 14.033f, 11.388f, 9.600f, 8.092f, 6.938f, 5.805f, 4.815f, 3.250f, - 2.184f, 1.140f, 1.212f, 1.332f, 1.958f, 1.454f, 2.279f, 2.366f, 2.508f, 2.745f, - 2.483f, 1.798f, 2.616f, 4.430f, 6.730f, 6.769f, 7.339f, 8.700f, 12.242f, 13.211f, - 13.606f -},{ --29.534f,-30.392f,-31.397f,-32.954f,-35.767f,-37.060f,-36.065f,-37.978f,-42.687f,-49.419f, --50.859f,-52.867f,-55.250f,-55.573f,-56.490f,-58.190f,-58.498f,-58.103f,-57.807f,-57.766f, --56.254f,-53.356f,-51.760f,-48.913f,-47.772f,-43.792f,-40.613f,-37.207f,-34.779f,-32.216f, --30.815f,-28.904f,-26.912f,-25.423f,-24.065f,-22.391f,-21.455f,-19.819f,-19.119f,-17.623f, --17.073f,-15.955f,-14.968f,-13.030f,-11.506f, -9.699f, -8.198f, -6.422f, -3.933f, -1.480f, - 1.424f, 4.182f, 6.456f, 9.118f, 11.739f, 14.455f, 17.087f, 19.427f, 22.107f, 25.284f, - 29.681f, 34.338f, 37.915f, 38.816f, 41.829f, 42.892f, 44.564f, 50.385f, 51.909f, 52.765f, - 54.242f, 56.859f, 59.387f, 61.252f, 61.415f, 62.294f, 63.552f, 64.741f, 66.671f, 71.572f, - 72.596f, 73.430f, 69.428f, 60.354f, 56.169f, 59.515f, 63.466f, 61.892f, 61.641f, 58.955f, - 58.737f, 57.493f, 56.181f, 55.420f, 53.592f, 53.648f, 52.024f, 49.894f, 47.851f, 42.841f, - 41.319f, 40.185f, 38.818f, 37.737f, 36.860f, 36.300f, 34.886f, 37.228f, 33.466f, 33.054f, - 31.367f, 28.862f, 27.028f, 25.091f, 24.308f, 21.127f, 19.027f, 16.216f, 15.066f, 13.008f, - 12.329f, 11.083f, 10.854f, 8.889f, 7.339f, 6.403f, 5.801f, 5.991f, 6.299f, 7.086f, - 8.137f, 9.727f, 11.112f, 12.341f, 12.233f, 9.904f, 3.587f, 16.063f, 24.990f, 24.642f, - 22.214f, 22.687f, 22.057f, 21.282f, 20.494f, 19.502f, 18.303f, 17.045f, 16.835f, 16.330f, - 16.598f, 16.552f, 13.956f, 12.087f, 10.032f, 8.176f, 7.260f, 5.794f, 4.856f, 3.481f, - 2.219f, 1.381f, 1.358f, 1.475f, 2.585f, 1.425f, 2.101f, 2.463f, 2.342f, 2.943f, - 2.033f, 1.740f, 2.364f, 4.473f, 6.556f, 6.741f, 7.333f, 8.537f, 11.963f, 13.194f, - 13.606f -},{ --29.534f,-30.389f,-31.408f,-32.932f,-35.912f,-37.208f,-35.579f,-37.182f,-41.772f,-48.318f, --50.631f,-52.505f,-54.785f,-55.166f,-56.252f,-58.147f,-59.067f,-58.404f,-57.478f,-57.162f, --55.623f,-53.494f,-51.325f,-48.472f,-47.110f,-43.714f,-40.504f,-37.825f,-35.076f,-32.830f, --30.599f,-28.857f,-27.569f,-25.995f,-24.467f,-23.101f,-21.539f,-19.969f,-19.148f,-17.653f, --16.905f,-15.865f,-14.903f,-12.999f,-11.024f, -9.272f, -7.395f, -5.483f, -3.265f, -0.666f, - 2.019f, 4.634f, 7.433f, 10.294f, 13.044f, 15.201f, 17.792f, 20.522f, 23.418f, 26.153f, - 29.254f, 31.154f, 35.362f, 37.144f, 39.726f, 43.125f, 44.463f, 48.001f, 50.751f, 52.141f, - 54.883f, 57.380f, 60.218f, 61.200f, 61.294f, 62.658f, 64.575f, 66.960f, 64.557f, 70.132f, - 71.217f, 71.217f, 68.921f, 63.079f, 71.228f, 63.989f, 63.228f, 63.412f, 61.503f, 59.566f, - 59.055f, 57.469f, 56.271f, 54.868f, 54.051f, 51.676f, 50.077f, 50.381f, 48.956f, 43.238f, - 41.325f, 39.119f, 37.766f, 36.131f, 34.170f, 34.603f, 36.304f, 32.430f, 32.110f, 31.105f, - 28.303f, 29.737f, 25.505f, 24.408f, 21.467f, 19.111f, 16.988f, 15.327f, 12.883f, 11.180f, - 10.753f, 10.036f, 9.101f, 7.141f, 5.401f, 5.265f, 4.649f, 4.140f, 4.480f, 5.321f, - 6.318f, 7.467f, 9.149f, 10.850f, 11.414f, 11.631f, 10.242f, 4.343f, 15.253f, 24.598f, - 23.801f, 22.672f, 23.233f, 22.708f, 21.862f, 20.932f, 19.962f, 18.131f, 16.423f, 16.399f, - 16.030f, 16.190f, 14.672f, 12.720f, 10.565f, 8.414f, 7.138f, 5.877f, 5.002f, 3.706f, - 2.331f, 1.519f, 1.249f, 1.873f, 2.883f, 1.216f, 2.076f, 2.424f, 2.599f, 3.174f, - 1.680f, 1.736f, 2.187f, 4.437f, 6.318f, 6.700f, 7.349f, 8.451f, 11.702f, 13.175f, - 13.606f -},{ --29.534f,-30.385f,-31.415f,-32.910f,-36.034f,-37.223f,-35.143f,-36.538f,-40.896f,-46.791f, --50.555f,-52.118f,-54.010f,-54.806f,-56.516f,-58.164f,-59.280f,-58.590f,-57.002f,-56.657f, --55.562f,-53.495f,-50.855f,-48.758f,-47.182f,-43.596f,-40.966f,-37.889f,-34.775f,-32.778f, --30.728f,-29.161f,-27.590f,-26.179f,-24.533f,-23.115f,-22.365f,-20.197f,-18.778f,-17.631f, --16.710f,-15.788f,-14.516f,-12.718f,-10.742f, -8.941f, -7.245f, -4.754f, -2.496f, 0.079f, - 2.774f, 5.304f, 8.266f, 12.216f, 13.809f, 16.270f, 18.723f, 24.360f, 23.688f, 28.792f, - 29.404f, 32.841f, 35.947f, 36.807f, 39.574f, 41.463f, 45.821f, 48.459f, 51.076f, 53.862f, - 55.290f, 57.501f, 59.940f, 61.477f, 61.505f, 63.263f, 66.109f, 68.383f, 67.145f, 65.433f, - 69.797f, 70.327f, 67.709f, 69.853f, 64.831f, 65.911f, 64.504f, 62.746f, 61.083f, 59.227f, - 58.609f, 56.769f, 54.858f, 54.431f, 52.231f, 51.181f, 49.422f, 48.415f, 45.549f, 42.550f, - 40.061f, 37.306f, 36.089f, 33.783f, 36.494f, 30.606f, 30.915f, 31.134f, 30.479f, 28.554f, - 27.953f, 25.702f, 23.242f, 22.647f, 19.893f, 16.735f, 14.395f, 13.285f, 11.049f, 9.716f, - 8.923f, 8.763f, 7.561f, 5.713f, 4.199f, 4.093f, 3.303f, 2.369f, 2.623f, 3.684f, - 4.669f, 5.614f, 6.704f, 8.674f, 9.848f, 11.402f, 12.119f, 9.694f, 2.410f, 12.253f, - 23.850f, 24.505f, 23.835f, 23.454f, 22.146f, 21.212f, 20.817f, 19.119f, 17.085f, 16.167f, - 14.926f, 14.823f, 14.479f, 12.798f, 11.023f, 8.861f, 6.936f, 6.019f, 5.102f, 3.804f, - 2.421f, 1.647f, 1.259f, 2.296f, 2.829f, 1.092f, 2.129f, 2.365f, 3.036f, 3.433f, - 1.450f, 1.756f, 2.127f, 4.341f, 6.029f, 6.621f, 7.365f, 8.435f, 11.464f, 13.156f, - 13.606f -},{ --29.534f,-30.380f,-31.418f,-32.891f,-36.120f,-37.079f,-34.765f,-36.177f,-40.384f,-45.493f, --50.965f,-52.060f,-52.914f,-54.095f,-56.685f,-58.421f,-58.708f,-58.441f,-57.093f,-56.969f, --55.759f,-53.147f,-50.545f,-49.749f,-46.817f,-43.892f,-41.256f,-37.409f,-34.983f,-32.927f, --31.111f,-30.001f,-32.141f,-30.436f,-25.220f,-23.176f,-21.904f,-20.177f,-18.158f,-17.521f, --16.514f,-15.482f,-13.859f,-12.131f,-10.483f, -8.318f, -6.403f, -4.435f, -1.993f, 0.827f, - 3.262f, 6.108f, 8.715f, 11.343f, 14.024f, 16.834f, 19.161f, 21.978f, 24.825f, 27.699f, - 29.943f, 32.126f, 34.854f, 37.152f, 40.198f, 43.441f, 46.622f, 48.959f, 51.893f, 53.633f, - 54.965f, 57.306f, 58.911f, 60.275f, 62.753f, 63.161f, 64.713f, 67.655f, 68.195f, 69.023f, - 67.369f, 68.518f, 69.513f, 67.249f, 62.507f, 65.782f, 63.718f, 61.044f, 59.583f, 57.938f, - 56.400f, 54.978f, 54.078f, 52.971f, 52.570f, 50.659f, 50.214f, 45.774f, 44.293f, 41.693f, - 39.242f, 38.501f, 34.486f, 34.831f, 33.810f, 30.169f, 29.643f, 29.924f, 28.384f, 26.191f, - 26.807f, 25.238f, 21.873f, 20.575f, 19.196f, 15.106f, 12.612f, 11.141f, 9.342f, 8.517f, - 7.535f, 7.469f, 6.785f, 5.133f, 3.661f, 2.623f, 2.109f, 1.026f, 0.842f, 1.993f, - 2.876f, 3.884f, 4.802f, 6.917f, 8.227f, 9.843f, 12.158f, 11.979f, 6.704f, 1.457f, - 15.605f, 25.220f, 24.414f, 24.091f, 24.297f, 24.025f, 22.091f, 20.424f, 18.566f, 15.889f, - 14.373f, 13.774f, 13.624f, 13.186f, 11.486f, 9.082f, 7.419f, 6.375f, 5.232f, 3.914f, - 2.616f, 1.817f, 1.446f, 2.187f, 2.422f, 1.164f, 2.135f, 2.493f, 3.325f, 3.632f, - 1.282f, 1.741f, 2.178f, 4.222f, 5.718f, 6.496f, 7.363f, 8.479f, 11.250f, 13.136f, - 13.606f -},{ --29.534f,-30.373f,-31.415f,-32.875f,-36.164f,-36.784f,-34.436f,-36.167f,-40.465f,-45.019f, --51.967f,-52.719f,-51.969f,-53.038f,-56.070f,-58.598f,-57.741f,-57.610f,-56.191f,-55.838f, --55.464f,-54.101f,-51.482f,-50.460f,-46.856f,-44.238f,-41.019f,-37.770f,-35.434f,-33.448f, --31.242f,-33.940f,-31.571f,-29.604f,-26.184f,-21.567f,-21.848f,-20.032f,-18.185f,-16.673f, --15.790f,-14.842f,-13.539f,-11.542f,-10.114f, -8.189f, -5.674f, -3.962f, -1.267f, 1.049f, - 3.825f, 6.553f, 9.158f, 11.876f, 14.599f, 17.283f, 19.891f, 23.538f, 25.827f, 28.693f, - 32.341f, 33.831f, 36.455f, 38.366f, 40.903f, 44.192f, 46.047f, 48.139f, 51.271f, 54.063f, - 55.727f, 56.055f, 57.219f, 60.149f, 62.188f, 63.914f, 64.234f, 65.787f, 66.912f, 67.994f, - 65.925f, 66.950f, 65.470f, 62.123f, 60.192f, 62.878f, 61.193f, 58.578f, 56.886f, 55.530f, - 54.109f, 53.271f, 51.907f, 50.270f, 49.404f, 49.064f, 48.374f, 49.059f, 42.336f, 39.605f, - 37.929f, 35.571f, 33.493f, 32.375f, 31.406f, 29.456f, 29.188f, 28.197f, 26.316f, 25.330f, - 23.815f, 23.286f, 19.622f, 19.070f, 16.134f, 13.535f, 11.440f, 9.553f, 8.075f, 7.217f, - 5.975f, 5.594f, 6.042f, 4.858f, 2.870f, 1.015f, 1.698f, 0.996f, -0.436f, 0.182f, - 1.323f, 2.376f, 3.366f, 4.715f, 6.261f, 7.985f, 10.482f, 11.827f, 10.261f, 3.723f, - 5.351f, 20.060f, 23.858f, 24.217f, 25.086f, 24.668f, 23.983f, 20.896f, 18.698f, 15.969f, - 14.069f, 12.993f, 12.953f, 13.373f, 11.907f, 9.289f, 7.793f, 6.875f, 5.463f, 4.093f, - 2.928f, 1.890f, 1.701f, 1.559f, 1.696f, 1.338f, 2.191f, 2.846f, 3.380f, 3.631f, - 1.094f, 1.653f, 2.304f, 4.114f, 5.422f, 6.330f, 7.336f, 8.571f, 11.065f, 13.115f, - 13.606f -},{ --29.534f,-30.366f,-31.407f,-32.865f,-36.158f,-36.386f,-34.140f,-36.494f,-41.163f,-45.584f, --53.293f,-54.157f,-51.843f,-52.315f,-54.920f,-57.818f,-56.789f,-56.186f,-54.056f,-53.924f, --55.273f,-55.200f,-52.803f,-50.372f,-47.308f,-44.329f,-41.057f,-38.355f,-35.865f,-34.097f, --33.048f,-33.619f,-28.302f,-27.000f,-26.693f,-23.238f,-19.480f,-19.548f,-17.806f,-15.911f, --14.906f,-13.896f,-12.802f,-10.996f, -9.314f, -7.628f, -5.834f, -3.296f, -0.569f, 1.610f, - 4.112f, 6.774f, 9.144f, 11.959f, 14.742f, 17.192f, 20.128f, 23.780f, 28.395f, 30.628f, - 32.798f, 35.432f, 36.490f, 40.566f, 41.426f, 44.493f, 46.941f, 49.883f, 53.501f, 57.243f, - 57.629f, 58.414f, 59.120f, 59.546f, 61.939f, 63.210f, 64.470f, 65.636f, 63.435f, 64.705f, - 62.998f, 63.066f, 63.346f, 58.720f, 60.049f, 61.145f, 58.848f, 56.159f, 54.337f, 53.078f, - 51.697f, 50.421f, 50.306f, 49.486f, 48.206f, 46.597f, 44.950f, 43.456f, 41.055f, 37.808f, - 36.027f, 34.379f, 32.927f, 31.304f, 29.887f, 29.449f, 27.642f, 26.991f, 25.122f, 22.677f, - 20.932f, 19.436f, 19.187f, 15.306f, 15.933f, 12.511f, 10.190f, 8.235f, 6.214f, 4.582f, - 4.257f, 4.091f, 3.908f, 2.947f, 1.699f, -0.529f, 0.221f, -0.357f, -1.756f, -1.279f, - -0.403f, 0.502f, 1.610f, 3.090f, 4.397f, 6.394f, 8.696f, 10.480f, 10.403f, 7.995f, - 2.317f, 5.983f, 12.117f, 20.759f, 23.575f, 22.948f, 22.631f, 20.763f, 18.028f, 16.520f, - 13.743f, 13.193f, 12.618f, 13.050f, 11.940f, 9.572f, 8.089f, 7.083f, 5.681f, 4.327f, - 3.153f, 1.983f, 2.012f, 1.166f, 0.996f, 1.493f, 2.476f, 3.189f, 3.348f, 3.340f, - 0.862f, 1.506f, 2.460f, 4.035f, 5.176f, 6.141f, 7.284f, 8.698f, 10.910f, 13.095f, - 13.606f -},{ --29.534f,-30.357f,-31.393f,-32.861f,-36.103f,-35.963f,-33.875f,-37.066f,-42.293f,-46.917f, --54.414f,-55.885f,-52.740f,-52.611f,-54.367f,-55.835f,-55.334f,-54.700f,-53.223f,-54.730f, --56.242f,-55.009f,-53.372f,-50.622f,-47.588f,-44.371f,-41.459f,-38.904f,-36.601f,-35.019f, --34.958f,-33.336f,-30.922f,-29.576f,-27.558f,-26.434f,-22.697f,-17.440f,-15.322f,-15.293f, --14.001f,-12.450f,-11.412f,-10.695f, -8.279f, -6.651f, -5.067f, -2.884f, -0.101f, 2.543f, - 4.853f, 7.316f, 10.206f, 12.625f, 15.745f, 19.417f, 23.300f, 26.629f, 29.197f, 31.868f, - 33.445f, 35.484f, 37.620f, 40.506f, 43.287f, 47.970f, 47.780f, 50.503f, 52.215f, 53.925f, - 56.661f, 57.835f, 58.489f, 59.417f, 61.177f, 63.614f, 64.723f, 63.638f, 66.799f, 64.203f, - 63.230f, 62.308f, 61.454f, 56.387f, 59.944f, 59.360f, 56.229f, 53.778f, 51.263f, 50.288f, - 49.257f, 48.401f, 47.325f, 47.343f, 46.944f, 44.746f, 42.769f, 41.215f, 38.556f, 35.357f, - 34.926f, 33.622f, 31.551f, 29.980f, 28.835f, 28.586f, 28.153f, 25.818f, 24.110f, 22.119f, - 21.635f, 19.278f, 16.527f, 14.386f, 12.652f, 10.128f, 8.323f, 6.872f, 4.894f, 3.896f, - 3.289f, 2.775f, 1.337f, 0.332f, -0.140f, -1.611f, -2.074f, -2.303f, -3.215f, -2.848f, - -1.835f, -0.931f, -0.109f, 1.453f, 3.316f, 4.658f, 6.945f, 8.835f, 9.389f, 9.176f, - 6.275f, 0.739f, 1.903f, 16.923f, 21.529f, 22.356f, 20.965f, 20.258f, 18.272f, 16.797f, - 14.436f, 13.652f, 12.705f, 12.651f, 12.208f, 9.546f, 8.730f, 7.138f, 5.855f, 4.505f, - 3.246f, 2.242f, 2.148f, 1.388f, 0.735f, 1.549f, 2.886f, 3.279f, 3.367f, 2.810f, - 0.634f, 1.369f, 2.615f, 3.979f, 4.997f, 5.956f, 7.214f, 8.846f, 10.784f, 13.075f, - 13.606f -},{ --29.534f,-30.348f,-31.372f,-32.862f,-35.999f,-35.611f,-33.663f,-37.750f,-43.548f,-48.430f, --54.856f,-57.079f,-54.074f,-53.765f,-55.172f,-53.935f,-52.712f,-53.514f,-54.678f,-57.400f, --57.343f,-54.911f,-53.813f,-51.386f,-47.612f,-44.408f,-42.130f,-39.621f,-37.277f,-35.877f, --35.873f,-34.481f,-31.817f,-29.475f,-28.402f,-26.157f,-22.138f,-18.966f,-15.695f,-13.716f, --13.060f,-11.663f,-10.345f, -8.849f, -7.556f, -5.851f, -4.131f, -1.543f, 0.857f, 3.649f, - 5.872f, 8.242f, 11.018f, 14.008f, 17.856f, 20.969f, 24.326f, 27.644f, 30.318f, 32.741f, - 34.959f, 37.011f, 39.336f, 42.083f, 44.844f, 47.006f, 49.222f, 51.515f, 53.604f, 57.093f, - 57.682f, 56.989f, 57.862f, 58.446f, 60.561f, 61.765f, 64.493f, 65.238f, 64.262f, 58.105f, - 62.729f, 61.538f, 56.951f, 58.723f, 58.325f, 56.819f, 54.136f, 51.565f, 49.217f, 47.916f, - 47.442f, 46.375f, 45.855f, 45.727f, 44.656f, 42.734f, 41.428f, 38.735f, 37.454f, 34.858f, - 35.562f, 33.149f, 30.117f, 29.503f, 29.816f, 27.750f, 24.575f, 24.291f, 22.413f, 21.019f, - 20.914f, 18.007f, 16.032f, 13.382f, 12.250f, 8.931f, 6.743f, 4.913f, 3.906f, 3.450f, - 1.641f, 0.527f, -0.585f, -1.672f, -2.072f, -2.716f, -3.837f, -3.629f, -3.589f, -3.759f, - -3.189f, -2.615f, -1.415f, 0.047f, 1.516f, 3.106f, 4.887f, 6.896f, 8.226f, 8.798f, - 8.420f, 4.680f, -1.056f, 5.061f, 14.453f, 20.307f, 19.388f, 19.382f, 18.755f, 17.208f, - 15.493f, 13.891f, 13.234f, 12.295f, 12.205f, 9.655f, 9.330f, 7.429f, 5.947f, 4.749f, - 3.453f, 2.584f, 1.939f, 1.665f, 0.846f, 1.482f, 3.084f, 3.189f, 3.404f, 2.227f, - 0.483f, 1.313f, 2.758f, 3.931f, 4.891f, 5.803f, 7.142f, 9.004f, 10.688f, 13.055f, - 13.606f -},{ --29.534f,-30.338f,-31.345f,-32.868f,-35.851f,-35.419f,-33.558f,-38.416f,-44.642f,-49.552f, --54.486f,-57.144f,-54.922f,-54.909f,-56.810f,-53.752f,-49.664f,-52.490f,-56.444f,-58.865f, --57.389f,-55.865f,-54.629f,-51.030f,-47.503f,-44.965f,-42.667f,-40.342f,-37.988f,-36.849f, --36.922f,-35.678f,-33.907f,-31.133f,-29.485f,-26.995f,-22.753f,-18.953f,-17.192f,-11.941f, --12.770f,-10.715f, -8.857f, -7.163f, -6.503f, -4.355f, -2.927f, -0.396f, 2.047f, 4.655f, - 7.285f, 9.434f, 12.266f, 15.687f, 18.696f, 22.439f, 25.604f, 28.518f, 30.912f, 33.181f, - 35.997f, 38.445f, 40.636f, 43.424f, 46.106f, 48.275f, 50.605f, 52.028f, 53.958f, 56.855f, - 55.889f, 57.415f, 58.567f, 60.000f, 60.433f, 61.119f, 63.629f, 63.806f, 61.736f, 62.149f, - 58.420f, 54.496f, 58.690f, 58.330f, 55.823f, 54.396f, 51.743f, 49.651f, 47.911f, 45.590f, - 44.768f, 44.695f, 44.257f, 42.932f, 41.442f, 40.009f, 38.333f, 37.218f, 35.266f, 33.924f, - 33.095f, 31.965f, 30.952f, 28.548f, 26.921f, 25.136f, 23.705f, 22.765f, 21.452f, 20.185f, - 19.446f, 15.989f, 15.458f, 11.841f, 10.729f, 8.628f, 6.273f, 4.035f, 3.153f, 2.258f, - -0.194f, -1.359f, -2.533f, -4.125f, -4.252f, -4.747f, -4.997f, -4.707f, -4.006f, -4.622f, - -4.480f, -3.702f, -2.788f, -1.774f, -0.331f, 1.570f, 3.087f, 4.641f, 6.461f, 7.830f, - 8.490f, 7.407f, 2.916f, -2.507f, 4.631f, 14.103f, 14.594f, 17.662f, 16.830f, 16.276f, - 14.387f, 13.644f, 12.968f, 11.797f, 11.853f, 10.450f, 9.518f, 7.553f, 6.093f, 5.309f, - 3.848f, 3.048f, 1.893f, 1.521f, 0.941f, 1.410f, 2.932f, 3.213f, 3.355f, 1.796f, - 0.438f, 1.374f, 2.890f, 3.875f, 4.846f, 5.709f, 7.085f, 9.161f, 10.621f, 13.036f, - 13.606f -},{ --29.534f,-30.326f,-31.310f,-32.876f,-35.664f,-35.449f,-33.638f,-38.980f,-45.421f,-50.013f, --53.574f,-56.148f,-54.815f,-55.423f,-58.057f,-55.297f,-48.159f,-51.383f,-56.714f,-59.410f, --57.280f,-57.150f,-55.027f,-50.273f,-47.924f,-45.726f,-43.199f,-41.028f,-38.736f,-38.053f, --37.988f,-36.857f,-34.959f,-32.781f,-30.848f,-27.200f,-23.191f,-20.179f,-16.828f,-12.132f, --10.967f,-10.286f, -8.279f, -6.688f, -4.771f, -3.466f, -1.477f, 0.639f, 3.421f, 5.616f, - 8.382f, 11.007f, 13.432f, 17.165f, 20.380f, 24.124f, 27.171f, 29.706f, 31.506f, 33.864f, - 36.334f, 38.779f, 41.449f, 44.303f, 46.676f, 48.548f, 50.047f, 52.201f, 53.943f, 54.270f, - 55.718f, 59.003f, 61.259f, 58.712f, 60.077f, 62.237f, 62.676f, 62.654f, 60.932f, 55.653f, - 59.676f, 59.604f, 58.015f, 55.364f, 54.283f, 51.615f, 49.668f, 47.709f, 45.912f, 44.109f, - 43.543f, 43.089f, 42.095f, 41.017f, 40.576f, 40.224f, 36.455f, 35.001f, 32.791f, 32.379f, - 32.254f, 28.999f, 27.742f, 27.906f, 25.901f, 25.695f, 25.701f, 23.676f, 20.953f, 19.013f, - 18.376f, 16.409f, 12.500f, 10.593f, 8.880f, 7.050f, 4.824f, 2.531f, 1.442f, 0.561f, - -1.407f, -2.854f, -4.313f, -5.996f, -6.478f, -6.479f, -6.247f, -5.678f, -5.200f, -5.722f, - -5.637f, -5.093f, -4.291f, -3.243f, -1.452f, -0.288f, 1.149f, 2.584f, 4.508f, 6.818f, - 8.125f, 8.014f, 6.642f, 1.175f, -0.653f, 0.673f, 10.701f, 14.537f, 15.222f, 14.494f, - 13.070f, 12.168f, 11.723f, 11.470f, 11.674f, 11.004f, 9.522f, 7.534f, 6.518f, 5.846f, - 4.146f, 3.534f, 2.396f, 1.229f, 0.919f, 1.536f, 2.666f, 3.428f, 3.223f, 1.595f, - 0.459f, 1.529f, 3.013f, 3.810f, 4.846f, 5.691f, 7.059f, 9.309f, 10.580f, 13.018f, - 13.606f -},{ --29.534f,-30.314f,-31.268f,-32.882f,-35.447f,-35.719f,-33.982f,-39.424f,-45.896f,-49.921f, --52.575f,-54.725f,-54.074f,-55.441f,-58.299f,-56.984f,-49.490f,-50.733f,-55.586f,-59.595f, --57.465f,-58.005f,-54.666f,-50.425f,-48.538f,-46.289f,-44.073f,-41.701f,-39.373f,-39.072f, --38.790f,-37.882f,-35.976f,-33.981f,-31.979f,-27.624f,-23.737f,-20.792f,-17.826f,-13.829f, - -9.566f,-10.999f,-10.592f, -7.010f, -4.564f, -2.516f, -0.871f, 2.018f, 4.372f, 7.108f, - 10.101f, 13.024f, 16.701f, 19.252f, 22.157f, 24.951f, 27.255f, 29.359f, 31.049f, 33.534f, - 35.717f, 38.295f, 41.172f, 44.003f, 46.268f, 47.891f, 49.735f, 51.825f, 52.540f, 54.235f, - 60.094f, 59.103f, 59.724f, 59.826f, 58.613f, 63.012f, 61.564f, 61.938f, 59.761f, 55.246f, - 59.820f, 58.921f, 56.006f, 53.166f, 51.739f, 49.576f, 47.803f, 44.768f, 43.996f, 42.369f, - 42.194f, 41.613f, 40.413f, 39.540f, 37.983f, 36.058f, 34.913f, 33.076f, 31.279f, 30.330f, - 29.821f, 29.109f, 27.292f, 25.940f, 27.293f, 23.656f, 22.724f, 21.474f, 20.105f, 17.275f, - 15.180f, 13.812f, 11.391f, 8.980f, 6.903f, 4.854f, 2.745f, 1.471f, 0.086f, -1.058f, - -2.523f, -3.886f, -5.631f, -7.312f, -7.896f, -8.195f, -7.340f, -7.332f, -7.305f, -7.373f, - -6.774f, -6.154f, -5.474f, -4.561f, -2.951f, -1.891f, -0.617f, 1.141f, 3.239f, 5.244f, - 6.824f, 7.965f, 8.441f, 8.441f, 3.757f, -0.835f, 6.602f, 10.842f, 12.567f, 14.117f, - 13.201f, 11.329f, 11.001f, 11.512f, 11.224f, 10.875f, 9.785f, 7.870f, 7.067f, 6.110f, - 4.261f, 3.553f, 2.826f, 1.103f, 0.981f, 1.841f, 2.560f, 3.572f, 3.157f, 1.513f, - 0.496f, 1.723f, 3.123f, 3.751f, 4.873f, 5.753f, 7.078f, 9.442f, 10.564f, 13.000f, - 13.606f -},{ --29.534f,-30.302f,-31.219f,-32.884f,-35.206f,-36.190f,-34.645f,-39.790f,-46.182f,-49.609f, --51.834f,-53.557f,-53.389f,-55.379f,-57.897f,-57.622f,-52.935f,-51.899f,-54.655f,-58.693f, --57.451f,-58.172f,-54.550f,-51.029f,-48.875f,-46.864f,-44.643f,-42.441f,-40.158f,-39.703f, --40.129f,-38.905f,-36.693f,-34.898f,-31.598f,-26.885f,-22.069f,-20.391f,-17.854f,-14.101f, --12.317f, -7.869f, -9.587f, -7.730f, -5.307f, -2.834f, 0.164f, 2.571f, 5.651f, 8.193f, - 11.751f, 15.550f, 18.448f, 21.176f, 24.356f, 26.120f, 27.202f, 30.380f, 31.642f, 33.533f, - 35.984f, 38.093f, 40.242f, 42.886f, 45.836f, 47.574f, 50.072f, 52.102f, 52.615f, 62.224f, - 58.949f, 60.794f, 59.835f, 60.199f, 61.077f, 59.022f, 61.718f, 59.468f, 55.787f, 52.449f, - 58.238f, 56.327f, 53.530f, 51.794f, 49.155f, 47.433f, 45.390f, 43.547f, 42.132f, 41.082f, - 40.622f, 40.267f, 39.129f, 37.703f, 36.019f, 34.329f, 32.406f, 31.521f, 29.834f, 29.078f, - 27.518f, 27.198f, 29.651f, 25.760f, 23.665f, 22.636f, 21.505f, 20.342f, 18.618f, 18.989f, - 14.335f, 11.993f, 10.332f, 7.906f, 4.888f, 2.838f, 1.787f, 0.111f, -0.946f, -2.591f, - -3.688f, -5.058f, -6.646f, -8.173f, -8.498f, -8.950f, -8.417f, -8.423f, -8.745f, -8.512f, - -8.340f, -7.031f, -6.083f, -5.326f, -4.145f, -3.432f, -1.520f, 0.065f, 1.918f, 4.005f, - 5.469f, 7.621f, 8.843f, 9.603f, 5.686f, 0.615f, 8.388f, 10.482f, 10.274f, 11.994f, - 12.543f, 11.887f, 11.038f, 11.509f, 11.129f, 10.821f, 9.818f, 8.155f, 7.427f, 6.364f, - 4.262f, 3.118f, 2.646f, 1.089f, 1.186f, 2.032f, 2.608f, 3.446f, 3.291f, 1.339f, - 0.547f, 1.907f, 3.210f, 3.719f, 4.916f, 5.889f, 7.150f, 9.557f, 10.568f, 12.983f, - 13.606f -},{ --29.534f,-30.289f,-31.161f,-32.877f,-34.947f,-36.773f,-35.623f,-40.155f,-46.410f,-49.397f, --51.417f,-52.918f,-53.178f,-55.328f,-57.444f,-57.538f,-56.413f,-55.077f,-55.237f,-57.811f, --57.780f,-57.935f,-54.862f,-52.025f,-49.396f,-47.483f,-45.338f,-42.941f,-41.097f,-41.055f, --41.208f,-39.762f,-37.955f,-35.595f,-30.845f,-25.558f,-22.329f,-18.562f,-15.449f,-11.420f, - -9.740f, -8.838f, -6.133f, -3.660f, -2.462f, -5.782f, 1.381f, 4.347f, 7.329f, 9.398f, - 12.241f, 15.535f, 18.822f, 22.331f, 25.130f, 26.006f, 28.362f, 29.897f, 32.498f, 34.622f, - 37.463f, 39.715f, 41.708f, 45.006f, 46.915f, 49.208f, 51.495f, 53.469f, 59.328f, 60.190f, - 61.083f, 59.957f, 60.211f, 60.131f, 59.757f, 54.301f, 52.161f, 47.984f, 46.261f, 54.335f, - 58.336f, 55.675f, 51.459f, 50.040f, 47.316f, 45.297f, 43.624f, 42.011f, 40.630f, 39.454f, - 39.076f, 38.658f, 37.765f, 35.652f, 34.247f, 32.768f, 30.906f, 30.243f, 28.578f, 30.132f, - 28.204f, 26.926f, 25.948f, 24.336f, 24.053f, 22.468f, 20.312f, 19.053f, 17.584f, 15.160f, - 13.473f, 11.589f, 7.981f, 6.522f, 3.868f, 2.096f, 0.667f, -0.696f, -2.063f, -3.436f, - -5.182f, -6.681f, -7.857f, -8.795f, -9.104f, -9.506f, -9.391f, -8.739f, -9.421f, -9.205f, - -8.879f, -7.954f, -6.974f, -5.622f, -4.763f, -3.964f, -2.527f, -0.864f, 0.710f, 2.333f, - 3.900f, 6.234f, 8.846f, 8.523f, 2.494f, 8.276f, 9.380f, 10.218f, 9.621f, 9.568f, - 11.674f, 11.637f, 10.664f, 10.998f, 10.961f, 10.646f, 9.597f, 8.378f, 7.656f, 6.438f, - 4.018f, 2.940f, 2.348f, 1.217f, 1.398f, 1.980f, 2.648f, 3.260f, 3.568f, 0.949f, - 0.677f, 2.062f, 3.264f, 3.734f, 4.971f, 6.081f, 7.274f, 9.652f, 10.591f, 12.968f, - 13.606f -},{ --29.534f,-30.275f,-31.096f,-32.859f,-34.678f,-37.347f,-36.850f,-40.592f,-46.652f,-49.413f, --51.194f,-52.652f,-53.371f,-55.220f,-57.162f,-57.568f,-58.299f,-57.971f,-56.051f,-57.866f, --58.657f,-57.797f,-54.860f,-52.849f,-50.052f,-48.314f,-46.009f,-43.251f,-41.924f,-43.409f, --41.718f,-40.614f,-38.641f,-36.450f,-31.937f,-25.419f,-22.110f,-19.249f,-15.914f,-11.578f, - -8.693f, -6.222f, -3.223f, -1.501f, 3.601f, -0.690f, -0.350f, 5.140f, 8.729f, 12.540f, - 15.323f, 18.243f, 21.183f, 24.059f, 25.270f, 27.108f, 30.075f, 33.921f, 36.343f, 36.692f, - 39.271f, 41.470f, 43.547f, 46.382f, 49.156f, 50.686f, 53.586f, 56.917f, 60.329f, 60.235f, - 58.107f, 57.806f, 57.478f, 57.879f, 62.155f, 62.143f, 56.759f, 58.977f, 58.243f, 57.887f, - 57.415f, 53.817f, 50.330f, 48.220f, 45.332f, 43.470f, 42.600f, 40.416f, 39.597f, 38.870f, - 37.882f, 37.030f, 35.819f, 33.957f, 32.710f, 30.295f, 29.355f, 28.416f, 27.769f, 29.386f, - 25.860f, 27.983f, 25.515f, 21.597f, 23.954f, 18.989f, 19.596f, 18.202f, 17.535f, 16.589f, - 12.805f, 10.417f, 7.354f, 5.077f, 2.834f, 1.081f, -0.444f, -1.886f, -2.920f, -4.578f, - -6.222f, -7.481f, -8.323f, -8.972f, -9.560f, -9.650f, -9.910f, -9.455f, -9.749f, -9.836f, - -9.763f, -8.942f, -7.773f, -6.534f, -5.315f, -4.877f, -4.096f, -3.166f, -1.907f, -0.522f, - 3.185f, 6.347f, 8.034f, 5.468f, 0.168f, 13.546f, 8.330f, 9.223f, 8.766f, 7.460f, - 10.584f, 11.549f, 10.132f, 10.102f, 10.484f, 10.163f, 9.664f, 8.670f, 7.968f, 6.218f, - 3.790f, 3.174f, 2.381f, 1.530f, 1.520f, 1.966f, 2.636f, 3.379f, 3.762f, 0.441f, - 0.954f, 2.200f, 3.285f, 3.798f, 5.037f, 6.305f, 7.446f, 9.728f, 10.629f, 12.953f, - 13.606f -},{ --29.534f,-30.261f,-31.024f,-32.824f,-34.405f,-37.779f,-38.192f,-41.141f,-46.903f,-49.578f, --51.024f,-52.511f,-53.689f,-55.277f,-57.119f,-57.878f,-58.582f,-58.375f,-55.012f,-57.558f, --59.261f,-57.862f,-54.940f,-53.013f,-50.830f,-48.975f,-46.552f,-43.839f,-43.040f,-44.758f, --42.698f,-41.286f,-39.445f,-37.195f,-33.050f,-26.317f,-22.317f,-18.978f,-15.558f,-11.842f, - -9.616f, -7.446f, -3.853f, 1.088f, 3.523f, 4.173f, 1.986f, 7.276f, 10.722f, 14.383f, - 17.607f, 21.042f, 23.866f, 25.059f, 26.641f, 28.217f, 31.745f, 33.859f, 36.705f, 39.484f, - 42.462f, 46.101f, 45.710f, 47.989f, 50.313f, 52.721f, 55.335f, 58.061f, 58.150f, 57.145f, - 51.310f, 53.331f, 57.668f, 61.996f, 64.424f, 63.563f, 64.605f, 62.156f, 60.770f, 58.639f, - 55.647f, 52.320f, 48.623f, 45.988f, 44.057f, 42.116f, 40.839f, 39.489f, 38.205f, 37.101f, - 36.155f, 35.176f, 33.890f, 31.900f, 31.159f, 29.718f, 29.171f, 26.500f, 28.429f, 28.295f, - 24.619f, 25.515f, 22.997f, 21.254f, 21.793f, 17.615f, 18.140f, 16.592f, 15.923f, 14.011f, - 11.368f, 9.253f, 6.534f, 4.070f, 2.493f, 0.293f, -1.510f, -2.877f, -4.042f, -5.352f, - -6.449f, -7.658f, -8.646f, -8.990f, -9.481f, -9.626f, -9.760f, -9.897f,-10.644f,-10.897f, --11.119f,-10.505f, -9.257f, -8.017f, -7.532f, -7.250f, -7.389f, -6.641f, -3.910f, 0.596f, - 4.164f, 5.582f, 5.861f, 0.944f, 2.095f, 8.902f, 8.103f, 7.725f, 7.294f, 6.147f, - 8.665f, 11.278f, 10.334f, 9.753f, 9.954f, 9.517f, 9.486f, 8.573f, 8.083f, 5.990f, - 4.045f, 3.313f, 2.485f, 1.706f, 1.524f, 2.237f, 2.632f, 3.781f, 3.684f, 0.073f, - 1.355f, 2.334f, 3.282f, 3.897f, 5.113f, 6.536f, 7.653f, 9.788f, 10.678f, 12.940f, - 13.606f -},{ --29.534f,-30.246f,-30.944f,-32.773f,-34.135f,-37.958f,-39.483f,-41.788f,-47.117f,-49.729f, --50.887f,-52.428f,-53.962f,-55.820f,-57.463f,-58.199f,-58.377f,-57.246f,-53.341f,-56.842f, --59.321f,-57.820f,-55.334f,-53.383f,-51.653f,-49.295f,-47.156f,-44.423f,-45.112f,-45.016f, --43.621f,-42.339f,-40.557f,-37.807f,-34.061f,-28.052f,-22.970f,-18.315f,-15.201f,-12.135f, --10.209f, -7.990f, -4.642f, 0.876f, 5.219f, 5.204f, 5.106f, 8.345f, 11.751f, 15.439f, - 18.551f, 22.406f, 25.078f, 25.707f, 27.879f, 30.777f, 32.329f, 34.590f, 36.971f, 40.135f, - 42.679f, 44.558f, 46.842f, 49.221f, 51.418f, 53.586f, 55.170f, 56.550f, 54.393f, 49.570f, - 54.715f, 63.933f, 65.307f, 66.438f, 65.827f, 64.969f, 64.022f, 62.324f, 60.467f, 57.482f, - 53.949f, 49.307f, 46.766f, 44.101f, 42.292f, 40.909f, 39.682f, 38.492f, 36.821f, 35.205f, - 33.833f, 32.923f, 31.698f, 30.387f, 29.989f, 28.561f, 28.208f, 27.184f, 26.582f, 24.590f, - 26.444f, 22.543f, 23.307f, 20.289f, 18.921f, 19.183f, 16.590f, 15.511f, 14.187f, 12.076f, - 9.885f, 8.467f, 6.009f, 3.193f, 1.167f, -0.613f, -2.721f, -4.042f, -4.591f, -5.973f, - -6.948f, -7.693f, -8.427f, -9.365f, -9.785f,-10.310f,-10.215f,-11.210f,-12.366f,-12.920f, --12.787f,-12.122f,-11.726f,-10.813f,-10.514f,-10.188f, -4.472f, -2.995f, -0.303f, 1.164f, - 1.223f, 4.935f, 3.305f, -2.636f, 4.388f, 6.560f, 6.662f, 6.519f, 6.135f, 5.555f, - 7.661f, 10.255f, 10.908f, 9.733f, 9.136f, 9.107f, 8.864f, 8.321f, 7.517f, 5.612f, - 4.376f, 3.312f, 2.498f, 1.535f, 1.432f, 2.566f, 2.665f, 4.034f, 3.377f, 0.045f, - 1.747f, 2.458f, 3.277f, 4.003f, 5.198f, 6.748f, 7.879f, 9.836f, 10.735f, 12.928f, - 13.606f -},{ --29.534f,-30.232f,-30.858f,-32.702f,-33.878f,-37.820f,-40.560f,-42.481f,-47.260f,-49.762f, --50.844f,-52.465f,-54.163f,-56.628f,-58.092f,-58.527f,-58.503f,-56.970f,-53.822f,-57.135f, --58.875f,-57.621f,-55.577f,-53.923f,-52.080f,-50.055f,-47.522f,-44.838f,-46.847f,-45.516f, --44.474f,-43.063f,-41.230f,-38.270f,-35.171f,-29.912f,-23.738f,-18.442f,-16.005f,-12.766f, --10.074f, -7.962f, -5.090f, -0.904f, 5.770f, 7.694f, 7.793f, 9.474f, 12.668f, 15.831f, - 19.136f, 22.112f, 24.891f, 26.641f, 28.921f, 31.823f, 33.491f, 36.392f, 38.761f, 41.292f, - 43.845f, 45.797f, 47.499f, 49.706f, 51.436f, 53.278f, 54.420f, 51.606f, 51.364f, 61.519f, - 63.960f, 66.054f, 66.746f, 66.409f, 65.997f, 64.938f, 63.664f, 61.636f, 59.537f, 56.060f, - 50.628f, 47.984f, 44.179f, 42.023f, 40.402f, 39.458f, 37.951f, 36.707f, 34.663f, 33.372f, - 31.946f, 31.118f, 30.687f, 29.888f, 28.351f, 27.697f, 27.680f, 25.737f, 25.320f, 27.579f, - 24.966f, 25.223f, 21.942f, 19.520f, 17.540f, 16.437f, 15.694f, 14.384f, 12.422f, 11.254f, - 8.987f, 7.159f, 4.699f, 2.165f, 0.612f, -1.452f, -3.464f, -4.707f, -5.833f, -6.392f, - -6.843f, -7.740f, -8.419f,-10.128f,-11.753f,-11.863f,-11.933f,-13.192f, -9.567f,-14.709f, --10.680f, -7.250f, -9.678f, -8.361f, -7.658f, -3.284f, -4.702f, -4.377f, -5.569f, -1.751f, - 2.614f, 3.698f, 0.796f, -0.118f, 4.329f, 4.859f, 6.019f, 6.221f, 6.580f, 6.761f, - 8.921f, 10.007f, 11.187f, 9.455f, 8.703f, 8.587f, 8.377f, 8.001f, 6.534f, 5.117f, - 4.223f, 3.405f, 2.451f, 1.354f, 1.364f, 2.571f, 2.733f, 3.839f, 3.065f, 0.332f, - 1.962f, 2.555f, 3.291f, 4.087f, 5.284f, 6.926f, 8.106f, 9.874f, 10.796f, 12.917f, - 13.606f -},{ --29.534f,-30.217f,-30.766f,-32.613f,-33.640f,-37.369f,-41.311f,-43.141f,-47.336f,-49.692f, --50.931f,-52.602f,-54.274f,-56.953f,-58.456f,-58.967f,-58.863f,-57.775f,-56.061f,-58.197f, --58.222f,-57.624f,-56.060f,-54.359f,-52.460f,-50.706f,-47.852f,-45.610f,-47.780f,-46.388f, --45.138f,-43.854f,-41.657f,-39.054f,-36.036f,-32.064f,-24.437f,-19.495f,-16.194f,-13.057f, - -9.861f, -7.719f, -5.786f, -2.040f, 2.591f, 6.839f, 9.135f, 11.149f, 14.200f, 16.241f, - 19.367f, 21.942f, 24.137f, 27.442f, 29.424f, 31.679f, 35.723f, 37.392f, 39.842f, 42.039f, - 44.773f, 46.627f, 48.240f, 50.248f, 51.385f, 52.371f, 53.156f, 48.799f, 60.203f, 63.779f, - 64.892f, 65.852f, 66.135f, 65.875f, 65.148f, 64.113f, 62.580f, 60.441f, 57.903f, 52.234f, - 49.562f, 45.129f, 41.756f, 40.189f, 38.648f, 37.120f, 35.379f, 34.070f, 33.037f, 32.027f, - 31.137f, 30.897f, 29.885f, 28.619f, 27.728f, 26.634f, 24.616f, 25.780f, 25.878f, 26.386f, - 23.141f, 22.088f, 20.193f, 18.402f, 16.553f, 15.332f, 14.822f, 13.225f, 14.570f, 10.366f, - 6.965f, 6.247f, 3.732f, 1.732f, -0.185f, -2.189f, -4.025f, -5.613f, -6.633f, -6.727f, - -6.951f, -8.171f, -9.471f,-10.476f,-11.711f, -8.826f,-11.138f,-12.299f, -7.565f,-13.111f, --15.222f, -7.932f,-11.089f,-10.389f,-10.766f, -9.655f, -8.580f, -6.042f, -3.030f, 0.277f, - 2.218f, 2.537f, -2.592f, 2.953f, 3.422f, 2.475f, 4.252f, 5.379f, 5.987f, 5.114f, - 4.271f, 9.902f, 11.027f, 9.098f, 8.213f, 7.476f, 8.219f, 7.527f, 5.824f, 4.905f, - 3.909f, 3.334f, 2.170f, 1.414f, 1.387f, 2.277f, 2.865f, 3.390f, 2.902f, 0.705f, - 1.930f, 2.617f, 3.343f, 4.132f, 5.364f, 7.060f, 8.318f, 9.908f, 10.859f, 12.907f, - 13.606f -},{ --29.534f,-30.202f,-30.668f,-32.508f,-33.433f,-36.673f,-41.704f,-43.696f,-47.386f,-49.617f, --51.093f,-52.672f,-54.241f,-56.397f,-58.145f,-59.293f,-59.064f,-58.266f,-57.632f,-58.993f, --58.193f,-57.860f,-56.760f,-55.036f,-53.071f,-51.071f,-47.878f,-47.177f,-48.072f,-46.887f, --45.819f,-44.457f,-42.088f,-39.404f,-36.700f,-33.027f,-25.931f,-20.248f,-16.514f,-13.612f, - -9.872f, -7.255f, -5.366f, -2.443f, 0.793f, 5.508f, 9.499f, 12.836f, 15.150f, 17.782f, - 19.721f, 22.361f, 24.911f, 27.541f, 30.618f, 34.303f, 38.809f, 38.477f, 40.948f, 43.031f, - 45.429f, 46.824f, 48.277f, 50.156f, 51.955f, 53.101f, 53.183f, 49.988f, 60.852f, 63.756f, - 64.829f, 65.376f, 65.241f, 64.737f, 63.752f, 62.593f, 61.082f, 59.104f, 56.558f, 50.521f, - 46.958f, 42.803f, 40.526f, 38.659f, 37.200f, 35.050f, 34.067f, 32.765f, 32.314f, 30.597f, - 28.620f, 28.148f, 27.180f, 26.357f, 25.127f, 24.848f, 27.383f, 25.864f, 22.678f, 21.928f, - 21.913f, 21.329f, 19.180f, 17.248f, 15.532f, 14.350f, 13.220f, 11.725f, 12.334f, 9.369f, - 7.936f, 5.091f, 2.986f, 1.288f, -0.577f, -2.837f, -4.692f, -6.156f, -6.987f, -6.736f, - -7.074f, -8.566f, -8.429f, -6.580f, -9.027f, -4.060f,-11.053f,-12.932f,-14.378f,-13.974f, --13.483f,-13.489f,-12.529f,-11.110f,-10.076f, -8.699f, -6.906f, -4.957f, -2.168f, 0.102f, - 1.926f, 0.843f, -5.787f, 4.610f, 2.335f, 2.298f, 2.437f, 3.199f, 3.004f, 1.245f, - -0.910f, 8.233f, 9.539f, 8.573f, 7.851f, 7.113f, 7.547f, 7.113f, 5.656f, 4.878f, - 3.782f, 2.904f, 1.801f, 1.464f, 1.366f, 2.023f, 3.021f, 3.061f, 2.801f, 0.952f, - 1.749f, 2.662f, 3.439f, 4.142f, 5.431f, 7.152f, 8.502f, 9.941f, 10.921f, 12.899f, - 13.606f -},{ --29.534f,-30.187f,-30.566f,-32.389f,-33.264f,-35.861f,-41.796f,-44.106f,-47.447f,-49.619f, --51.245f,-52.550f,-54.068f,-55.489f,-57.508f,-59.200f,-59.075f,-58.195f,-58.005f,-59.325f, --58.626f,-58.202f,-57.077f,-55.541f,-53.711f,-51.850f,-48.311f,-48.631f,-48.047f,-47.460f, --46.282f,-44.617f,-42.301f,-39.684f,-36.811f,-33.508f,-27.648f,-21.144f,-17.465f,-13.794f, --10.148f, -7.022f, -5.310f, -2.475f, 0.573f, 4.975f, 10.669f, 11.676f, 14.960f, 16.287f, - 18.905f, 23.680f, 26.090f, 29.011f, 32.731f, 37.676f, 38.750f, 40.053f, 42.272f, 44.577f, - 45.952f, 47.232f, 48.637f, 50.252f, 51.727f, 52.941f, 53.607f, 49.514f, 60.072f, 62.715f, - 64.091f, 64.237f, 64.084f, 63.380f, 62.481f, 60.899f, 59.489f, 57.257f, 52.529f, 49.168f, - 44.349f, 41.545f, 39.404f, 37.413f, 35.830f, 33.873f, 32.251f, 31.793f, 29.532f, 27.757f, - 27.944f, 29.151f, 28.349f, 27.852f, 26.198f, 24.114f, 23.644f, 23.453f, 22.466f, 21.615f, - 21.015f, 20.134f, 18.226f, 15.998f, 14.234f, 13.099f, 12.348f, 10.853f, 10.674f, 8.576f, - 5.704f, 4.344f, 3.176f, 1.043f, -1.047f, -3.296f, -4.957f, -6.351f, -6.810f, -6.663f, - -7.168f, -8.464f, -5.157f, -9.489f,-11.313f,-12.719f,-12.298f,-12.582f,-12.913f,-12.544f, --11.853f,-11.323f,-10.707f, -9.167f, -8.576f, -7.643f, -6.066f, -4.049f, -2.934f, -0.402f, - 0.657f, -1.006f, -2.213f, 6.825f, 1.955f, 1.671f, 2.768f, 2.335f, 1.500f, 0.159f, - -0.924f, 5.243f, 7.722f, 8.095f, 7.501f, 6.927f, 6.324f, 6.602f, 6.006f, 4.941f, - 3.685f, 2.503f, 1.824f, 1.351f, 1.217f, 1.966f, 3.025f, 2.920f, 2.556f, 1.070f, - 1.635f, 2.733f, 3.570f, 4.138f, 5.484f, 7.213f, 8.650f, 9.976f, 10.980f, 12.892f, - 13.606f -},{ --29.534f,-30.172f,-30.459f,-32.262f,-33.140f,-35.090f,-41.719f,-44.367f,-47.531f,-49.704f, --51.355f,-52.337f,-53.867f,-55.107f,-57.252f,-58.803f,-59.102f,-58.424f,-58.286f,-59.308f, --58.886f,-58.852f,-57.365f,-55.713f,-54.424f,-51.921f,-49.121f,-48.928f,-48.426f,-47.917f, --46.462f,-44.737f,-42.196f,-39.791f,-37.119f,-33.645f,-29.145f,-22.938f,-18.802f,-14.635f, --10.703f, -7.152f, -5.198f, -2.422f, 0.523f, 5.271f, 10.396f, 10.406f, 10.729f, 12.837f, - 15.432f, 23.299f, 28.302f, 31.581f, 35.514f, 38.837f, 38.622f, 40.065f, 41.693f, 43.293f, - 44.947f, 46.741f, 48.839f, 50.099f, 51.279f, 52.423f, 53.783f, 51.521f, 58.288f, 61.742f, - 62.703f, 62.893f, 62.722f, 61.951f, 60.873f, 59.472f, 57.750f, 55.786f, 51.610f, 46.470f, - 42.602f, 40.775f, 38.647f, 36.674f, 34.075f, 32.702f, 30.394f, 29.551f, 27.277f, 28.364f, - 27.546f, 25.843f, 25.686f, 24.526f, 23.852f, 23.176f, 22.623f, 22.155f, 21.652f, 20.411f, - 20.202f, 18.692f, 17.025f, 15.445f, 14.105f, 12.641f, 11.844f, 10.539f, 9.778f, 7.473f, - 5.548f, 4.593f, 1.814f, 1.118f, -1.292f, -3.446f, -5.157f, -6.180f, -6.973f, -6.546f, - -6.389f, -8.224f, -9.329f, -9.368f, -9.032f,-10.101f,-10.991f,-11.648f,-11.690f,-11.668f, --11.237f,-11.188f,-10.708f, -9.809f, -9.472f, -8.566f, -6.341f, -4.505f, -2.200f, -0.236f, - 0.869f, -3.899f, 1.225f, 4.712f, 2.421f, -0.469f, 1.426f, 1.996f, 1.704f, 0.145f, - -1.270f, 3.403f, 6.123f, 7.473f, 6.811f, 6.365f, 6.085f, 6.298f, 6.452f, 5.133f, - 3.612f, 2.426f, 2.126f, 1.289f, 1.126f, 1.961f, 2.748f, 2.739f, 2.141f, 1.234f, - 1.779f, 2.872f, 3.718f, 4.153f, 5.528f, 7.256f, 8.760f, 10.015f, 11.034f, 12.885f, - 13.606f -},{ --29.534f,-30.157f,-30.350f,-32.131f,-33.067f,-34.520f,-41.639f,-44.514f,-47.616f,-49.804f, --51.474f,-52.309f,-53.805f,-55.501f,-57.573f,-58.545f,-59.275f,-59.195f,-59.090f,-59.436f, --59.386f,-59.567f,-57.849f,-56.077f,-54.759f,-51.691f,-49.520f,-49.503f,-48.723f,-47.832f, --46.830f,-45.010f,-42.375f,-39.855f,-36.836f,-33.437f,-29.746f,-25.713f,-20.802f,-15.783f, --11.765f, -7.086f, -5.153f, -2.608f, 0.872f, 5.701f, 11.055f, 12.340f, 8.993f, 13.304f, - 12.876f, 25.113f, 30.039f, 33.466f, 36.786f, 38.148f, 39.241f, 40.165f, 41.765f, 43.416f, - 44.955f, 46.474f, 48.328f, 49.599f, 50.636f, 51.960f, 53.376f, 53.343f, 56.648f, 60.111f, - 61.112f, 61.137f, 60.924f, 60.563f, 59.468f, 58.015f, 56.024f, 53.599f, 49.753f, 45.155f, - 41.495f, 39.432f, 37.248f, 35.192f, 32.690f, 31.141f, 28.908f, 27.266f, 27.506f, 27.506f, - 25.349f, 25.890f, 24.541f, 23.989f, 23.294f, 22.196f, 20.753f, 20.874f, 20.183f, 19.301f, - 18.987f, 17.118f, 15.571f, 14.456f, 13.622f, 12.018f, 11.062f, 9.650f, 8.968f, 7.256f, - 5.166f, 4.469f, 3.795f, -0.010f, -1.388f, -3.962f, -5.135f, -5.677f, -6.353f, -5.983f, - -6.857f, -8.337f, -8.964f, -8.608f, -8.218f, -9.917f,-10.891f,-11.013f,-11.402f,-11.935f, --11.909f,-12.062f,-11.281f,-11.304f,-10.240f, -7.491f, -6.279f, -4.624f, -2.062f, 0.026f, - 0.863f, -5.422f, 5.067f, 2.265f, 3.245f, -2.174f, 0.517f, 1.560f, 1.203f, 0.034f, - -1.884f, 1.122f, 3.903f, 6.902f, 6.142f, 6.031f, 6.180f, 6.334f, 6.408f, 5.259f, - 3.618f, 2.541f, 2.291f, 1.345f, 1.240f, 1.869f, 2.296f, 2.429f, 1.829f, 1.599f, - 2.219f, 3.089f, 3.856f, 4.214f, 5.575f, 7.299f, 8.835f, 10.059f, 11.081f, 12.880f, - 13.606f -},{ --29.534f,-30.143f,-30.238f,-32.002f,-33.044f,-34.276f,-41.710f,-44.605f,-47.668f,-49.851f, --51.667f,-52.643f,-53.994f,-56.173f,-58.072f,-58.721f,-59.575f,-60.021f,-60.203f,-60.184f, --60.124f,-59.733f,-58.182f,-56.622f,-54.618f,-52.211f,-49.839f,-50.186f,-48.886f,-47.880f, --46.997f,-45.261f,-42.436f,-39.746f,-36.684f,-33.264f,-30.029f,-26.507f,-23.096f,-18.168f, --12.624f, -8.343f, -5.615f, -2.750f, 0.624f, 5.419f, 11.603f, 13.510f, 9.704f, 16.848f, - 15.995f, 24.561f, 29.203f, 32.910f, 36.442f, 37.552f, 39.740f, 40.959f, 42.343f, 43.377f, - 45.120f, 46.706f, 47.805f, 48.931f, 50.079f, 51.166f, 52.441f, 53.588f, 54.195f, 58.987f, - 59.104f, 59.267f, 59.348f, 58.923f, 57.699f, 56.190f, 54.387f, 52.157f, 49.120f, 42.633f, - 39.323f, 37.872f, 35.722f, 32.457f, 32.334f, 29.161f, 28.798f, 26.094f, 27.087f, 26.363f, - 24.657f, 24.025f, 23.315f, 22.164f, 21.352f, 21.277f, 21.385f, 19.018f, 18.898f, 18.242f, - 17.613f, 15.917f, 14.427f, 13.930f, 13.704f, 12.278f, 11.268f, 9.293f, 8.013f, 6.682f, - 6.507f, 5.191f, 2.015f, 0.532f, -1.827f, -3.959f, -5.059f, -5.442f, -5.580f, -5.762f, - -7.040f, -6.452f, -9.214f, -9.157f, -8.806f,-10.209f,-10.584f,-10.638f,-11.142f,-11.997f, --12.440f,-12.306f,-11.941f,-10.537f, -8.786f, -7.760f, -6.167f, -4.115f, -2.033f, -0.152f, - 0.536f, -8.959f, 5.864f, 1.843f, 2.695f, 0.814f, -0.039f, 0.857f, 1.008f, -0.084f, - -1.841f, -0.575f, 2.486f, 6.254f, 4.721f, 5.147f, 5.640f, 6.376f, 6.212f, 5.333f, - 3.478f, 2.648f, 2.466f, 1.352f, 1.382f, 1.739f, 1.879f, 2.181f, 1.942f, 2.117f, - 2.834f, 3.357f, 3.965f, 4.332f, 5.637f, 7.356f, 8.883f, 10.108f, 11.120f, 12.876f, - 13.606f -},{ --29.534f,-30.129f,-30.125f,-31.883f,-33.070f,-34.420f,-42.024f,-44.694f,-47.674f,-49.837f, --51.942f,-53.239f,-54.436f,-56.643f,-58.464f,-59.338f,-59.883f,-60.555f,-61.093f,-60.977f, --60.464f,-59.639f,-58.531f,-57.080f,-54.900f,-52.336f,-50.203f,-49.939f,-49.353f,-47.977f, --46.933f,-45.211f,-42.610f,-39.780f,-36.621f,-33.492f,-30.609f,-27.083f,-23.725f,-19.647f, --13.219f, -9.009f, -5.193f, -3.138f, 0.081f, 4.911f, 11.051f, 14.460f, 11.324f, 15.938f, - 18.284f, 19.726f, 25.870f, 30.085f, 34.459f, 37.761f, 40.113f, 41.590f, 42.703f, 43.784f, - 45.252f, 46.579f, 47.491f, 48.100f, 49.172f, 50.314f, 51.246f, 52.011f, 53.228f, 53.961f, - 56.798f, 57.085f, 57.206f, 57.687f, 55.978f, 54.560f, 52.513f, 50.294f, 46.318f, 40.755f, - 37.734f, 35.923f, 34.258f, 31.477f, 30.510f, 28.448f, 26.606f, 25.863f, 24.518f, 23.842f, - 23.382f, 22.696f, 21.228f, 20.812f, 19.239f, 17.946f, 18.289f, 17.746f, 17.685f, 17.807f, - 16.343f, 15.283f, 14.037f, 13.298f, 12.422f, 11.334f, 10.245f, 8.897f, 7.275f, 6.376f, - 5.390f, 5.560f, 2.098f, 0.265f, -1.893f, -4.186f, -4.762f, -4.697f, -4.779f, -5.558f, - -6.917f, -8.144f, -9.093f, -9.276f, -8.928f, -9.776f,-10.599f,-10.727f,-11.499f,-12.321f, --12.543f,-12.449f,-11.673f, -9.679f, -8.735f, -7.094f, -5.755f, -3.849f, -1.736f, 0.337f, - -0.964f,-10.263f, 3.967f, 1.344f, 1.946f, 4.041f, -0.496f, 0.922f, 0.627f, 0.029f, - -1.018f, -1.525f, 3.025f, 5.247f, 4.071f, 4.661f, 5.319f, 6.493f, 6.293f, 5.217f, - 3.132f, 2.592f, 2.772f, 1.319f, 1.346f, 1.675f, 1.567f, 2.163f, 2.499f, 2.586f, - 3.440f, 3.624f, 4.039f, 4.502f, 5.725f, 7.439f, 8.913f, 10.163f, 11.152f, 12.873f, - 13.606f -},{ --29.534f,-30.115f,-30.011f,-31.777f,-33.138f,-34.946f,-42.591f,-44.819f,-47.652f,-49.823f, --52.235f,-53.819f,-55.028f,-56.957f,-58.866f,-60.231f,-60.156f,-60.778f,-61.497f,-61.186f, --60.780f,-60.107f,-58.952f,-57.482f,-55.345f,-51.869f,-50.534f,-49.799f,-49.325f,-48.243f, --46.691f,-45.019f,-42.670f,-39.944f,-37.004f,-33.579f,-30.602f,-27.520f,-24.215f,-20.489f, --13.987f, -9.182f, -5.070f, -3.322f, -0.351f, 4.574f, 10.564f, 14.833f, 14.074f, 15.402f, - 19.026f, 21.300f, 22.123f, 22.866f, 32.875f, 37.988f, 40.710f, 42.036f, 43.121f, 44.316f, - 45.470f, 46.451f, 47.112f, 47.529f, 48.524f, 49.394f, 50.232f, 50.847f, 51.217f, 53.361f, - 52.268f, 55.492f, 56.348f, 55.312f, 53.969f, 52.547f, 51.144f, 48.098f, 45.937f, 40.308f, - 36.219f, 34.504f, 33.087f, 29.697f, 28.292f, 27.188f, 26.369f, 25.149f, 24.097f, 23.634f, - 22.755f, 21.305f, 20.816f, 20.074f, 18.916f, 18.063f, 18.145f, 17.293f, 16.445f, 16.384f, - 14.845f, 14.348f, 13.253f, 11.916f, 11.159f, 10.176f, 9.291f, 8.063f, 7.178f, 5.592f, - 4.861f, 3.804f, 2.636f, -0.461f, -2.659f, -3.856f, -4.279f, -3.951f, -4.816f, -5.672f, - -6.973f, -8.411f, -9.083f, -9.158f, -8.510f, -9.482f,-10.263f,-11.158f,-12.151f,-12.630f, --12.738f,-12.117f,-10.924f,-10.091f, -8.579f, -6.801f, -5.170f, -3.702f, -1.827f, 0.228f, - -2.989f, -8.360f, 5.723f, 1.391f, 1.605f, 3.535f, -0.406f, 1.044f, 1.005f, 0.110f, - -0.331f, -0.093f, 5.297f, 5.137f, 4.181f, 4.859f, 5.186f, 6.276f, 6.185f, 4.673f, - 2.873f, 2.391f, 2.786f, 1.380f, 1.214f, 1.707f, 1.343f, 2.270f, 3.145f, 2.855f, - 3.911f, 3.841f, 4.088f, 4.698f, 5.845f, 7.550f, 8.938f, 10.220f, 11.175f, 12.870f, - 13.606f -},{ --29.534f,-30.102f,-29.897f,-31.689f,-33.239f,-35.775f,-43.335f,-44.989f,-47.643f,-49.891f, --52.467f,-54.201f,-55.614f,-57.379f,-59.357f,-61.076f,-60.592f,-60.828f,-61.680f,-61.030f, --61.405f,-60.902f,-58.811f,-57.671f,-55.306f,-51.562f,-50.608f,-49.884f,-48.933f,-48.032f, --46.458f,-44.723f,-42.709f,-40.207f,-37.037f,-34.005f,-30.816f,-27.742f,-24.229f,-20.879f, --15.207f, -8.844f, -4.270f, -3.528f, -1.105f, 3.828f, 10.224f, 14.324f, 15.900f, 17.285f, - 18.794f, 20.200f, 20.767f, 21.427f, 28.277f, 36.732f, 40.563f, 43.305f, 44.194f, 44.901f, - 45.637f, 46.410f, 47.290f, 47.361f, 48.600f, 49.214f, 49.628f, 50.213f, 50.128f, 50.619f, - 50.929f, 51.144f, 52.530f, 54.244f, 52.632f, 51.054f, 49.516f, 45.909f, 42.257f, 38.889f, - 35.070f, 33.325f, 31.301f, 29.342f, 26.801f, 25.594f, 25.387f, 24.311f, 22.785f, 22.056f, - 21.911f, 20.382f, 19.844f, 19.487f, 18.112f, 16.729f, 16.481f, 16.342f, 15.522f, 14.890f, - 14.324f, 12.943f, 12.380f, 11.963f, 9.019f, 8.892f, 8.276f, 7.038f, 6.490f, 5.504f, - 4.455f, 3.866f, 1.559f, -0.967f, -2.487f, -3.343f, -4.062f, -3.864f, -4.971f, -6.394f, - -4.933f, -8.501f, -8.935f, -9.056f, -8.158f, -9.872f,-10.693f,-11.856f,-12.621f,-13.030f, --12.366f,-11.597f,-10.885f, -9.629f, -8.270f, -6.931f, -5.335f, -3.295f, -1.567f, 0.176f, - -4.982f, -5.295f, 5.600f, 2.143f, 3.985f, 1.729f, 0.557f, 1.524f, 0.921f, 0.510f, - 0.052f, 3.537f, 5.337f, 4.989f, 3.684f, 4.845f, 5.191f, 5.571f, 5.665f, 4.086f, - 2.766f, 2.352f, 2.437f, 1.478f, 1.173f, 1.789f, 1.305f, 2.294f, 3.448f, 2.968f, - 4.222f, 3.986f, 4.131f, 4.888f, 5.992f, 7.687f, 8.969f, 10.278f, 11.190f, 12.868f, - 13.606f -},{ --29.534f,-30.089f,-29.785f,-31.622f,-33.361f,-36.775f,-44.126f,-45.188f,-47.687f,-50.075f, --52.608f,-54.426f,-56.082f,-57.905f,-59.737f,-61.530f,-61.355f,-60.938f,-61.764f,-60.824f, --61.886f,-61.002f,-58.358f,-57.674f,-54.955f,-51.524f,-50.615f,-49.787f,-48.909f,-47.660f, --46.305f,-44.608f,-42.718f,-40.197f,-37.167f,-34.086f,-31.151f,-27.997f,-24.654f,-20.999f, --16.589f, -9.612f, -4.896f, -4.735f, -1.921f, 3.240f, 10.247f, 13.704f, 15.302f, 18.896f, - 20.541f, 21.633f, 20.806f, 19.643f, 23.158f, 28.442f, 36.892f, 42.507f, 44.204f, 46.172f, - 47.528f, 47.515f, 47.799f, 48.063f, 49.055f, 49.760f, 50.457f, 50.481f, 50.471f, 50.179f, - 49.744f, 50.512f, 50.025f, 51.434f, 51.589f, 49.128f, 47.459f, 41.152f, 42.816f, 39.243f, - 35.210f, 31.891f, 28.605f, 26.724f, 26.036f, 24.356f, 23.801f, 23.029f, 21.880f, 20.980f, - 21.153f, 19.198f, 19.200f, 18.749f, 17.086f, 16.106f, 15.587f, 15.584f, 14.686f, 13.509f, - 12.684f, 12.248f, 10.808f, 9.945f, 9.262f, 8.807f, 7.321f, 6.885f, 6.085f, 5.387f, - 4.001f, 2.642f, 1.378f, -0.938f, -2.130f, -2.742f, -3.811f, -4.365f, -5.170f, -5.251f, - -7.504f, -8.125f, -9.128f, -9.421f, -9.612f,-10.142f,-11.171f,-12.042f,-12.516f,-12.747f, --12.520f,-11.692f,-11.195f, -9.689f, -7.974f, -6.432f, -4.947f, -2.748f, -1.045f, 0.356f, - -5.705f, -7.689f, 3.969f, 4.946f, 4.928f, -0.694f, 1.682f, 1.847f, 1.550f, 0.625f, - 0.445f, 4.645f, 4.519f, 4.329f, 3.863f, 4.744f, 4.960f, 4.990f, 4.952f, 3.662f, - 2.600f, 2.522f, 2.154f, 1.519f, 1.252f, 1.845f, 1.546f, 2.211f, 3.267f, 3.097f, - 4.410f, 4.058f, 4.186f, 5.041f, 6.156f, 7.842f, 9.013f, 10.335f, 11.198f, 12.867f, - 13.606f -},{ --29.534f,-30.078f,-29.674f,-31.578f,-33.495f,-37.793f,-44.815f,-45.389f,-47.800f,-50.331f, --52.674f,-54.640f,-56.428f,-58.302f,-59.902f,-61.638f,-62.204f,-61.320f,-61.638f,-60.988f, --62.411f,-60.607f,-58.880f,-58.164f,-54.190f,-51.468f,-50.530f,-49.572f,-48.843f,-47.367f, --46.116f,-44.457f,-42.736f,-40.114f,-37.378f,-34.563f,-31.530f,-28.321f,-24.912f,-21.240f, --16.843f,-11.736f, -7.830f, -6.526f, -2.800f, 3.010f, 9.792f, 13.205f, 14.670f, 18.282f, - 20.184f, 22.077f, 22.742f, 21.401f, 17.004f, 18.289f, 24.092f, 34.707f, 41.390f, 45.056f, - 46.256f, 47.331f, 48.852f, 49.893f, 50.516f, 51.343f, 51.871f, 52.193f, 52.094f, 51.775f, - 50.906f, 50.300f, 50.569f, 50.438f, 49.163f, 47.849f, 46.052f, 43.763f, 40.850f, 37.798f, - 33.142f, 29.368f, 27.062f, 25.180f, 23.810f, 22.789f, 21.709f, 21.359f, 20.611f, 20.329f, - 20.051f, 19.886f, 19.033f, 18.304f, 16.952f, 16.129f, 15.757f, 15.028f, 13.982f, 12.755f, - 12.035f, 11.075f, 10.446f, 10.402f, 9.678f, 8.730f, 7.428f, 6.750f, 6.046f, 5.198f, - 4.543f, 2.487f, 1.412f, -1.053f, -1.554f, -2.078f, -3.160f, -4.521f, -4.288f, -2.969f, - -8.148f, -8.576f, -9.521f, -9.678f,-10.343f,-10.287f,-11.297f,-11.909f,-12.426f,-12.229f, --12.795f,-11.905f,-11.496f, -9.525f, -7.787f, -6.278f, -4.427f, -2.580f, -0.492f, 0.885f, - -5.800f, -5.778f, 2.409f, 1.649f, -0.115f, 1.031f, 1.959f, 2.134f, 0.858f, 0.796f, - 2.698f, 4.167f, 4.562f, 4.534f, 4.197f, 4.414f, 4.354f, 4.613f, 4.211f, 3.147f, - 2.377f, 2.472f, 1.929f, 1.566f, 1.386f, 1.840f, 1.811f, 2.129f, 2.814f, 3.335f, - 4.493f, 4.072f, 4.256f, 5.137f, 6.326f, 8.004f, 9.076f, 10.388f, 11.198f, 12.867f, - 13.606f -},{ --29.534f,-30.066f,-29.565f,-31.554f,-33.631f,-38.682f,-45.285f,-45.565f,-47.973f,-50.566f, --52.694f,-54.873f,-56.717f,-58.464f,-60.033f,-61.882f,-62.829f,-62.030f,-61.695f,-62.038f, --63.207f,-61.041f,-60.115f,-58.732f,-53.500f,-51.445f,-50.339f,-49.232f,-48.644f,-47.156f, --45.771f,-44.474f,-42.520f,-39.970f,-37.520f,-34.669f,-31.569f,-28.526f,-25.335f,-21.125f, --16.900f,-14.017f,-11.253f, -8.230f, -3.683f, 2.668f, 9.260f, 12.435f, 13.731f, 16.598f, - 18.614f, 20.858f, 23.001f, 23.105f, 21.553f, 19.917f, 17.699f, 18.264f, 23.321f, 32.668f, - 39.853f, 45.525f, 47.804f, 49.082f, 49.972f, 51.229f, 51.573f, 51.809f, 52.155f, 51.999f, - 51.396f, 50.604f, 49.610f, 48.535f, 47.513f, 46.354f, 44.478f, 41.405f, 39.176f, 33.678f, - 31.217f, 28.531f, 26.149f, 23.868f, 22.456f, 21.480f, 20.587f, 20.163f, 19.700f, 20.124f, - 19.691f, 19.297f, 18.784f, 17.888f, 16.224f, 15.839f, 16.172f, 14.750f, 13.463f, 12.675f, - 11.962f, 10.904f, 10.955f, 10.973f, 9.761f, 8.461f, 7.604f, 5.948f, 6.030f, 5.316f, - 4.224f, 2.170f, 0.910f, -0.436f, -0.509f, -1.107f, -2.639f, -3.588f, -0.311f, -5.086f, - -8.315f, -8.414f, -9.031f,-10.187f, -9.387f,-10.168f,-11.366f,-12.397f,-12.620f,-12.636f, --12.274f,-12.097f,-11.440f, -9.264f, -7.725f, -5.691f, -3.814f, -1.977f, -0.003f, 1.249f, - -4.903f, -7.282f, 3.862f, 1.955f, 1.941f, 2.232f, 2.868f, 2.160f, 1.159f, 4.494f, - 4.522f, 3.681f, 4.289f, 4.586f, 4.351f, 4.325f, 4.248f, 4.205f, 3.594f, 2.601f, - 2.090f, 2.001f, 1.482f, 1.564f, 1.507f, 1.829f, 1.587f, 2.058f, 2.422f, 3.586f, - 4.451f, 4.035f, 4.328f, 5.168f, 6.487f, 8.163f, 9.159f, 10.435f, 11.194f, 12.866f, - 13.606f -},{ --29.534f,-30.056f,-29.459f,-31.549f,-33.762f,-39.336f,-45.478f,-45.708f,-48.180f,-50.700f, --52.681f,-55.005f,-56.970f,-58.483f,-60.205f,-62.525f,-63.402f,-62.894f,-62.362f,-63.491f, --63.684f,-62.190f,-60.880f,-58.374f,-53.432f,-51.504f,-50.151f,-48.972f,-48.280f,-47.018f, --45.385f,-44.231f,-42.298f,-39.627f,-37.263f,-34.661f,-31.423f,-28.477f,-25.532f,-21.404f, --15.304f,-15.018f,-11.921f, -8.375f, -3.767f, 2.574f, 9.780f, 11.796f, 12.713f, 14.966f, - 16.883f, 19.399f, 21.741f, 23.125f, 24.052f, 24.725f, 24.700f, 23.690f, 20.297f, 19.095f, - 26.232f, 34.582f, 40.900f, 44.898f, 47.367f, 49.680f, 51.065f, 52.145f, 52.918f, 52.593f, - 51.484f, 50.602f, 49.104f, 47.759f, 46.284f, 45.058f, 43.098f, 36.420f, 34.992f, 32.639f, - 29.722f, 27.150f, 24.807f, 22.371f, 21.178f, 20.499f, 19.698f, 19.895f, 19.261f, 18.597f, - 18.746f, 19.359f, 18.039f, 16.959f, 16.171f, 15.934f, 15.750f, 15.335f, 13.131f, 11.898f, - 11.327f, 11.086f, 11.313f, 10.988f, 9.523f, 8.665f, 7.557f, 7.028f, 6.506f, 5.317f, - 3.657f, 1.831f, 1.352f, 0.614f, -0.108f, -0.930f, -2.336f, -1.111f, -1.781f, -5.795f, - -7.771f, -8.213f, -9.055f,-10.405f,-10.498f, -9.755f,-11.772f,-12.699f,-12.988f,-12.915f, --12.583f,-11.875f,-10.853f, -9.212f, -7.494f, -5.638f, -3.278f, -1.408f, 0.539f, 1.822f, - -3.818f, -8.140f, 5.068f, 2.385f, 2.764f, 3.348f, 2.843f, 2.544f, 1.696f, 6.029f, - 4.553f, 3.821f, 4.718f, 4.166f, 4.644f, 4.597f, 4.123f, 3.627f, 2.983f, 2.076f, - 1.525f, 1.419f, 0.943f, 1.243f, 1.537f, 1.894f, 0.723f, 1.870f, 2.272f, 3.669f, - 4.258f, 3.945f, 4.374f, 5.142f, 6.632f, 8.309f, 9.260f, 10.475f, 11.184f, 12.867f, - 13.606f -},{ --29.534f,-30.046f,-29.357f,-31.558f,-33.886f,-39.704f,-45.410f,-45.824f,-48.399f,-50.724f, --52.647f,-54.936f,-57.101f,-58.436f,-60.165f,-63.160f,-64.200f,-63.637f,-63.281f,-64.413f, --63.784f,-62.678f,-61.475f,-57.661f,-53.565f,-51.454f,-49.832f,-48.840f,-47.931f,-46.511f, --44.893f,-43.514f,-42.018f,-39.447f,-37.139f,-34.552f,-31.397f,-28.566f,-25.658f,-22.090f, --17.320f,-15.919f,-12.525f, -9.064f, -4.019f, 1.443f, 9.231f, 10.307f, 11.304f, 13.030f, - 15.151f, 17.231f, 20.439f, 22.378f, 24.102f, 26.083f, 27.338f, 27.961f, 28.352f, 27.754f, - 24.655f, 23.098f, 24.847f, 29.076f, 33.646f, 39.276f, 44.552f, 51.026f, 52.418f, 52.880f, - 52.089f, 50.614f, 48.947f, 47.067f, 45.111f, 43.716f, 38.267f, 36.288f, 33.987f, 30.811f, - 28.515f, 25.662f, 23.589f, 21.204f, 20.174f, 19.577f, 19.038f, 18.959f, 18.717f, 18.842f, - 18.712f, 17.902f, 17.579f, 17.065f, 17.035f, 15.802f, 14.660f, 13.751f, 12.141f, 10.638f, - 10.360f, 10.749f, 10.891f, 10.075f, 9.224f, 8.196f, 7.739f, 7.026f, 8.257f, 6.186f, - 4.340f, 3.233f, 1.972f, 1.492f, 0.444f, -0.571f, -2.315f, -1.196f, 0.612f, -5.372f, - -7.250f, -8.131f, -9.641f,-10.413f, -9.993f,-10.410f,-11.631f,-12.464f,-12.582f,-12.877f, --12.484f,-11.689f,-10.648f, -9.002f, -7.067f, -5.195f, -2.934f, -0.867f, 0.780f, 1.840f, - -2.420f, -9.649f, 6.880f, 3.174f, 3.746f, 3.998f, 2.967f, 2.832f, 4.008f, 6.361f, - 5.089f, 4.906f, 5.023f, 4.717f, 4.598f, 4.797f, 3.782f, 2.901f, 2.322f, 1.507f, - 0.838f, 1.018f, 0.514f, 0.591f, 1.466f, 2.053f, -0.241f, 1.508f, 2.316f, 3.512f, - 3.933f, 3.800f, 4.370f, 5.075f, 6.758f, 8.439f, 9.375f, 10.507f, 11.172f, 12.867f, - 13.606f -},{ --29.534f,-30.037f,-29.258f,-31.576f,-34.002f,-39.797f,-45.157f,-45.935f,-48.617f,-50.703f, --52.619f,-54.755f,-57.009f,-58.294f,-59.765f,-63.288f,-64.893f,-64.221f,-64.124f,-64.838f, --63.942f,-62.563f,-61.901f,-56.999f,-53.675f,-51.383f,-49.700f,-48.655f,-47.600f,-46.128f, --44.577f,-43.128f,-41.746f,-39.442f,-36.997f,-34.353f,-31.372f,-28.703f,-25.836f,-22.595f, --19.481f,-16.443f,-12.901f, -9.456f, -4.527f, -0.111f, 6.369f, 8.742f, 10.213f, 11.601f, - 12.796f, 15.554f, 18.099f, 20.216f, 22.874f, 25.442f, 27.256f, 28.482f, 30.204f, 30.975f, - 30.738f, 30.494f, 30.033f, 30.521f, 31.799f, 28.172f, 24.212f, 29.268f, 43.869f, 52.254f, - 51.967f, 49.716f, 48.360f, 46.343f, 44.143f, 41.801f, 35.763f, 33.708f, 31.177f, 29.358f, - 27.422f, 24.521f, 22.190f, 20.685f, 19.179f, 18.823f, 18.714f, 18.782f, 19.481f, 16.950f, - 17.599f, 17.187f, 17.044f, 16.434f, 16.140f, 14.531f, 12.973f, 11.420f, 10.407f, 10.151f, - 10.259f, 11.260f, 10.683f, 9.706f, 8.894f, 7.924f, 7.633f, 7.644f, 9.300f, 6.776f, - 4.718f, 3.829f, 2.697f, 1.946f, 1.504f, -0.014f, -0.666f, -3.475f, -3.566f, -6.017f, - -7.500f, -8.304f, -9.635f, -9.984f,-11.248f,-12.160f,-12.229f,-12.887f,-12.696f,-12.790f, --12.276f,-11.288f,-10.454f, -9.011f, -6.467f, -4.718f, -2.722f, -0.587f, 1.296f, 2.694f, - -0.537f,-10.810f, 7.631f, 3.260f, 4.270f, 4.870f, 3.153f, 2.315f, 4.236f, 6.669f, - 6.177f, 6.104f, 5.595f, 5.136f, 4.779f, 4.712f, 3.610f, 2.318f, 1.757f, 1.057f, - 0.483f, 0.847f, 0.186f, 0.055f, 1.411f, 2.266f, -0.612f, 1.081f, 2.379f, 3.223f, - 3.546f, 3.611f, 4.306f, 4.988f, 6.868f, 8.553f, 9.496f, 10.531f, 11.159f, 12.868f, - 13.606f -},{ --29.534f,-30.029f,-29.163f,-31.596f,-34.114f,-39.683f,-44.829f,-46.058f,-48.824f,-50.721f, --52.629f,-54.671f,-56.731f,-58.073f,-59.315f,-63.068f,-64.970f,-64.843f,-65.098f,-65.021f, --63.929f,-62.671f,-61.307f,-56.349f,-53.688f,-51.285f,-49.583f,-48.406f,-47.114f,-45.755f, --44.411f,-42.949f,-41.471f,-39.271f,-36.774f,-33.918f,-31.124f,-28.313f,-25.720f,-22.692f, --19.764f,-16.427f,-13.083f, -9.748f, -5.326f, -1.450f, 3.251f, 6.650f, 8.543f, 10.171f, - 10.559f, 12.990f, 15.811f, 18.427f, 20.773f, 23.436f, 25.633f, 27.211f, 28.565f, 29.413f, - 30.521f, 31.478f, 35.302f, 33.612f, 33.889f, 33.784f, 31.900f, 27.751f, 25.581f, 35.159f, - 43.059f, 46.825f, 46.773f, 45.278f, 42.253f, 37.978f, 32.306f, 31.888f, 30.541f, 27.966f, - 27.291f, 24.337f, 21.117f, 20.129f, 19.396f, 18.257f, 18.157f, 18.001f, 17.454f, 17.191f, - 17.179f, 16.540f, 15.918f, 15.928f, 14.760f, 13.185f, 12.447f, 11.294f, 10.004f, 9.852f, - 10.373f, 10.810f, 10.461f, 9.573f, 8.786f, 8.316f, 7.574f, 7.922f, 8.930f, 8.277f, - 5.877f, 5.021f, 4.161f, 3.460f, 1.778f, 0.807f, 6.091f, -3.368f, -4.704f, -4.117f, - -6.412f, -8.228f, -9.160f,-10.681f,-11.920f,-12.462f,-13.027f,-12.960f,-12.744f,-12.532f, --11.958f,-11.204f,-10.039f, -8.375f, -5.967f, -4.308f, -2.417f, 0.073f, 1.950f, 3.560f, - 1.488f,-10.883f, 7.249f, 4.512f, 4.922f, 5.264f, 3.368f, 5.277f, 7.250f, 7.675f, - 7.217f, 6.442f, 6.047f, 5.087f, 4.886f, 4.594f, 3.360f, 2.044f, 1.305f, 0.801f, - 0.563f, 0.854f, 0.072f, -0.083f, 1.437f, 2.494f, -0.312f, 0.733f, 2.333f, 2.976f, - 3.182f, 3.408f, 4.194f, 4.903f, 6.967f, 8.653f, 9.617f, 10.547f, 11.145f, 12.869f, - 13.606f -},{ --29.534f,-30.021f,-29.072f,-31.613f,-34.224f,-39.464f,-44.533f,-46.197f,-49.009f,-50.822f, --52.679f,-54.792f,-56.453f,-57.896f,-59.193f,-63.019f,-64.707f,-65.444f,-65.999f,-64.752f, --63.578f,-62.530f,-60.054f,-56.213f,-53.607f,-51.215f,-49.378f,-47.971f,-46.571f,-45.399f, --44.276f,-42.662f,-41.198f,-39.021f,-36.163f,-33.524f,-30.781f,-28.177f,-25.308f,-22.189f, --19.180f,-16.484f,-13.491f, -9.827f, -6.301f, -3.012f, 1.282f, 4.316f, 7.167f, 7.309f, - 9.340f, 11.647f, 14.216f, 16.886f, 19.476f, 21.496f, 23.328f, 24.276f, 25.445f, 28.040f, - 30.297f, 31.220f, 31.753f, 32.529f, 33.530f, 33.650f, 32.711f, 31.212f, 29.865f, 26.933f, - 24.113f, 25.508f, 33.445f, 36.399f, 34.319f, 26.791f, 31.479f, 29.163f, 27.392f, 27.403f, - 26.385f, 23.511f, 21.440f, 18.840f, 17.900f, 17.942f, 18.228f, 17.997f, 17.491f, 17.012f, - 16.337f, 15.591f, 15.364f, 14.863f, 13.970f, 13.030f, 11.417f, 10.632f, 10.259f, 9.948f, - 9.939f, 10.448f, 11.337f, 10.189f, 8.875f, 8.430f, 7.657f, 8.268f, 8.311f, 8.792f, - 7.782f, 5.857f, 5.439f, 4.316f, 2.856f, 0.489f, 2.433f, -2.762f, -2.896f, -4.252f, - -6.323f, -8.015f, -9.610f,-10.991f,-12.137f,-12.770f,-13.209f,-13.088f,-12.945f,-12.380f, --11.668f,-10.795f, -9.383f, -7.637f, -5.967f, -3.904f, -1.781f, 0.468f, 2.555f, 4.062f, - 2.041f, -9.613f, 6.050f, 6.463f, 5.859f, 6.310f, 3.951f, 9.853f, 9.223f, 8.416f, - 7.289f, 6.905f, 6.161f, 5.404f, 4.602f, 4.446f, 3.446f, 2.103f, 1.081f, 0.681f, - 0.879f, 0.960f, 0.194f, -0.096f, 1.469f, 2.700f, 0.135f, 0.554f, 2.198f, 2.836f, - 2.899f, 3.232f, 4.064f, 4.840f, 7.057f, 8.747f, 9.728f, 10.556f, 11.133f, 12.871f, - 13.606f -},{ --29.534f,-30.015f,-28.986f,-31.622f,-34.338f,-39.252f,-44.342f,-46.338f,-49.151f,-50.977f, --52.721f,-54.990f,-56.366f,-57.859f,-59.337f,-63.188f,-64.873f,-65.725f,-66.291f,-64.472f, --63.259f,-61.839f,-58.970f,-56.108f,-53.521f,-51.051f,-49.114f,-47.372f,-46.086f,-45.181f, --43.639f,-42.394f,-40.867f,-38.504f,-35.642f,-33.152f,-30.630f,-27.938f,-24.689f,-21.603f, --18.938f,-16.573f,-13.552f,-10.329f, -7.432f, -4.076f, -0.231f, 2.619f, 5.305f, 6.300f, - 8.195f, 10.986f, 13.284f, 15.466f, 17.876f, 19.630f, 20.789f, 22.706f, 24.469f, 26.409f, - 26.626f, 28.495f, 29.799f, 30.593f, 31.393f, 31.183f, 30.775f, 30.335f, 30.265f, 29.614f, - 28.978f, 29.178f, 25.923f, 23.597f, 22.275f, 26.920f, 33.265f, 27.730f, 26.498f, 26.326f, - 24.513f, 22.927f, 20.418f, 19.524f, 18.749f, 18.350f, 17.949f, 18.014f, 16.513f, 16.124f, - 15.212f, 14.987f, 14.793f, 13.853f, 13.632f, 13.061f, 12.013f, 11.155f, 10.756f, 10.518f, - 10.509f, 10.598f, 10.651f, 9.593f, 9.391f, 8.387f, 8.344f, 9.095f, 8.895f, 8.262f, - 8.195f, 6.903f, 6.194f, 5.236f, 3.522f, 4.631f, 4.801f, -1.468f, -1.821f, -3.202f, - -5.673f, -7.825f, -9.610f,-11.046f,-12.254f,-12.947f,-13.218f,-12.942f,-12.589f,-11.986f, --11.523f,-10.544f, -8.952f, -6.968f, -5.681f, -3.920f, -1.714f, 0.516f, 3.273f, 4.999f, - 3.335f, -7.320f, 6.053f, 8.421f, 6.925f, 6.495f, 4.728f, 11.218f, 9.458f, 9.036f, - 8.164f, 7.193f, 6.257f, 5.695f, 4.994f, 3.963f, 3.877f, 2.375f, 0.955f, 0.684f, - 1.138f, 1.153f, 0.257f, -0.254f, 1.542f, 2.830f, 0.341f, 0.619f, 2.131f, 2.731f, - 2.719f, 3.116f, 3.950f, 4.813f, 7.142f, 8.841f, 9.826f, 10.561f, 11.123f, 12.873f, - 13.606f -},{ --29.534f,-30.009f,-28.905f,-31.618f,-34.458f,-39.141f,-44.283f,-46.455f,-49.231f,-51.111f, --52.698f,-55.045f,-56.500f,-57.925f,-59.440f,-63.206f,-65.518f,-65.729f,-66.119f,-64.949f, --63.127f,-61.342f,-58.277f,-55.775f,-53.298f,-50.867f,-48.759f,-46.899f,-45.540f,-44.776f, --43.148f,-41.904f,-40.459f,-37.896f,-35.136f,-32.770f,-30.308f,-27.553f,-24.216f,-21.203f, --18.718f,-16.423f,-13.715f,-10.806f, -8.170f, -5.132f, -2.080f, 1.941f, 4.240f, 5.450f, - 6.892f, 9.932f, 12.820f, 14.884f, 16.259f, 18.611f, 19.637f, 20.222f, 21.036f, 22.826f, - 24.615f, 26.307f, 27.352f, 27.955f, 27.727f, 27.596f, 27.728f, 27.858f, 28.108f, 28.229f, - 28.912f, 29.072f, 29.433f, 28.365f, 28.428f, 28.697f, 29.815f, 25.177f, 24.622f, 24.034f, - 22.434f, 21.643f, 20.273f, 19.120f, 17.557f, 17.163f, 17.773f, 17.359f, 15.771f, 15.832f, - 15.189f, 14.651f, 13.859f, 14.009f, 13.870f, 12.785f, 11.642f, 10.985f, 10.841f, 11.135f, - 11.793f, 10.475f, 10.356f, 9.598f, 9.004f, 9.270f, 8.676f, 9.331f, 8.588f, 9.840f, - 9.279f, 7.669f, 7.284f, 6.489f, 4.110f, 5.554f, 5.704f, -0.605f, -0.747f, -2.764f, - -5.348f, -7.858f, -9.777f,-11.160f,-12.478f,-13.062f,-13.560f,-12.939f,-12.294f,-11.667f, --11.078f,-10.227f, -8.793f, -7.184f, -5.663f, -3.601f, -1.309f, 1.003f, 3.596f, 5.592f, - 4.840f, -4.679f, 3.450f, 10.150f, 8.316f, 7.410f, 7.620f, 11.356f, 10.182f, 9.477f, - 8.747f, 7.391f, 6.412f, 6.084f, 5.477f, 4.115f, 3.868f, 2.438f, 0.690f, 0.849f, - 1.055f, 1.417f, 0.217f, -0.371f, 1.857f, 2.834f, 0.449f, 0.985f, 2.297f, 2.577f, - 2.649f, 3.064f, 3.876f, 4.828f, 7.219f, 8.939f, 9.904f, 10.563f, 11.118f, 12.875f, - 13.606f -},{ --29.534f,-30.005f,-28.829f,-31.598f,-34.587f,-39.192f,-44.336f,-46.519f,-49.242f,-51.150f, --52.602f,-54.892f,-56.715f,-58.013f,-59.405f,-63.038f,-65.854f,-65.749f,-65.872f,-65.538f, --63.204f,-60.985f,-57.902f,-55.634f,-52.996f,-50.710f,-48.429f,-46.582f,-45.121f,-44.014f, --42.861f,-41.461f,-39.773f,-37.264f,-34.807f,-32.329f,-29.699f,-26.950f,-23.846f,-20.977f, --18.710f,-16.326f,-13.875f,-11.463f, -8.669f, -6.067f, -3.511f, 0.441f, 2.600f, 4.134f, - 6.166f, 8.700f, 11.071f, 14.432f, 16.238f, 17.194f, 17.223f, 18.921f, 19.963f, 21.450f, - 22.536f, 23.337f, 24.443f, 24.625f, 24.667f, 24.702f, 24.721f, 25.010f, 25.567f, 25.861f, - 26.208f, 28.909f, 27.200f, 27.420f, 26.158f, 26.001f, 29.363f, 24.284f, 23.012f, 21.939f, - 21.455f, 20.264f, 18.884f, 17.746f, 17.325f, 16.757f, 16.168f, 16.059f, 16.149f, 15.743f, - 15.218f, 14.552f, 13.856f, 13.629f, 13.083f, 12.233f, 11.619f, 11.123f, 11.454f, 11.134f, - 11.679f, 12.389f, 10.765f, 9.649f, 10.241f, 8.084f, 9.648f, 9.772f, 8.994f, 9.376f, - 8.965f, 8.268f, 7.889f, 6.980f, 4.451f, 7.464f, 3.034f, 1.034f, -0.464f, -2.532f, - -5.337f, -8.078f, -9.898f,-11.280f,-12.671f,-13.334f,-13.566f,-12.824f,-12.256f,-11.590f, --10.896f,-10.157f, -8.684f, -7.109f, -5.258f, -3.296f, -0.917f, 1.480f, 3.849f, 5.682f, - 5.494f, -1.535f, 1.591f, 12.526f, 9.878f, 9.224f, 9.670f, 11.759f, 10.607f, 10.141f, - 9.151f, 7.938f, 6.530f, 6.318f, 5.306f, 4.407f, 3.528f, 2.173f, 0.576f, 1.079f, - 0.787f, 1.529f, 0.319f, -0.285f, 2.392f, 2.674f, 0.729f, 1.556f, 2.721f, 2.408f, - 2.677f, 3.052f, 3.841f, 4.883f, 7.287f, 9.043f, 9.962f, 10.565f, 11.118f, 12.877f, - 13.606f -},{ --29.534f,-30.001f,-28.760f,-31.563f,-34.724f,-39.420f,-44.447f,-46.517f,-49.199f,-51.072f, --52.492f,-54.708f,-56.820f,-58.104f,-59.287f,-63.046f,-65.498f,-65.753f,-65.498f,-65.093f, --63.471f,-60.300f,-57.698f,-55.381f,-52.867f,-50.423f,-48.029f,-46.129f,-44.709f,-43.412f, --42.550f,-41.085f,-39.040f,-36.683f,-34.449f,-31.844f,-29.421f,-26.669f,-23.625f,-21.212f, --18.942f,-16.452f,-14.028f,-11.703f, -9.364f, -6.824f, -4.233f, -0.709f, 1.620f, 4.322f, - 5.962f, 7.767f, 11.886f, 12.791f, 14.180f, 15.641f, 16.220f, 17.598f, 18.691f, 19.390f, - 20.527f, 21.362f, 21.812f, 21.516f, 21.544f, 21.770f, 22.188f, 22.643f, 22.887f, 22.938f, - 23.238f, 24.748f, 24.913f, 23.869f, 22.749f, 22.523f, 23.556f, 21.463f, 20.494f, 20.408f, - 19.877f, 18.856f, 17.923f, 16.583f, 16.775f, 16.807f, 16.640f, 16.367f, 16.419f, 14.855f, - 14.624f, 14.270f, 14.320f, 13.566f, 13.174f, 12.452f, 12.074f, 11.794f, 12.288f, 11.642f, - 11.979f, 11.787f, 11.546f, 10.420f, 10.513f, 9.681f, 9.901f, 9.702f, 9.811f, 9.934f, - 8.852f, 8.965f, 8.422f, 7.040f, 5.560f, 6.138f, 5.272f, 1.695f, 0.366f, -2.379f, - -5.507f, -8.036f,-10.020f,-11.366f,-12.507f,-13.247f,-13.619f,-13.021f,-12.222f,-11.311f, --10.612f, -9.893f, -8.568f, -6.945f, -4.673f, -2.906f, -0.752f, 1.341f, 3.903f, 5.965f, - 6.550f, 2.120f, -2.052f, 13.938f, 10.879f, 10.333f, 11.579f, 11.974f, 10.890f, 10.752f, - 9.732f, 8.451f, 6.910f, 6.529f, 5.281f, 4.308f, 3.665f, 1.995f, 0.599f, 1.046f, - 0.756f, 1.306f, 0.424f, -0.200f, 2.704f, 2.304f, 1.116f, 2.065f, 3.255f, 2.352f, - 2.756f, 3.042f, 3.830f, 4.967f, 7.346f, 9.151f, 9.998f, 10.569f, 11.124f, 12.879f, - 13.606f -},{ --29.534f,-29.999f,-28.696f,-31.514f,-34.867f,-39.795f,-44.557f,-46.458f,-49.132f,-50.916f, --52.450f,-54.724f,-56.712f,-58.238f,-59.030f,-63.281f,-65.051f,-65.579f,-65.140f,-64.146f, --63.427f,-59.741f,-57.625f,-55.194f,-52.756f,-50.305f,-47.732f,-45.784f,-44.377f,-42.973f, --42.086f,-40.584f,-38.419f,-36.388f,-34.031f,-31.389f,-29.104f,-26.353f,-23.836f,-21.275f, --18.805f,-16.403f,-14.033f,-11.918f, -9.621f, -7.619f, -4.631f, -2.159f, 0.577f, 3.190f, - 5.485f, 9.603f, 12.152f, 11.671f, 13.666f, 14.462f, 15.522f, 15.907f, 16.718f, 17.480f, - 18.629f, 19.169f, 19.191f, 19.103f, 19.580f, 19.419f, 19.649f, 19.899f, 20.548f, 20.290f, - 21.093f, 20.970f, 21.162f, 20.172f, 19.884f, 19.891f, 19.473f, 19.341f, 18.350f, 18.546f, - 18.306f, 17.422f, 17.195f, 16.814f, 16.870f, 16.902f, 16.701f, 16.297f, 15.494f, 14.319f, - 14.752f, 14.425f, 13.939f, 13.678f, 13.630f, 13.114f, 12.844f, 12.165f, 12.251f, 12.274f, - 12.247f, 11.941f, 11.831f, 11.591f, 11.036f, 10.393f, 10.315f, 10.141f, 8.766f, 8.979f, - 9.479f, 9.188f, 8.918f, 6.557f, 7.289f, 14.278f, 4.606f, 2.239f, 0.845f, -2.383f, - -5.767f, -8.121f,-10.111f,-11.273f,-12.235f,-13.244f,-13.850f,-13.003f,-12.203f,-11.409f, --10.830f,-10.027f, -8.577f, -6.906f, -4.545f, -2.735f, -0.394f, 2.038f, 4.099f, 6.167f, - 7.376f, 5.491f, -2.751f, 13.531f, 12.593f, 12.166f, 12.796f, 12.168f, 11.525f, 11.455f, - 10.493f, 9.223f, 7.745f, 6.664f, 5.250f, 4.882f, 4.071f, 2.074f, 0.577f, 0.867f, - 0.936f, 0.907f, 0.247f, -0.249f, 2.412f, 1.742f, 1.371f, 2.317f, 3.686f, 2.487f, - 2.791f, 3.005f, 3.816f, 5.064f, 7.400f, 9.260f, 10.014f, 10.577f, 11.137f, 12.882f, - 13.606f -},{ --29.534f,-29.997f,-28.640f,-31.456f,-35.014f,-40.257f,-44.617f,-46.369f,-49.072f,-50.748f, --52.505f,-54.955f,-56.436f,-58.442f,-58.685f,-63.369f,-65.128f,-65.410f,-65.138f,-63.899f, --62.770f,-59.617f,-57.513f,-55.164f,-52.481f,-50.166f,-47.581f,-45.368f,-43.936f,-42.785f, --41.450f,-39.778f,-37.869f,-36.017f,-33.201f,-31.032f,-28.856f,-26.153f,-23.840f,-21.147f, --18.581f,-16.099f,-14.109f,-12.078f,-10.253f, -8.038f, -5.249f, -2.479f, 0.391f, 2.453f, - 4.779f, 8.322f, 8.911f, 11.225f, 12.189f, 12.918f, 13.615f, 14.353f, 15.034f, 15.682f, - 16.451f, 17.089f, 17.196f, 17.470f, 17.278f, 16.956f, 17.218f, 17.618f, 17.890f, 17.501f, - 17.841f, 17.860f, 17.657f, 17.385f, 17.031f, 17.225f, 17.016f, 17.043f, 16.895f, 16.836f, - 17.248f, 16.759f, 16.860f, 16.671f, 17.500f, 17.006f, 16.237f, 15.845f, 15.298f, 15.740f, - 14.615f, 14.283f, 13.999f, 13.909f, 13.498f, 13.117f, 13.183f, 13.278f, 12.805f, 13.164f, - 12.675f, 12.554f, 12.348f, 11.619f, 10.965f, 11.008f, 9.456f, 9.434f, 9.083f, 8.656f, - 8.974f, 9.694f, 8.804f, 6.073f, 12.246f, 7.444f, 3.026f, 2.862f, 0.583f, -2.528f, - -5.534f, -8.190f,-10.013f,-11.182f,-11.845f,-13.177f,-13.821f,-13.117f,-12.355f,-11.676f, --10.894f, -9.816f, -8.199f, -6.886f, -4.742f, -2.641f, -0.434f, 1.764f, 4.314f, 6.573f, - 8.040f, 7.551f, -0.422f, 9.942f, 15.037f, 13.905f, 12.973f, 12.983f, 12.043f, 11.807f, - 11.396f, 9.913f, 8.485f, 6.815f, 5.358f, 5.672f, 4.429f, 2.175f, 0.816f, 0.914f, - 0.934f, 0.528f, -0.010f, -0.274f, 1.664f, 1.136f, 1.460f, 2.394f, 3.887f, 2.733f, - 2.672f, 2.937f, 3.782f, 5.159f, 7.458f, 9.362f, 10.013f, 10.590f, 11.157f, 12.885f, - 13.606f -},{ --29.534f,-29.997f,-28.590f,-31.393f,-35.162f,-40.728f,-44.605f,-46.286f,-49.030f,-50.619f, --52.612f,-55.151f,-56.149f,-58.689f,-58.708f,-63.232f,-65.443f,-65.406f,-65.165f,-64.068f, --62.015f,-59.576f,-57.319f,-54.806f,-52.426f,-49.934f,-47.499f,-44.868f,-43.321f,-42.407f, --40.845f,-39.322f,-37.409f,-35.312f,-32.635f,-30.871f,-28.381f,-25.957f,-23.492f,-21.120f, --18.552f,-16.218f,-14.180f,-12.264f,-10.306f, -8.317f, -5.548f, -2.583f, 0.061f, 2.349f, - 5.946f, 5.897f, 8.078f, 9.967f, 10.778f, 11.571f, 12.112f, 12.412f, 13.064f, 13.880f, - 14.902f, 15.090f, 15.165f, 15.176f, 15.192f, 15.218f, 15.470f, 15.699f, 15.442f, 15.548f, - 15.811f, 15.822f, 15.684f, 15.697f, 15.720f, 15.437f, 15.642f, 15.458f, 15.410f, 16.646f, - 15.843f, 15.944f, 16.576f, 16.845f, 16.701f, 16.819f, 16.847f, 15.783f, 15.229f, 14.891f, - 14.374f, 14.657f, 14.207f, 13.892f, 13.720f, 14.072f, 14.138f, 13.498f, 13.089f, 13.434f, - 13.280f, 13.343f, 12.370f, 11.692f, 11.208f, 9.788f, 9.576f, 9.011f, 8.297f, 8.232f, - 8.691f, 9.314f, 8.581f, 6.764f, 14.056f, 3.079f, 3.716f, 2.688f, 0.220f, -2.802f, - -5.694f, -8.060f, -9.946f,-11.025f,-11.999f,-13.084f,-13.286f,-13.190f,-12.264f,-11.671f, --11.017f, -9.510f, -8.228f, -6.802f, -4.645f, -2.510f, -0.525f, 1.851f, 4.357f, 6.663f, - 8.493f, 8.771f, 2.441f, 3.704f, 17.563f, 14.269f, 13.692f, 13.435f, 12.896f, 12.495f, - 11.787f, 10.516f, 9.000f, 7.167f, 5.890f, 6.309f, 4.894f, 2.235f, 1.145f, 0.899f, - 0.628f, 0.165f, -0.074f, -0.206f, 0.953f, 0.614f, 1.449f, 2.476f, 3.852f, 2.907f, - 2.346f, 2.853f, 3.725f, 5.242f, 7.531f, 9.453f, 9.998f, 10.610f, 11.184f, 12.889f, - 13.606f -},{ --29.534f,-29.997f,-28.548f,-31.332f,-35.311f,-41.138f,-44.525f,-46.238f,-48.995f,-50.543f, --52.697f,-55.017f,-56.011f,-58.892f,-59.536f,-63.317f,-65.353f,-65.333f,-64.767f,-63.800f, --61.656f,-59.360f,-57.113f,-54.418f,-52.427f,-49.729f,-47.223f,-44.559f,-42.838f,-42.001f, --40.405f,-38.815f,-36.816f,-34.662f,-32.251f,-30.497f,-28.039f,-25.550f,-23.185f,-21.094f, --18.356f,-16.107f,-14.155f,-11.956f,-10.482f, -8.553f, -5.608f, -2.705f, -0.937f, 3.910f, - 2.689f, 5.801f, 7.188f, 8.161f, 9.398f, 10.354f, 10.586f, 11.160f, 11.658f, 12.136f, - 13.523f, 13.599f, 13.397f, 13.375f, 13.557f, 13.805f, 14.182f, 14.142f, 13.642f, 14.107f, - 14.545f, 13.548f, 14.237f, 14.117f, 13.654f, 13.749f, 14.213f, 13.691f, 14.781f, 14.603f, - 14.939f, 15.204f, 16.291f, 16.234f, 16.103f, 16.966f, 17.106f, 15.492f, 15.030f, 14.487f, - 15.143f, 14.968f, 14.630f, 14.866f, 14.027f, 14.465f, 14.240f, 14.011f, 13.103f, 13.314f, - 14.819f, 13.063f, 11.845f, 11.122f, 10.022f, 9.560f, 9.252f, 8.348f, 7.707f, 7.984f, - 8.613f, 9.156f, 8.676f, 8.382f, 9.571f, 3.933f, 4.162f, 2.581f, -0.223f, -3.281f, - -5.973f, -8.320f, -9.728f,-10.927f,-12.115f,-13.120f,-13.099f,-12.961f,-12.175f,-11.606f, --11.350f, -9.948f, -8.613f, -7.189f, -4.850f, -2.798f, -0.541f, 1.805f, 4.186f, 6.646f, - 8.610f, 9.708f, 5.775f, 0.037f, 17.655f, 15.527f, 14.288f, 14.052f, 13.610f, 12.832f, - 11.887f, 10.994f, 9.666f, 7.774f, 6.395f, 6.706f, 5.090f, 2.521f, 1.372f, 0.831f, - 0.296f, -0.104f, -0.038f, -0.156f, 0.575f, 0.113f, 1.182f, 2.519f, 3.627f, 2.890f, - 1.873f, 2.765f, 3.661f, 5.310f, 7.629f, 9.527f, 9.972f, 10.637f, 11.219f, 12.892f, - 13.606f -},{ --29.534f,-29.999f,-28.514f,-31.281f,-35.459f,-41.436f,-44.406f,-46.234f,-48.942f,-50.500f, --52.714f,-54.493f,-56.053f,-58.902f,-60.873f,-63.862f,-64.865f,-65.068f,-64.309f,-63.343f, --61.659f,-59.038f,-56.649f,-54.276f,-52.141f,-49.484f,-46.981f,-44.145f,-42.416f,-41.442f, --39.789f,-38.258f,-36.057f,-33.900f,-32.049f,-29.966f,-27.679f,-25.186f,-23.088f,-20.930f, --18.355f,-15.838f,-14.004f,-12.017f,-10.648f, -8.439f, -5.565f, -3.226f, 0.115f, 1.915f, - 3.090f, 4.965f, 6.351f, 7.469f, 8.507f, 9.004f, 9.270f, 9.995f, 10.819f, 11.424f, - 11.776f, 11.729f, 12.185f, 12.000f, 11.849f, 12.010f, 12.353f, 12.618f, 12.550f, 13.518f, - 13.131f, 12.427f, 13.297f, 12.081f, 12.392f, 12.892f, 12.806f, 13.316f, 14.439f, 14.766f, - 15.501f, 14.988f, 14.935f, 15.017f, 15.914f, 16.460f, 16.573f, 15.242f, 15.090f, 15.010f, - 15.902f, 15.114f, 15.291f, 14.817f, 14.947f, 15.261f, 15.251f, 14.404f, 14.538f, 13.443f, - 13.388f, 12.909f, 10.910f, 10.512f, 9.540f, 8.752f, 8.295f, 7.944f, 7.741f, 7.864f, - 8.757f, 9.080f, 8.335f, 10.019f, 6.925f, 3.983f, 3.646f, 1.650f, -0.926f, -3.896f, - -6.464f, -8.256f, -9.470f,-10.891f,-12.482f,-13.176f,-13.332f,-13.222f,-12.245f,-11.906f, --11.453f,-10.466f, -8.845f, -7.512f, -5.238f, -3.107f, -0.469f, 1.729f, 4.096f, 6.511f, - 8.728f, 10.151f, 8.211f, 0.443f, 16.218f, 16.533f, 14.706f, 14.568f, 14.098f, 13.422f, - 12.096f, 11.329f, 10.394f, 8.633f, 6.845f, 6.806f, 5.257f, 3.079f, 1.986f, 1.372f, - 0.098f, -0.131f, 0.080f, -0.180f, 0.413f, -0.484f, 0.444f, 2.295f, 3.252f, 2.723f, - 1.398f, 2.667f, 3.617f, 5.365f, 7.757f, 9.582f, 9.940f, 10.671f, 11.262f, 12.897f, - 13.606f -},{ --29.534f,-30.001f,-28.489f,-31.246f,-35.609f,-41.603f,-44.284f,-46.263f,-48.853f,-50.461f, --52.677f,-53.809f,-56.132f,-58.597f,-61.891f,-64.425f,-64.530f,-64.853f,-64.167f,-63.174f, --61.799f,-58.915f,-56.111f,-54.146f,-51.927f,-49.352f,-46.884f,-43.816f,-42.178f,-40.745f, --39.186f,-37.487f,-35.212f,-33.257f,-31.310f,-29.515f,-27.170f,-24.903f,-22.888f,-20.535f, --18.449f,-16.124f,-13.790f,-12.196f,-10.457f, -8.303f, -5.456f, -3.323f, -0.136f, 0.374f, - 2.640f, 4.197f, 5.185f, 6.096f, 6.942f, 7.700f, 7.973f, 8.859f, 9.588f, 10.012f, - 10.160f, 10.191f, 10.386f, 10.224f, 10.104f, 10.416f, 11.134f, 11.797f, 12.162f, 12.284f, - 12.307f, 11.637f, 13.415f, 11.675f, 11.584f, 11.823f, 12.582f, 13.776f, 14.137f, 14.984f, - 15.160f, 14.781f, 14.564f, 14.406f, 14.876f, 16.287f, 15.604f, 15.178f, 14.959f, 14.825f, - 15.523f, 15.605f, 15.764f, 15.526f, 16.270f, 15.927f, 15.140f, 13.802f, 14.328f, 13.743f, - 12.890f, 11.766f, 10.254f, 9.543f, 8.505f, 8.041f, 7.627f, 6.987f, 7.246f, 7.590f, - 8.591f, 8.804f, 7.876f, 10.649f, 4.725f, 3.791f, 2.883f, 1.110f, -1.526f, -4.470f, - -6.811f, -8.498f, -8.932f,-11.209f,-12.867f,-13.612f,-13.846f,-13.661f,-12.714f,-12.524f, --11.978f,-11.076f, -9.501f, -8.008f, -5.702f, -3.171f, -0.315f, 1.855f, 3.897f, 6.234f, - 8.430f, 10.431f, 9.685f, 2.178f, 12.575f, 16.692f, 15.000f, 14.895f, 14.500f, 13.942f, - 12.883f, 11.781f, 10.852f, 9.546f, 7.453f, 7.198f, 5.577f, 3.599f, 2.890f, 2.435f, - -0.156f, -0.080f, 0.371f, -0.340f, 0.150f, -1.065f, -0.559f, 1.739f, 2.772f, 2.530f, - 1.051f, 2.535f, 3.614f, 5.410f, 7.908f, 9.621f, 9.904f, 10.710f, 11.310f, 12.902f, - 13.606f -},{ --29.534f,-30.005f,-28.473f,-31.233f,-35.765f,-41.651f,-44.193f,-46.300f,-48.732f,-50.412f, --52.614f,-53.286f,-56.028f,-58.033f,-62.222f,-64.479f,-64.565f,-64.759f,-64.000f,-62.969f, --61.818f,-59.012f,-55.793f,-53.885f,-51.821f,-49.234f,-46.553f,-43.656f,-41.628f,-40.104f, --38.632f,-36.740f,-34.500f,-32.598f,-30.446f,-28.901f,-26.635f,-24.520f,-22.451f,-20.296f, --18.047f,-16.145f,-13.918f,-12.233f,-10.367f, -8.209f, -5.589f, -2.865f, -1.700f, 0.326f, - 1.878f, 3.376f, 4.356f, 5.502f, 6.011f, 6.322f, 6.940f, 7.666f, 8.268f, 8.380f, - 8.551f, 8.644f, 8.736f, 8.802f, 8.993f, 9.914f, 10.914f, 11.302f, 11.260f, 11.710f, - 11.269f, 11.046f, 11.498f, 11.322f, 10.670f, 10.509f, 11.718f, 13.173f, 14.438f, 14.682f, - 13.987f, 13.077f, 14.165f, 13.788f, 14.756f, 14.869f, 15.133f, 14.939f, 14.418f, 14.791f, - 15.915f, 15.846f, 15.321f, 16.396f, 16.865f, 15.882f, 15.860f, 14.896f, 13.795f, 12.894f, - 12.491f, 10.783f, 9.732f, 8.488f, 7.538f, 7.126f, 6.974f, 6.368f, 6.597f, 7.277f, - 8.253f, 8.088f, 7.397f, 12.384f, 4.865f, 3.786f, 2.673f, 0.463f, -1.964f, -4.362f, - -6.938f, -8.556f, -9.935f,-11.871f,-13.244f,-13.923f,-14.287f,-14.204f,-13.358f,-13.027f, --12.278f,-11.100f, -9.981f, -8.090f, -5.871f, -3.367f, -0.529f, 1.703f, 3.672f, 5.730f, - 8.099f, 10.464f, 10.756f, 4.362f, 8.328f, 17.346f, 15.273f, 15.056f, 15.326f, 14.884f, - 13.431f, 12.261f, 11.345f, 10.506f, 8.305f, 7.640f, 5.933f, 4.142f, 3.599f, 3.438f, - -0.522f, -0.313f, 0.578f, -0.638f, -0.436f, -1.400f, -1.244f, 1.095f, 2.239f, 2.350f, - 0.866f, 2.346f, 3.661f, 5.445f, 8.069f, 9.645f, 9.869f, 10.755f, 11.365f, 12.907f, - 13.606f -},{ --29.534f,-30.009f,-28.466f,-31.247f,-35.928f,-41.621f,-44.152f,-46.319f,-48.607f,-50.360f, --52.531f,-53.087f,-55.636f,-57.439f,-62.307f,-64.127f,-64.655f,-64.559f,-63.612f,-62.521f, --61.649f,-58.990f,-55.670f,-53.713f,-51.740f,-48.987f,-46.242f,-43.322f,-41.344f,-39.621f, --37.890f,-35.961f,-33.880f,-31.969f,-29.983f,-28.068f,-26.072f,-24.074f,-21.947f,-19.874f, --18.124f,-16.092f,-14.360f,-12.337f,-10.143f, -8.006f, -4.111f, -3.856f, -2.175f, -0.595f, - 1.188f, 2.940f, 4.321f, 4.897f, 5.061f, 5.429f, 6.261f, 6.763f, 6.968f, 6.908f, - 7.000f, 7.183f, 7.436f, 7.465f, 8.307f, 9.048f, 9.712f, 9.943f, 10.848f, 10.909f, - 10.228f, 10.461f, 10.379f, 9.954f, 10.190f, 9.769f, 10.399f, 11.696f, 12.642f, 12.250f, - 12.574f, 12.305f, 12.390f, 13.133f, 14.275f, 14.340f, 14.254f, 14.566f, 14.688f, 15.267f, - 15.603f, 15.934f, 15.959f, 16.671f, 15.867f, 16.538f, 16.757f, 15.252f, 13.498f, 12.845f, - 11.141f, 9.932f, 9.100f, 7.712f, 6.545f, 6.223f, 5.860f, 6.277f, 6.800f, 7.514f, - 7.861f, 7.185f, 7.611f, 7.473f, 4.462f, 3.516f, 2.292f, 0.278f, -2.505f, -5.553f, - -7.932f, -9.469f,-10.672f,-12.526f,-13.693f,-14.339f,-14.615f,-14.687f,-13.994f,-13.399f, --12.610f,-11.095f,-10.175f, -8.318f, -6.055f, -3.878f, -1.179f, 1.128f, 3.291f, 5.446f, - 7.644f, 10.350f, 11.341f, 6.671f, 7.172f, 17.659f, 15.663f, 14.851f, 15.427f, 15.139f, - 14.513f, 12.799f, 11.740f, 11.028f, 9.233f, 8.024f, 6.423f, 4.754f, 4.065f, 4.099f, - -0.742f, -0.846f, 0.442f, -0.792f, -1.390f, -1.544f, -1.285f, 0.605f, 1.678f, 2.069f, - 0.769f, 2.111f, 3.744f, 5.467f, 8.219f, 9.662f, 9.836f, 10.804f, 11.426f, 12.913f, - 13.606f -},{ --29.534f,-30.015f,-28.468f,-31.290f,-36.102f,-41.567f,-44.169f,-46.310f,-48.511f,-50.323f, --52.415f,-53.119f,-55.045f,-57.021f,-62.618f,-63.864f,-64.545f,-64.245f,-63.299f,-62.189f, --61.418f,-58.785f,-55.927f,-53.806f,-51.559f,-48.689f,-45.868f,-42.987f,-40.967f,-39.033f, --37.334f,-35.186f,-33.315f,-31.425f,-29.590f,-27.315f,-25.582f,-23.596f,-21.478f,-19.732f, --18.453f,-16.375f,-14.369f,-12.196f, -9.906f, -8.089f, -5.520f, -4.498f, -2.465f, -0.947f, - 0.935f, 2.619f, 3.895f, 4.021f, 3.902f, 4.791f, 5.282f, 5.611f, 5.825f, 5.727f, - 5.591f, 5.805f, 6.268f, 6.763f, 7.306f, 7.906f, 8.248f, 8.969f, 9.952f, 11.038f, - 9.328f, 10.440f, 8.893f, 9.351f, 9.184f, 9.000f, 9.137f, 9.529f, 10.315f, 10.760f, - 10.868f, 11.198f, 12.197f, 12.493f, 13.020f, 14.005f, 13.950f, 14.373f, 15.265f, 15.314f, - 16.312f, 16.111f, 16.739f, 16.788f, 16.883f, 16.339f, 15.812f, 15.250f, 14.126f, 11.550f, - 10.242f, 9.234f, 7.946f, 6.870f, 5.920f, 5.333f, 5.146f, 5.562f, 6.844f, 7.480f, - 7.547f, 6.429f, 14.262f, 4.126f, 3.643f, 3.271f, 1.704f, -0.608f, -3.404f, -6.560f, - -8.706f,-10.315f,-11.323f,-12.959f,-14.235f,-14.704f,-15.019f,-14.975f,-14.440f,-13.849f, --13.099f,-11.593f,-10.356f, -8.706f, -6.620f, -4.233f, -1.960f, 0.355f, 2.900f, 5.104f, - 7.369f, 10.006f, 11.373f, 8.912f, 7.743f, 17.103f, 16.934f, 14.329f, 15.425f, 15.360f, - 15.195f, 13.678f, 11.882f, 10.899f, 9.817f, 8.565f, 6.702f, 5.193f, 4.153f, 4.186f, - -0.723f, -1.246f, 0.161f, -0.694f, -2.636f, -1.824f, -0.954f, 0.225f, 1.078f, 1.527f, - 0.658f, 1.883f, 3.837f, 5.470f, 8.334f, 9.678f, 9.809f, 10.855f, 11.490f, 12.920f, - 13.606f -},{ --29.534f,-30.021f,-28.480f,-31.360f,-36.285f,-41.544f,-44.235f,-46.277f,-48.459f,-50.319f, --52.277f,-53.167f,-54.444f,-56.778f,-63.010f,-63.878f,-64.316f,-64.020f,-63.095f,-62.036f, --61.054f,-58.531f,-56.223f,-53.673f,-51.103f,-48.573f,-45.439f,-42.807f,-40.330f,-38.518f, --36.717f,-34.569f,-32.616f,-30.706f,-29.005f,-26.928f,-25.156f,-23.095f,-21.026f,-20.449f, --18.113f,-16.451f,-14.466f,-11.998f, -9.843f, -7.650f, -6.674f, -4.328f, -2.630f, -1.143f, - 0.784f, 2.382f, 3.121f, 3.066f, 3.144f, 3.433f, 4.003f, 4.522f, 4.429f, 4.142f, - 4.236f, 4.461f, 4.829f, 5.417f, 6.045f, 6.588f, 6.677f, 7.535f, 8.564f, 8.745f, - 8.802f, 9.297f, 7.844f, 8.056f, 8.370f, 8.234f, 8.161f, 8.815f, 9.295f, 9.232f, - 9.670f, 9.483f, 10.443f, 11.596f, 12.215f, 13.409f, 14.281f, 14.470f, 15.386f, 15.473f, - 16.641f, 16.859f, 17.355f, 17.924f, 17.487f, 16.626f, 16.201f, 14.511f, 12.869f, 11.525f, - 9.761f, 8.298f, 7.531f, 6.038f, 5.022f, 4.500f, 4.495f, 5.499f, 6.946f, 7.276f, - 6.597f, 6.071f, 10.866f, 4.229f, 3.695f, 2.769f, 0.862f, -1.835f, -4.803f, -7.513f, - -9.586f,-11.165f,-12.390f,-13.502f,-14.755f,-15.197f,-15.369f,-15.201f,-14.914f,-13.748f, --13.097f,-11.974f,-10.721f, -9.476f, -7.390f, -5.001f, -2.779f, -0.294f, 2.141f, 4.606f, - 7.123f, 9.551f, 10.988f, 10.478f, 7.889f, 15.502f, 16.344f, 14.563f, 15.362f, 15.355f, - 14.803f, 13.750f, 12.085f, 10.576f, 9.681f, 8.828f, 7.110f, 5.484f, 3.940f, 3.801f, - -0.666f, -1.196f, -0.107f, -0.935f, -3.945f, -2.402f, -0.740f, -0.207f, 0.480f, 0.715f, - 0.492f, 1.725f, 3.906f, 5.452f, 8.395f, 9.699f, 9.791f, 10.907f, 11.557f, 12.928f, - 13.606f -},{ --29.534f,-30.028f,-28.502f,-31.455f,-36.474f,-41.594f,-44.333f,-46.241f,-48.436f,-50.353f, --52.182f,-53.087f,-53.945f,-56.576f,-63.122f,-63.908f,-64.060f,-63.849f,-62.809f,-61.763f, --60.581f,-58.428f,-56.099f,-53.269f,-50.726f,-48.398f,-45.148f,-42.266f,-39.903f,-38.035f, --35.998f,-34.047f,-32.103f,-30.005f,-28.179f,-26.411f,-24.799f,-22.862f,-21.005f,-20.810f, --18.188f,-16.526f,-14.282f,-11.878f, -9.753f, -6.929f, -6.989f, -4.807f, -3.599f, -1.474f, - 0.147f, 1.346f, 1.858f, 1.868f, 1.718f, 2.200f, 2.724f, 3.035f, 2.955f, 3.040f, - 3.083f, 3.118f, 3.607f, 4.102f, 4.495f, 5.103f, 5.609f, 6.027f, 7.560f, 6.819f, - 9.629f, 7.585f, 7.428f, 7.227f, 7.285f, 7.307f, 7.427f, 8.007f, 8.011f, 8.028f, - 8.267f, 12.384f, 9.589f, 10.873f, 11.638f, 12.867f, 13.715f, 14.750f, 15.380f, 15.820f, - 16.411f, 17.205f, 18.362f, 17.158f, 17.298f, 16.171f, 15.287f, 13.499f, 12.138f, 11.248f, - 8.587f, 7.538f, 6.146f, 4.954f, 3.971f, 3.440f, 4.165f, 5.254f, 6.843f, 7.269f, - 5.368f, 12.054f, 6.970f, 2.983f, 3.761f, 2.258f, -0.197f, -3.227f, -6.090f, -8.644f, --10.566f,-11.992f,-13.260f,-14.239f,-15.020f,-15.623f,-15.660f,-15.778f,-15.474f,-14.762f, --13.346f,-12.286f,-11.258f,-10.083f, -7.990f, -5.710f, -3.530f, -1.021f, 1.407f, 4.025f, - 6.753f, 8.750f, 10.519f, 11.042f, 8.082f, 14.369f, 14.376f, 15.534f, 15.120f, 15.000f, - 14.665f, 13.656f, 12.202f, 10.959f, 9.695f, 8.595f, 7.475f, 5.782f, 4.072f, 3.315f, - -0.680f, -0.984f, -0.586f, -2.002f, -4.924f, -3.129f, -0.877f, -0.646f, 0.028f, -0.168f, - 0.310f, 1.673f, 3.929f, 5.418f, 8.394f, 9.730f, 9.784f, 10.960f, 11.626f, 12.937f, - 13.606f -},{ --29.534f,-30.037f,-28.533f,-31.568f,-36.662f,-41.733f,-44.441f,-46.216f,-48.397f,-50.408f, --52.205f,-52.909f,-53.552f,-56.343f,-63.008f,-63.726f,-63.745f,-63.565f,-62.528f,-61.399f, --60.397f,-58.533f,-55.876f,-52.943f,-50.486f,-47.995f,-44.996f,-41.825f,-39.570f,-37.379f, --35.332f,-33.379f,-31.476f,-29.606f,-27.381f,-25.910f,-24.295f,-22.494f,-21.983f,-20.127f, --18.320f,-16.317f,-13.925f,-11.922f, -9.746f, -7.877f, -6.721f, -5.343f, -3.578f, -1.460f, - -0.271f, 0.660f, 0.692f, 0.767f, 1.033f, 1.457f, 1.772f, 1.990f, 2.140f, 1.795f, - 2.042f, 2.187f, 2.182f, 2.366f, 3.099f, 3.588f, 4.421f, 4.626f, 4.861f, 6.303f, - 6.824f, 6.163f, 6.795f, 6.681f, 6.688f, 7.080f, 6.923f, 7.197f, 7.311f, 7.880f, - 7.983f, 8.688f, 9.515f, 10.574f, 11.770f, 12.685f, 13.999f, 14.580f, 14.840f, 15.763f, - 16.385f, 17.445f, 17.966f, 16.764f, 16.124f, 15.408f, 14.209f, 12.929f, 11.345f, 9.630f, - 8.024f, 6.448f, 5.249f, 3.825f, 2.835f, 2.699f, 3.726f, 4.796f, 5.600f, 6.118f, - 6.130f, 15.271f, 1.632f, 2.624f, 3.157f, 1.286f, -1.774f, -4.598f, -7.283f, -9.577f, --11.371f,-12.749f,-13.953f,-14.911f,-15.533f,-16.083f,-16.044f,-16.184f,-15.751f,-15.181f, --14.244f,-13.131f,-11.909f,-10.563f, -8.599f, -6.518f, -4.122f, -1.593f, 0.527f, 3.380f, - 6.079f, 7.904f, 10.010f, 11.369f, 8.359f, 13.154f, 13.069f, 15.050f, 15.169f, 15.285f, - 14.991f, 13.863f, 11.863f, 11.575f, 10.209f, 8.599f, 7.417f, 6.370f, 5.005f, 2.864f, - -0.666f, -1.060f, -1.342f, -3.376f, -5.340f, -3.840f, -1.344f, -0.902f, -0.151f, -0.862f, - 0.173f, 1.699f, 3.905f, 5.381f, 8.335f, 9.771f, 9.792f, 11.013f, 11.696f, 12.946f, - 13.606f -},{ --29.534f,-30.046f,-28.574f,-31.691f,-36.837f,-41.952f,-44.535f,-46.205f,-48.289f,-50.453f, --52.359f,-52.785f,-53.276f,-56.119f,-62.892f,-63.419f,-63.424f,-63.220f,-62.305f,-61.181f, --60.498f,-58.356f,-55.654f,-52.571f,-50.192f,-47.612f,-44.833f,-41.529f,-39.082f,-36.854f, --34.814f,-32.863f,-30.902f,-29.000f,-26.874f,-25.380f,-23.772f,-22.085f,-22.123f,-19.645f, --18.145f,-15.964f,-13.666f,-11.543f, -9.188f, -8.394f, -7.107f, -5.901f, -4.149f, -2.317f, - -0.757f, 0.046f, -0.257f, -0.209f, -0.115f, 0.370f, 1.065f, 1.145f, 1.084f, 1.238f, - 1.283f, 1.115f, 1.069f, 1.560f, 1.917f, 2.672f, 3.387f, 3.480f, 4.040f, 4.910f, - 5.211f, 5.086f, 5.708f, 6.217f, 6.647f, 6.234f, 6.361f, 6.678f, 6.652f, 6.908f, - 7.305f, 7.953f, 9.202f, 10.660f, 11.874f, 12.521f, 13.587f, 14.443f, 15.044f, 15.757f, - 16.625f, 16.294f, 16.306f, 15.965f, 15.349f, 14.983f, 13.334f, 11.842f, 10.098f, 8.585f, - 7.066f, 5.644f, 4.634f, 2.915f, 1.931f, 1.871f, 2.988f, 3.560f, 3.458f, 13.203f, - 18.149f, 9.833f, -0.706f, 2.682f, 2.397f, -0.141f, -3.321f, -6.006f, -8.386f,-10.472f, --12.115f,-13.173f,-14.127f,-15.119f,-15.899f,-16.329f,-16.697f,-16.996f,-16.735f,-15.891f, --14.756f,-13.770f,-12.564f,-11.176f, -9.378f, -7.454f, -4.932f, -2.433f, -0.217f, 2.638f, - 5.144f, 7.186f, 9.689f, 11.638f, 9.173f, 11.724f, 12.440f, 12.031f, 15.585f, 15.486f, - 15.041f, 13.979f, 12.308f, 11.582f, 10.430f, 9.101f, 7.668f, 7.154f, 6.470f, 2.605f, - -0.541f, -1.386f, -2.061f, -4.363f, -5.461f, -4.442f, -2.031f, -0.999f, -0.156f, -1.261f, - 0.092f, 1.730f, 3.848f, 5.361f, 8.232f, 9.822f, 9.816f, 11.066f, 11.765f, 12.957f, - 13.606f -},{ --29.534f,-30.056f,-28.622f,-31.815f,-36.986f,-42.221f,-44.595f,-46.184f,-48.078f,-50.450f, --52.547f,-52.837f,-53.213f,-55.935f,-62.548f,-63.150f,-63.216f,-62.934f,-61.962f,-61.043f, --60.358f,-57.774f,-55.363f,-52.313f,-49.905f,-47.198f,-44.534f,-41.161f,-38.606f,-36.410f, --34.239f,-32.341f,-30.257f,-28.333f,-26.528f,-24.915f,-23.404f,-22.549f,-21.285f,-19.604f, --17.989f,-15.493f,-13.390f,-11.825f, -9.928f, -8.468f, -7.214f, -6.036f, -4.723f, -3.134f, - -1.692f, -0.952f, -1.286f, -1.255f, -1.071f, -0.310f, 0.435f, 0.527f, 0.645f, 0.554f, - 0.544f, 0.257f, 0.236f, 0.348f, 1.242f, 1.863f, 2.063f, 2.503f, 3.566f, 3.836f, - 4.313f, 4.297f, 4.459f, 5.748f, 6.290f, 6.008f, 5.708f, 5.510f, 5.737f, 5.881f, - 7.011f, 7.976f, 9.235f, 10.041f, 11.107f, 12.167f, 13.703f, 13.973f, 14.900f, 15.549f, - 15.697f, 15.622f, 15.392f, 14.795f, 14.557f, 14.208f, 12.535f, 10.932f, 9.440f, 7.579f, - 6.153f, 4.913f, 3.664f, 2.294f, 0.960f, 0.796f, 1.436f, 1.802f, 1.324f, 7.873f, - 12.436f, -0.362f, -0.073f, 1.913f, 0.876f, -1.914f, -4.927f, -7.324f, -9.206f,-11.233f, --12.456f,-13.359f,-14.095f,-15.138f,-16.114f,-16.909f,-17.242f,-17.634f,-17.379f,-16.591f, --15.573f,-14.549f,-13.155f,-11.877f,-10.404f, -8.292f, -5.813f, -3.401f, -0.968f, 2.007f, - 4.543f, 6.698f, 9.389f, 11.480f, 10.347f, 9.941f, 13.289f, 11.683f, 14.507f, 15.333f, - 14.796f, 14.575f, 13.820f, 11.550f, 10.838f, 9.545f, 8.143f, 7.801f, 7.600f, 2.666f, - -0.329f, -1.726f, -2.494f, -5.144f, -5.728f, -4.714f, -2.718f, -1.248f, -0.328f, -1.475f, - 0.026f, 1.685f, 3.784f, 5.376f, 8.110f, 9.877f, 9.861f, 11.121f, 11.833f, 12.969f, - 13.606f -},{ --29.534f,-30.067f,-28.679f,-31.929f,-37.096f,-42.489f,-44.604f,-46.112f,-47.765f,-50.375f, --52.615f,-53.040f,-53.441f,-55.740f,-61.468f,-62.904f,-63.036f,-62.643f,-61.538f,-60.739f, --59.842f,-57.359f,-55.110f,-52.119f,-49.721f,-46.883f,-44.067f,-40.853f,-38.206f,-35.922f, --33.736f,-31.799f,-29.728f,-27.710f,-26.270f,-24.288f,-22.998f,-22.930f,-20.350f,-19.285f, --17.324f,-15.143f,-13.502f,-11.749f, -9.774f, -9.180f, -8.197f, -6.742f, -5.337f, -3.595f, - -2.286f, -1.906f, -2.338f, -2.045f, -1.550f, -1.195f, -0.474f, -0.262f, 0.207f, -0.064f, - -0.256f, -0.436f, -0.390f, -0.125f, 0.497f, 0.957f, 1.481f, 1.679f, 2.056f, 2.302f, - 2.792f, 3.372f, 4.559f, 5.393f, 5.756f, 5.707f, 4.919f, 4.398f, 4.779f, 5.720f, - 6.575f, 7.665f, 8.863f, 9.827f, 10.939f, 11.850f, 12.854f, 13.774f, 14.778f, 15.148f, - 14.931f, 15.158f, 14.105f, 14.150f, 13.867f, 13.001f, 11.745f, 10.144f, 8.470f, 6.733f, - 5.491f, 3.951f, 2.604f, 1.061f, -0.493f, -0.794f, -0.018f, 0.037f, -0.524f, -1.555f, - -1.837f, -1.941f, -0.577f, -0.188f, -1.675f, -4.304f, -6.541f, -8.500f,-10.136f,-11.737f, --12.706f,-13.450f,-14.102f,-15.342f,-16.706f,-17.640f,-18.290f,-18.428f,-17.898f,-17.384f, --16.433f,-15.233f,-13.837f,-12.478f,-11.415f, -9.091f, -6.693f, -4.445f, -1.725f, 1.234f, - 3.566f, 6.047f, 8.819f, 10.861f, 10.908f, 9.138f, 13.996f, 13.325f, 12.883f, 13.863f, - 14.385f, 14.659f, 15.555f, 12.245f, 11.682f, 9.873f, 8.561f, 8.369f, 7.719f, 2.863f, - -0.127f, -2.091f, -2.721f, -6.127f, -6.133f, -4.454f, -3.097f, -1.822f, -0.944f, -1.684f, - -0.069f, 1.538f, 3.734f, 5.432f, 7.994f, 9.930f, 9.928f, 11.179f, 11.898f, 12.981f, - 13.606f -},{ --29.534f,-30.079f,-28.743f,-32.024f,-37.150f,-42.705f,-44.553f,-45.946f,-47.389f,-50.225f, --52.462f,-53.211f,-53.828f,-55.496f,-59.673f,-62.609f,-62.671f,-62.276f,-61.185f,-60.198f, --59.198f,-57.123f,-54.832f,-51.739f,-49.595f,-46.659f,-43.471f,-40.651f,-37.902f,-35.470f, --33.199f,-31.241f,-29.235f,-27.288f,-25.766f,-24.008f,-23.085f,-22.078f,-20.279f,-18.947f, --16.743f,-14.886f,-13.460f,-12.001f,-11.047f, -9.576f, -8.503f, -7.422f, -5.825f, -3.921f, - -3.098f, -3.042f, -3.094f, -2.969f, -2.582f, -2.046f, -1.550f, -0.636f, -0.497f, -0.713f, - -0.846f, -1.193f, -1.037f, -0.828f, -0.309f, 0.044f, 0.173f, 0.837f, 0.990f, 1.052f, - 1.867f, 2.195f, 3.446f, 4.397f, 4.833f, 4.517f, 4.049f, 3.887f, 4.191f, 4.860f, - 6.203f, 7.315f, 8.815f, 9.390f, 10.494f, 11.838f, 12.421f, 13.782f, 14.222f, 14.342f, - 14.364f, 14.675f, 13.807f, 13.718f, 12.694f, 11.908f, 10.734f, 8.972f, 7.367f, 5.896f, - 4.507f, 2.954f, 1.524f, -0.080f, -1.762f, -2.193f, -1.643f, -1.406f, -1.578f, -2.485f, - -2.781f, -2.525f, -2.581f, -3.185f, -4.510f, -6.529f, -8.093f, -9.521f,-10.833f,-12.226f, --13.306f,-13.918f,-14.591f,-16.213f,-17.758f,-18.672f,-19.486f,-19.643f,-19.165f,-18.331f, --17.439f,-16.173f,-14.910f,-13.418f,-12.216f,-10.026f, -7.800f, -5.330f, -2.657f, 0.459f, - 2.613f, 5.093f, 8.160f, 10.085f, 10.916f, 10.252f, 10.837f, 14.446f, 12.511f, 12.085f, - 12.576f, 14.803f, 14.936f, 13.687f, 11.957f, 9.983f, 9.029f, 8.572f, 7.272f, 2.936f, - -0.135f, -2.458f, -3.188f, -7.061f, -6.307f, -3.923f, -3.076f, -2.447f, -1.889f, -1.932f, - -0.175f, 1.326f, 3.700f, 5.522f, 7.908f, 9.973f, 10.019f, 11.240f, 11.959f, 12.995f, - 13.606f -},{ --29.534f,-30.092f,-28.814f,-32.089f,-37.136f,-42.824f,-44.437f,-45.662f,-47.006f,-50.018f, --52.119f,-53.127f,-54.029f,-55.234f,-57.885f,-62.354f,-62.168f,-61.890f,-60.778f,-59.565f, --58.467f,-56.719f,-54.597f,-51.491f,-49.197f,-46.473f,-43.169f,-40.316f,-37.701f,-35.234f, --32.771f,-30.687f,-28.789f,-27.000f,-25.230f,-23.800f,-23.317f,-21.225f,-20.171f,-18.600f, --16.463f,-14.576f,-13.721f,-12.266f,-11.482f,-10.279f, -9.270f, -8.230f, -6.503f, -5.101f, - -4.242f, -4.278f, -4.102f, -3.862f, -3.284f, -2.812f, -2.291f, -1.577f, -1.545f, -1.299f, - -1.548f, -1.641f, -1.395f, -1.101f, -0.922f, -1.096f, -1.002f, -1.156f, -0.401f, 0.425f, - 0.790f, 2.350f, 2.744f, 5.364f, 5.086f, 3.442f, 3.336f, 3.083f, 3.197f, 4.711f, - 6.057f, 7.297f, 8.276f, 9.241f, 10.314f, 10.764f, 12.712f, 13.677f, 13.767f, 13.642f, - 14.019f, 14.068f, 13.788f, 12.342f, 11.577f, 10.774f, 9.717f, 7.847f, 6.429f, 5.046f, - 3.425f, 1.821f, 0.394f, -1.306f, -2.705f, -3.222f, -3.162f, -3.132f, -3.089f, -3.405f, - -3.842f, -4.317f, -5.020f, -5.963f, -7.092f, -8.264f, -9.368f,-10.657f,-11.552f,-12.637f, --13.954f,-14.648f,-15.640f,-17.156f,-18.936f,-19.788f,-20.248f,-20.129f,-19.667f,-19.306f, --18.331f,-16.800f,-15.792f,-14.392f,-12.920f,-11.027f, -8.739f, -6.273f, -3.503f, -0.576f, - 1.671f, 4.346f, 7.059f, 9.171f, 10.758f, 11.519f, 6.852f, 15.325f, 11.716f, 10.903f, - 9.219f, 10.679f, 11.894f, 15.889f, 11.952f, 10.257f, 9.513f, 8.547f, 7.336f, 2.869f, - -0.489f, -2.736f, -4.410f, -7.610f, -6.186f, -3.681f, -2.931f, -2.686f, -2.701f, -2.100f, - -0.231f, 1.127f, 3.665f, 5.625f, 7.867f, 10.001f, 10.134f, 11.306f, 12.016f, 13.010f, - 13.606f -},{ --29.534f,-30.105f,-28.889f,-32.119f,-37.045f,-42.817f,-44.261f,-45.270f,-46.668f,-49.785f, --51.729f,-52.678f,-53.753f,-54.975f,-56.712f,-62.232f,-61.765f,-61.484f,-60.244f,-59.016f, --57.747f,-56.292f,-54.280f,-51.295f,-48.699f,-46.319f,-43.028f,-39.857f,-37.402f,-34.996f, --32.581f,-30.256f,-28.224f,-26.612f,-24.769f,-23.455f,-23.013f,-21.001f,-19.791f,-18.019f, --16.330f,-14.630f,-14.119f,-12.966f,-11.756f,-10.863f, -9.750f, -8.906f, -7.129f, -5.879f, - -5.603f, -5.700f, -5.185f, -4.883f, -3.735f, -3.259f, -2.799f, -2.183f, -2.252f, -1.635f, - -1.706f, -1.576f, -1.011f, -1.274f, -1.619f, -2.219f, -2.291f, -0.807f, -1.186f, -0.416f, - -0.106f, 1.695f, 2.971f, 5.470f, 3.544f, 2.418f, 1.977f, 1.688f, 2.607f, 4.256f, - 5.464f, 6.992f, 7.562f, 7.697f, 9.627f, 10.770f, 12.131f, 12.738f, 12.807f, 12.875f, - 13.457f, 13.413f, 12.880f, 11.430f, 10.717f, 9.593f, 8.188f, 7.027f, 5.646f, 4.072f, - 2.323f, 0.384f, -0.821f, -2.245f, -3.404f, -3.824f, -4.345f, -4.316f, -4.610f, -5.187f, - -5.443f, -6.089f, -7.195f, -7.960f, -8.762f, -9.705f,-10.726f,-11.667f,-12.557f,-13.418f, --14.846f,-15.446f,-16.761f,-18.174f,-19.927f,-20.714f,-21.079f,-20.963f,-20.980f,-20.691f, --19.683f,-17.589f,-16.615f,-15.556f,-13.987f,-12.150f, -9.788f, -7.206f, -4.311f, -1.604f, - 0.727f, 3.352f, 6.590f, 8.267f, 10.467f, 11.675f, 6.230f, 14.007f, 12.612f, 10.205f, - 10.719f, 5.871f, 9.594f, 16.664f, 12.723f, 10.748f, 9.698f, 8.876f, 8.217f, 2.975f, - -0.985f, -3.072f, -6.176f, -7.956f, -6.097f, -3.875f, -2.985f, -2.510f, -2.994f, -2.070f, - -0.191f, 1.007f, 3.600f, 5.714f, 7.878f, 10.011f, 10.273f, 11.380f, 12.069f, 13.026f, - 13.606f -},{ --29.534f,-30.119f,-28.969f,-32.107f,-36.871f,-42.679f,-44.034f,-44.819f,-46.401f,-49.545f, --51.422f,-51.963f,-53.045f,-54.637f,-56.013f,-62.040f,-61.388f,-60.992f,-59.797f,-58.592f, --57.332f,-55.945f,-53.687f,-50.952f,-48.362f,-45.918f,-42.718f,-39.766f,-37.091f,-34.633f, --32.403f,-29.979f,-27.897f,-26.280f,-24.305f,-23.175f,-22.509f,-20.886f,-19.407f,-17.671f, --16.145f,-15.386f,-13.882f,-13.348f,-12.259f,-11.539f,-10.349f, -9.161f, -7.991f, -7.417f, - -6.922f, -6.691f, -6.268f, -5.550f, -4.295f, -3.805f, -3.156f, -2.985f, -2.873f, -1.894f, - -1.441f, -1.708f, -1.803f, -2.240f, -2.230f, -2.586f, -3.704f, -3.059f, -2.615f, -2.156f, - -0.868f, 0.559f, 3.471f, 3.024f, 1.975f, 1.247f, 2.650f, 0.841f, 2.419f, 3.473f, - 4.912f, 5.306f, 6.065f, 7.078f, 8.660f, 10.118f, 11.648f, 12.012f, 12.172f, 12.275f, - 12.727f, 12.345f, 11.553f, 10.425f, 9.897f, 8.636f, 7.153f, 6.133f, 4.735f, 2.751f, - 1.080f, -0.523f, -1.534f, -2.755f, -3.801f, -4.295f, -4.833f, -5.406f, -5.902f, -6.779f, - -6.966f, -7.880f, -8.789f, -9.367f,-10.080f,-11.023f,-12.040f,-12.712f,-13.619f,-14.675f, --15.841f,-16.480f,-18.105f,-19.730f,-20.997f,-21.737f,-21.724f,-22.126f,-22.160f,-21.503f, --20.774f,-18.587f,-17.656f,-16.684f,-15.122f,-13.273f,-10.969f, -8.273f, -5.265f, -2.586f, - -0.035f, 2.606f, 5.694f, 7.270f, 10.638f, 11.046f, 7.422f, 10.916f, 13.893f, 11.483f, - 13.464f, 8.159f, 11.089f, 15.457f, 13.592f, 10.782f, 9.346f, 9.220f, 9.153f, 3.334f, - -1.373f, -3.575f, -7.528f, -8.292f, -6.173f, -4.100f, -3.232f, -2.362f, -2.828f, -1.896f, - -0.090f, 0.980f, 3.484f, 5.768f, 7.938f, 10.001f, 10.433f, 11.461f, 12.117f, 13.044f, - 13.606f -},{ --29.534f,-30.134f,-29.051f,-32.053f,-36.613f,-42.424f,-43.770f,-44.381f,-46.200f,-49.299f, --51.218f,-51.222f,-52.276f,-54.121f,-55.308f,-61.381f,-60.672f,-60.425f,-59.480f,-58.214f, --57.058f,-55.456f,-53.072f,-50.554f,-47.832f,-45.422f,-42.323f,-39.636f,-36.827f,-34.349f, --32.191f,-29.789f,-27.679f,-25.896f,-23.983f,-23.017f,-21.786f,-20.487f,-19.033f,-17.503f, --16.015f,-16.001f,-13.568f,-13.746f,-12.686f,-11.923f,-10.943f, -9.960f, -8.831f, -8.309f, - -8.234f, -7.607f, -7.132f, -6.045f, -5.250f, -4.587f, -3.882f, -3.537f, -3.319f, -2.717f, - -2.171f, -2.670f, -2.995f, -3.262f, -3.174f, -4.091f, -4.041f, -3.876f, -3.717f, -3.003f, - -1.952f, -0.443f, 3.440f, 1.394f, 0.579f, 1.048f, 1.047f, 0.106f, 1.083f, 2.623f, - 3.551f, 4.605f, 5.079f, 5.890f, 7.443f, 9.304f, 10.856f, 11.169f, 11.519f, 11.572f, - 11.715f, 11.399f, 10.539f, 9.572f, 8.806f, 7.623f, 6.459f, 5.202f, 3.616f, 1.708f, - 0.168f, -1.221f, -2.405f, -3.558f, -4.424f, -5.075f, -5.786f, -6.597f, -7.225f, -7.856f, - -8.442f, -9.268f,-10.259f,-10.724f,-11.397f,-12.382f,-13.123f,-13.936f,-14.414f,-15.661f, --16.674f,-18.089f,-19.801f,-21.129f,-22.148f,-22.517f,-22.553f,-22.610f,-22.458f,-21.906f, --21.795f,-19.816f,-18.903f,-17.836f,-16.249f,-14.323f,-11.904f, -9.361f, -6.516f, -3.800f, - -0.905f, 1.813f, 4.946f, 6.342f, 10.222f, 9.484f, 8.335f, 8.310f, 13.205f, 12.870f, - 13.349f, 11.759f, 15.668f, 15.483f, 14.322f, 10.945f, 9.250f, 9.229f, 9.481f, 3.816f, - -1.643f, -4.043f, -8.005f, -8.425f, -6.114f, -4.070f, -3.459f, -2.636f, -2.616f, -1.788f, - -0.025f, 1.010f, 3.315f, 5.779f, 8.038f, 9.979f, 10.612f, 11.551f, 12.159f, 13.062f, - 13.606f -},{ --29.534f,-30.150f,-29.135f,-31.958f,-36.274f,-42.084f,-43.482f,-44.024f,-46.036f,-49.030f, --51.008f,-50.680f,-51.800f,-53.454f,-54.484f,-60.082f,-59.635f,-59.787f,-59.103f,-57.841f, --56.476f,-54.779f,-52.519f,-49.939f,-47.318f,-44.893f,-41.988f,-39.427f,-36.665f,-34.187f, --31.958f,-29.646f,-27.409f,-25.545f,-23.881f,-22.967f,-21.341f,-20.138f,-18.752f,-17.442f, --16.409f,-15.958f,-14.052f,-13.967f,-12.845f,-12.078f,-11.434f,-10.614f, -9.963f, -9.551f, - -8.870f, -8.137f, -7.404f, -6.507f, -6.277f, -5.589f, -4.439f, -3.909f, -3.537f, -3.419f, - -3.657f, -4.032f, -3.729f, -3.610f, -4.098f, -3.874f, -3.800f, -5.403f, -5.149f, -4.114f, - -3.350f, -2.136f, -0.141f, -0.563f, -1.269f, 2.210f, -0.882f, -0.486f, 0.478f, 1.668f, - 2.371f, 3.481f, 3.994f, 5.192f, 6.852f, 8.235f, 9.939f, 10.180f, 10.521f, 11.127f, - 11.118f, 10.553f, 9.560f, 8.715f, 7.270f, 6.306f, 5.160f, 3.870f, 2.181f, 0.818f, - -0.706f, -1.995f, -3.210f, -4.267f, -5.276f, -6.422f, -7.233f, -7.831f, -8.425f, -9.093f, - -9.965f,-10.734f,-11.113f,-12.132f,-12.914f,-13.667f,-14.363f,-15.110f,-15.355f,-16.588f, --17.432f,-19.614f,-21.105f,-22.519f,-23.107f,-23.206f,-23.782f,-24.018f,-23.590f,-23.139f, --22.345f,-20.999f,-20.183f,-18.785f,-17.306f,-15.134f,-12.881f,-10.354f, -7.696f, -4.943f, - -2.018f, 0.904f, 3.743f, 5.745f, 8.538f, 8.115f, 8.626f, 7.274f, 10.149f, 12.468f, - 13.363f, 13.557f, 18.170f, 16.314f, 15.168f, 11.331f, 9.528f, 8.787f, 9.312f, 4.762f, - -1.717f, -4.222f, -8.083f, -8.206f, -5.629f, -3.934f, -3.604f, -3.231f, -2.720f, -1.923f, - -0.078f, 1.042f, 3.115f, 5.755f, 8.165f, 9.951f, 10.806f, 11.649f, 12.197f, 13.082f, - 13.606f -},{ --29.534f,-30.166f,-29.220f,-31.826f,-35.862f,-41.699f,-43.179f,-43.794f,-45.872f,-48.726f, --50.663f,-50.407f,-51.629f,-52.768f,-53.733f,-58.284f,-58.839f,-59.003f,-58.629f,-57.436f, --55.773f,-54.127f,-52.014f,-49.272f,-46.866f,-44.231f,-41.789f,-39.140f,-36.484f,-34.085f, --31.642f,-29.410f,-27.315f,-25.211f,-23.558f,-22.953f,-20.880f,-19.946f,-18.675f,-17.118f, --17.055f,-15.416f,-14.920f,-14.086f,-13.578f,-12.724f,-11.714f,-11.336f,-10.646f,-10.359f, - -9.581f, -8.615f, -7.679f, -7.208f, -6.740f, -6.060f, -5.133f, -4.523f, -4.989f, -4.804f, - -4.731f, -4.642f, -4.169f, -4.107f, -3.316f, -5.255f, -5.311f, -6.644f, -6.160f, -5.325f, - -4.236f, -3.484f, -2.627f, -2.875f, 0.800f, 0.175f, -1.863f, -1.405f, -0.070f, 0.726f, - 1.579f, 2.212f, 3.105f, 4.280f, 5.808f, 7.783f, 8.928f, 9.102f, 9.654f, 10.430f, - 10.061f, 9.706f, 8.614f, 7.747f, 5.942f, 5.211f, 3.661f, 2.535f, 0.910f, -0.240f, - -1.608f, -2.933f, -4.313f, -5.158f, -6.447f, -7.645f, -8.401f, -9.088f, -9.562f,-10.403f, --11.325f,-12.426f,-12.973f,-13.850f,-14.188f,-14.967f,-15.462f,-16.142f,-16.481f,-17.467f, --18.459f,-21.174f,-22.522f,-23.653f,-23.970f,-24.463f,-24.721f,-25.334f,-24.623f,-24.104f, --23.775f,-22.073f,-21.393f,-19.797f,-18.205f,-15.969f,-13.665f,-11.437f, -8.669f, -6.066f, - -2.900f, -0.183f, 2.331f, 4.679f, 6.667f, 7.364f, 8.567f, 7.862f, 6.307f, 10.957f, - 12.437f, 15.509f, 18.245f, 16.709f, 14.701f, 11.598f, 9.516f, 7.922f, 8.877f, 6.070f, - -1.556f, -3.876f, -8.190f, -7.801f, -4.856f, -3.864f, -3.812f, -3.754f, -3.154f, -2.276f, - -0.250f, 1.039f, 2.919f, 5.711f, 8.305f, 9.930f, 11.008f, 11.755f, 12.231f, 13.103f, - 13.606f -},{ --29.534f,-30.183f,-29.303f,-31.665f,-35.390f,-41.308f,-42.867f,-43.687f,-45.684f,-48.392f, --50.155f,-50.323f,-51.468f,-52.113f,-52.999f,-56.183f,-58.553f,-58.185f,-58.069f,-56.917f, --55.382f,-53.572f,-51.595f,-48.683f,-46.122f,-43.706f,-41.534f,-38.859f,-36.409f,-33.909f, --31.417f,-29.300f,-27.244f,-25.046f,-23.194f,-22.520f,-20.523f,-19.661f,-18.608f,-17.391f, --16.751f,-16.182f,-15.290f,-14.291f,-13.649f,-13.013f,-12.217f,-11.790f,-11.433f,-10.889f, - -9.967f, -8.950f, -8.409f, -7.857f, -7.229f, -6.695f, -6.079f, -5.805f, -6.124f, -5.961f, - -5.650f, -5.100f, -4.701f, -4.014f, -4.610f, -5.027f, -6.407f, -7.222f, -6.381f, -6.197f, - -5.851f, -4.609f, -3.765f, -2.426f, -0.107f, -1.772f, -2.506f, -2.526f, -1.638f, -0.495f, - 0.312f, 1.086f, 2.170f, 3.648f, 5.380f, 6.688f, 7.545f, 8.041f, 8.693f, 9.239f, - 8.958f, 8.227f, 7.390f, 6.546f, 5.049f, 3.893f, 2.587f, 1.393f, -0.148f, -1.427f, - -2.621f, -4.105f, -5.282f, -6.223f, -7.341f, -8.770f, -9.687f,-10.437f,-11.073f,-12.098f, --12.849f,-13.904f,-14.712f,-15.565f,-15.614f,-16.068f,-16.542f,-17.054f,-17.725f,-18.544f, --19.765f,-22.894f,-23.841f,-24.738f,-25.102f,-25.504f,-25.566f,-26.193f,-26.285f,-25.506f, --24.901f,-23.224f,-22.194f,-20.685f,-19.034f,-16.914f,-14.682f,-12.546f, -9.780f, -7.231f, - -4.178f, -1.180f, 1.392f, 3.477f, 5.246f, 6.637f, 8.218f, 8.120f, 5.995f, 8.420f, - 11.930f, 17.075f, 16.728f, 17.119f, 13.548f, 11.991f, 9.235f, 7.294f, 8.363f, 6.870f, - -1.498f, -2.971f, -8.290f, -7.447f, -4.306f, -3.837f, -4.178f, -4.048f, -3.692f, -2.662f, - -0.469f, 0.998f, 2.759f, 5.665f, 8.441f, 9.929f, 11.213f, 11.868f, 12.261f, 13.125f, - 13.606f -},{ --29.534f,-30.200f,-29.385f,-31.484f,-34.873f,-40.943f,-42.545f,-43.661f,-45.470f,-48.046f, --49.588f,-50.318f,-51.081f,-51.358f,-51.942f,-54.031f,-58.282f,-57.607f,-57.317f,-56.312f, --55.043f,-53.003f,-51.045f,-47.958f,-45.499f,-43.316f,-41.041f,-38.567f,-36.164f,-33.715f, --31.240f,-29.007f,-27.082f,-25.066f,-22.868f,-22.057f,-20.142f,-19.242f,-18.225f,-17.861f, --16.497f,-16.460f,-15.572f,-14.825f,-13.670f,-13.430f,-12.418f,-12.175f,-11.714f,-11.017f, --10.351f, -9.468f, -9.391f, -8.445f, -7.864f, -7.619f, -7.284f, -7.074f, -7.134f, -6.978f, - -6.275f, -5.373f, -5.296f, -3.951f, -5.687f, -6.785f, -7.570f, -7.628f, -7.068f, -6.987f, - -5.771f, -5.973f, -4.487f, -3.148f, -1.774f, -2.767f, -3.030f, -3.274f, -2.355f, -1.537f, - -0.552f, 0.412f, 1.722f, 3.154f, 4.834f, 5.750f, 6.742f, 7.097f, 7.663f, 7.946f, - 7.634f, 6.932f, 6.383f, 5.267f, 3.942f, 2.861f, 1.479f, -0.003f, -1.339f, -2.708f, - -3.865f, -5.340f, -6.391f, -7.184f, -8.454f,-10.230f,-11.347f,-12.252f,-13.019f,-13.933f, --14.811f,-15.660f,-16.452f,-17.069f,-16.947f,-17.375f,-17.901f,-18.261f,-19.082f,-20.015f, --21.460f,-23.930f,-24.929f,-25.769f,-26.216f,-26.827f,-27.055f,-27.305f,-26.988f,-26.547f, --26.290f,-24.361f,-23.141f,-21.532f,-19.804f,-17.801f,-15.910f,-13.839f,-10.988f, -8.105f, - -5.263f, -2.512f, 0.476f, 2.404f, 4.211f, 5.556f, 7.509f, 7.920f, 7.095f, 6.802f, - 11.622f, 17.775f, 16.607f, 17.233f, 13.111f, 12.111f, 8.982f, 7.069f, 8.089f, 7.104f, - -1.711f, -2.227f, -8.363f, -7.282f, -4.431f, -3.976f, -4.650f, -4.329f, -4.143f, -2.920f, - -0.658f, 0.940f, 2.650f, 5.624f, 8.558f, 9.960f, 11.417f, 11.984f, 12.288f, 13.148f, - 13.606f -},{ --29.534f,-30.217f,-29.464f,-31.295f,-34.331f,-40.617f,-42.216f,-43.645f,-45.245f,-47.708f, --49.118f,-50.359f,-50.602f,-50.331f,-50.481f,-52.288f,-57.542f,-57.201f,-56.450f,-55.681f, --54.372f,-52.456f,-50.354f,-47.342f,-45.049f,-42.785f,-40.517f,-38.180f,-35.981f,-33.606f, --31.157f,-28.777f,-26.755f,-24.857f,-23.064f,-21.436f,-19.824f,-18.905f,-18.221f,-17.693f, --17.060f,-16.508f,-15.768f,-15.110f,-14.570f,-13.994f,-13.188f,-12.524f,-11.639f,-11.040f, --10.321f,-10.196f, -9.726f, -9.112f, -8.631f, -8.157f, -7.997f, -8.081f, -8.220f, -7.721f, - -7.007f, -6.059f, -4.383f, -5.217f, -6.766f, -7.805f, -8.390f, -8.141f, -7.747f, -7.802f, - -7.460f, -6.293f, -5.577f, -3.275f, -4.208f, -3.703f, -3.947f, -4.029f, -3.545f, -2.425f, - -1.379f, 0.144f, 1.729f, 2.920f, 4.203f, 4.823f, 5.587f, 5.778f, 6.482f, 6.566f, - 6.334f, 5.786f, 5.020f, 3.992f, 2.965f, 1.168f, 0.043f, -1.424f, -2.696f, -3.980f, - -5.149f, -6.446f, -7.512f, -8.532f, -9.695f,-11.678f,-12.706f,-13.667f,-14.757f,-15.533f, --16.546f,-17.431f,-17.866f,-18.471f,-18.593f,-18.593f,-19.166f,-19.611f,-20.540f,-21.633f, --22.878f,-24.816f,-26.026f,-26.994f,-27.405f,-27.882f,-28.814f,-29.064f,-28.920f,-28.098f, --27.510f,-25.415f,-24.149f,-22.309f,-20.801f,-18.920f,-17.041f,-15.073f,-12.332f, -9.368f, - -6.512f, -3.298f, -0.858f, 1.197f, 3.032f, 4.528f, 6.381f, 7.169f, 7.053f, 6.382f, - 11.053f, 17.659f, 18.466f, 16.335f, 12.765f, 11.911f, 8.896f, 6.900f, 7.828f, 7.104f, - -1.849f, -2.574f, -8.382f, -7.364f, -5.187f, -4.561f, -5.148f, -4.799f, -4.490f, -3.046f, - -0.802f, 0.883f, 2.586f, 5.581f, 8.643f, 10.029f, 11.614f, 12.102f, 12.312f, 13.173f, - 13.606f -},{ --29.534f,-30.235f,-29.538f,-31.109f,-33.785f,-40.331f,-41.884f,-43.574f,-45.035f,-47.382f, --48.820f,-50.477f,-50.417f,-49.050f,-48.967f,-51.246f,-56.569f,-56.576f,-55.714f,-54.933f, --53.567f,-51.906f,-49.663f,-46.904f,-44.590f,-42.220f,-40.349f,-37.929f,-35.811f,-33.343f, --30.962f,-28.552f,-26.584f,-24.897f,-22.719f,-20.781f,-19.500f,-18.777f,-18.422f,-16.778f, --17.775f,-16.846f,-16.142f,-15.426f,-15.186f,-14.459f,-13.654f,-12.737f,-11.874f,-11.184f, --10.917f,-10.550f,-10.225f, -9.640f, -9.134f, -8.565f, -8.862f, -8.892f, -8.800f, -8.187f, - -7.416f, -6.595f, -5.093f, -6.296f, -7.687f, -8.630f, -8.859f, -8.753f, -8.585f, -8.004f, - -7.910f, -6.910f, -6.539f, -4.236f, -4.772f, -4.858f, -5.138f, -4.348f, -4.085f, -3.059f, - -1.693f, -0.266f, 1.197f, 2.639f, 3.458f, 3.770f, 4.330f, 4.561f, 5.399f, 5.117f, - 4.881f, 4.506f, 3.636f, 2.527f, 1.803f, -0.165f, -1.326f, -2.917f, -4.248f, -5.522f, - -6.672f, -7.626f, -8.632f, -9.944f,-11.009f,-13.124f,-14.334f,-15.455f,-16.401f,-17.134f, --18.046f,-18.721f,-19.600f,-20.019f,-19.908f,-19.786f,-20.376f,-21.116f,-22.158f,-23.091f, --24.134f,-25.625f,-27.157f,-27.855f,-28.643f,-29.137f,-30.076f,-30.447f,-30.124f,-29.722f, --28.476f,-26.359f,-25.111f,-23.139f,-21.612f,-20.080f,-18.314f,-16.228f,-13.717f,-10.730f, - -7.674f, -4.737f, -2.326f, -0.226f, 1.466f, 3.382f, 5.587f, 6.366f, 6.506f, 6.242f, - 10.267f, 16.057f, 18.224f, 14.517f, 12.648f, 11.502f, 8.756f, 6.986f, 7.267f, 6.527f, - -1.818f, -3.887f, -8.208f, -7.622f, -6.080f, -5.528f, -5.640f, -5.331f, -4.790f, -3.154f, - -0.945f, 0.841f, 2.552f, 5.524f, 8.685f, 10.140f, 11.800f, 12.219f, 12.335f, 13.198f, - 13.606f -},{ --29.534f,-30.253f,-29.607f,-30.936f,-33.260f,-40.071f,-41.560f,-43.410f,-44.858f,-47.057f, --48.628f,-50.648f,-50.731f,-47.758f,-47.683f,-50.491f,-55.710f,-55.763f,-55.112f,-54.098f, --52.904f,-51.195f,-49.024f,-46.400f,-44.107f,-41.946f,-40.359f,-37.801f,-35.747f,-33.166f, --30.575f,-28.384f,-26.393f,-24.843f,-21.975f,-20.391f,-19.195f,-18.307f,-18.485f,-17.408f, --17.803f,-17.319f,-16.426f,-16.011f,-15.414f,-14.836f,-14.042f,-13.321f,-12.349f,-11.738f, --11.362f,-10.881f,-10.726f, -9.984f, -9.432f, -8.994f, -9.326f, -9.348f, -9.282f, -8.542f, - -7.672f, -7.078f, -6.392f, -7.403f, -8.873f, -9.472f, -9.396f, -9.034f, -9.002f, -8.887f, - -8.333f, -8.008f, -6.420f, -5.913f, -5.139f, -5.213f, -5.601f, -4.874f, -4.746f, -3.421f, - -2.078f, -0.837f, 0.341f, 1.926f, 2.644f, 3.065f, 3.144f, 3.574f, 4.342f, 3.639f, - 3.439f, 2.984f, 1.949f, 0.959f, 0.161f, -1.472f, -2.738f, -4.603f, -5.924f, -7.130f, - -8.066f, -8.966f,-10.087f,-11.361f,-12.273f,-14.274f,-15.789f,-17.361f,-18.368f,-19.166f, --19.698f,-20.203f,-20.960f,-21.075f,-21.068f,-21.161f,-21.852f,-22.622f,-23.731f,-24.734f, --25.449f,-26.603f,-28.007f,-28.531f,-29.488f,-30.397f,-31.042f,-31.438f,-31.375f,-31.191f, --29.816f,-27.297f,-25.926f,-24.144f,-22.520f,-21.247f,-19.565f,-17.551f,-14.836f,-12.018f, - -8.939f, -6.336f, -3.992f, -1.680f, 0.168f, 2.194f, 4.601f, 5.158f, 5.268f, 7.294f, - 10.502f, 14.875f, 16.794f, 13.144f, 12.355f, 10.850f, 8.676f, 7.261f, 6.558f, 5.381f, - -2.020f, -5.207f, -7.948f, -7.889f, -6.745f, -6.410f, -6.096f, -5.665f, -5.048f, -3.328f, - -1.133f, 0.824f, 2.536f, 5.436f, 8.679f, 10.287f, 11.973f, 12.333f, 12.359f, 13.224f, - 13.606f -},{ --29.534f,-30.272f,-29.669f,-30.787f,-32.784f,-39.814f,-41.264f,-43.156f,-44.716f,-46.726f, --48.392f,-50.728f,-51.253f,-46.730f,-46.514f,-49.376f,-54.695f,-55.211f,-54.461f,-53.368f, --52.298f,-50.521f,-48.528f,-46.054f,-43.453f,-41.957f,-40.043f,-37.641f,-35.565f,-32.829f, --30.368f,-28.301f,-26.199f,-24.368f,-21.440f,-19.980f,-18.755f,-17.924f,-18.142f,-18.432f, --17.828f,-17.051f,-16.692f,-16.447f,-15.720f,-14.889f,-14.341f,-13.704f,-12.935f,-12.162f, --11.568f,-11.218f,-10.766f,-10.061f, -9.506f, -9.441f, -9.744f, -9.691f, -9.522f, -8.624f, - -8.216f, -7.541f, -8.051f, -8.965f, -9.910f,-10.169f, -9.973f, -9.689f, -9.352f, -9.377f, - -9.060f, -8.378f, -7.264f, -7.009f, -5.346f, -5.733f, -5.796f, -5.228f, -4.633f, -3.595f, - -2.899f, -0.471f, 2.843f, 0.488f, 1.429f, 1.979f, 2.207f, 2.519f, 2.755f, 2.103f, - 2.082f, 1.267f, 0.281f, -0.205f, -1.270f, -2.949f, -4.574f, -6.222f, -7.700f, -8.790f, - -9.554f,-10.710f,-11.941f,-12.804f,-13.772f,-15.184f,-17.367f,-18.938f,-19.997f,-20.858f, --21.536f,-21.995f,-22.596f,-22.431f,-22.500f,-22.902f,-23.125f,-24.363f,-25.223f,-26.023f, --26.833f,-27.721f,-28.868f,-29.469f,-30.614f,-31.504f,-32.213f,-32.539f,-32.600f,-32.002f, --30.446f,-28.473f,-26.730f,-25.249f,-23.794f,-22.398f,-20.781f,-18.659f,-16.039f,-13.154f, --10.138f, -7.549f, -5.319f, -3.152f, -1.196f, 1.405f, 2.911f, 3.777f, 3.902f, 8.135f, - 10.449f, 16.592f, 14.831f, 12.449f, 11.574f, 10.708f, 8.761f, 7.258f, 5.621f, 4.213f, - -2.501f, -5.998f, -7.852f, -8.071f, -7.310f, -6.949f, -6.499f, -5.796f, -5.225f, -3.541f, - -1.355f, 0.842f, 2.539f, 5.313f, 8.626f, 10.463f, 12.133f, 12.440f, 12.383f, 13.251f, - 13.606f -},{ --29.534f,-30.290f,-29.725f,-30.668f,-32.381f,-39.539f,-41.012f,-42.852f,-44.583f,-46.401f, --48.016f,-50.517f,-51.359f,-46.041f,-45.290f,-48.025f,-53.179f,-54.890f,-53.732f,-52.660f, --51.588f,-50.045f,-48.071f,-45.906f,-43.234f,-41.923f,-39.578f,-37.568f,-35.335f,-32.594f, --30.231f,-28.100f,-26.139f,-23.391f,-20.930f,-19.510f,-18.119f,-18.225f,-18.090f,-18.542f, --17.431f,-17.005f,-16.823f,-16.644f,-15.692f,-15.025f,-14.503f,-13.984f,-13.357f,-12.465f, --12.035f,-11.464f,-10.876f,-10.189f, -9.744f, -9.646f, -9.959f, -9.939f, -9.754f, -9.206f, - -8.780f, -8.198f, -9.125f, -9.969f,-10.726f,-10.849f,-10.537f,-10.382f,-10.142f, -9.973f, - -8.976f, -9.100f, -8.431f, -7.318f, -6.302f, -6.722f, -6.822f, -5.893f, -4.877f, -3.835f, - -2.540f, 2.357f, 0.833f, -0.305f, 0.625f, 0.864f, 0.920f, 1.181f, 1.383f, 1.014f, - 0.676f, -0.453f, -1.038f, -1.694f, -2.920f, -4.319f, -6.375f, -7.966f, -9.442f,-10.595f, --11.405f,-12.425f,-13.452f,-14.453f,-15.498f,-16.504f,-19.074f,-20.537f,-21.834f,-22.468f, --22.822f,-23.244f,-23.948f,-24.012f,-24.007f,-24.668f,-24.796f,-25.934f,-26.834f,-27.295f, --28.113f,-28.753f,-29.750f,-30.458f,-31.555f,-32.526f,-33.245f,-33.987f,-33.427f,-32.898f, --31.466f,-29.266f,-27.660f,-26.177f,-25.024f,-23.638f,-21.879f,-19.755f,-17.208f,-14.310f, --11.536f, -8.839f, -6.701f, -4.532f, -2.145f, 0.394f, 1.666f, 2.619f, 2.822f, 7.431f, - 10.503f, 16.253f, 12.676f, 11.608f, 10.950f, 11.002f, 8.532f, 6.985f, 4.635f, 2.968f, - -2.948f, -6.382f, -7.834f, -8.192f, -7.965f, -7.358f, -6.878f, -5.991f, -5.327f, -3.712f, - -1.548f, 0.907f, 2.569f, 5.165f, 8.538f, 10.652f, 12.280f, 12.539f, 12.409f, 13.279f, - 13.606f -},{ --29.534f,-30.309f,-29.773f,-30.583f,-32.078f,-39.232f,-40.819f,-42.555f,-44.422f,-46.111f, --47.538f,-49.921f,-50.617f,-45.518f,-44.184f,-47.113f,-51.477f,-54.251f,-52.998f,-51.846f, --50.831f,-49.455f,-47.599f,-45.647f,-43.397f,-41.561f,-39.243f,-37.473f,-35.103f,-32.345f, --30.151f,-27.766f,-26.112f,-22.671f,-20.393f,-19.058f,-18.082f,-18.330f,-18.853f,-17.830f, --17.042f,-17.186f,-17.074f,-16.636f,-15.723f,-15.096f,-14.803f,-14.310f,-13.326f,-12.795f, --12.301f,-11.701f,-11.069f,-10.521f, -9.974f, -9.958f,-10.431f,-10.267f,-10.015f, -9.493f, - -9.306f, -9.861f,-10.524f,-10.819f,-11.411f,-11.422f,-11.113f,-10.930f, -9.512f,-10.042f, - -9.855f, -9.248f, -8.711f, -7.720f, -7.910f, -7.958f, -7.143f, -6.040f, -4.845f, -3.707f, - 0.706f, -1.519f, -1.489f, -0.308f, 0.158f, -0.136f, -0.279f, -0.065f, -0.081f, -0.267f, - -0.897f, -1.980f, -2.515f, -3.475f, -4.488f, -5.963f, -8.162f, -9.779f,-11.058f,-12.328f, --13.394f,-14.524f,-15.364f,-16.379f,-17.174f,-18.247f,-20.831f,-21.981f,-23.319f,-23.845f, --24.202f,-24.737f,-25.481f,-25.798f,-25.804f,-26.093f,-26.676f,-27.548f,-28.314f,-28.739f, --29.432f,-29.957f,-30.738f,-31.595f,-32.477f,-33.276f,-34.151f,-34.701f,-34.595f,-33.777f, --32.286f,-29.967f,-28.590f,-27.066f,-26.037f,-24.572f,-22.969f,-20.694f,-18.367f,-15.580f, --12.546f,-10.323f, -7.951f, -5.832f, -3.209f, -0.756f, 0.532f, 1.251f, 3.437f, 5.090f, - 11.501f, 13.397f, 11.698f, 10.744f, 10.301f, 10.679f, 7.798f, 5.975f, 3.853f, 0.977f, - -3.450f, -6.476f, -7.696f, -8.293f, -8.559f, -7.868f, -7.270f, -6.411f, -5.428f, -3.808f, - -1.647f, 1.017f, 2.635f, 5.016f, 8.427f, 10.838f, 12.417f, 12.629f, 12.438f, 13.308f, - 13.606f -},{ --29.534f,-30.327f,-29.813f,-30.534f,-31.894f,-38.891f,-40.685f,-42.313f,-44.192f,-45.871f, --47.098f,-49.045f,-49.176f,-44.927f,-43.459f,-46.622f,-50.134f,-53.244f,-52.277f,-51.151f, --50.078f,-48.691f,-47.126f,-45.248f,-43.120f,-41.092f,-39.182f,-37.192f,-34.625f,-32.243f, --29.939f,-27.357f,-25.835f,-22.180f,-20.015f,-18.584f,-17.924f,-18.413f,-19.516f,-18.190f, --17.463f,-17.213f,-17.284f,-16.730f,-16.168f,-15.455f,-14.995f,-14.180f,-13.564f,-13.102f, --12.339f,-11.872f,-11.212f,-10.757f,-10.257f,-10.253f,-10.556f,-10.622f,-10.297f,-10.075f, --10.040f,-10.714f,-11.290f,-11.718f,-11.918f,-11.736f,-11.520f,-11.320f,-10.462f,-10.214f, --10.002f,-10.066f, -9.053f, -8.875f, -8.861f, -9.124f, -7.656f, -6.781f, -5.445f, -4.006f, - -2.067f, -2.657f, -1.672f, -0.954f, -1.207f, -1.239f, -1.536f, -1.343f, -1.569f, -1.702f, - -2.423f, -3.540f, -4.048f, -5.011f, -6.204f, -7.904f, -9.755f,-11.198f,-12.649f,-13.955f, --15.096f,-16.420f,-17.505f,-18.170f,-18.711f,-20.114f,-22.335f,-23.395f,-24.745f,-25.336f, --25.892f,-26.592f,-27.250f,-27.419f,-27.573f,-28.068f,-28.251f,-28.981f,-29.644f,-30.045f, --30.560f,-31.010f,-31.666f,-32.659f,-33.596f,-34.280f,-35.186f,-35.772f,-35.231f,-34.443f, --33.022f,-30.626f,-29.537f,-28.130f,-26.846f,-25.545f,-23.937f,-21.630f,-19.223f,-16.708f, --13.872f,-11.449f, -9.008f, -6.684f, -3.972f, -1.924f, -0.624f, 0.341f, 2.471f, 7.147f, - 11.007f, 11.571f, 10.715f, 9.690f, 9.695f, 9.920f, 6.855f, 4.545f, 2.882f, -1.670f, - -4.042f, -6.144f, -7.500f, -8.434f, -8.948f, -8.409f, -7.653f, -6.893f, -5.592f, -3.870f, - -1.649f, 1.146f, 2.731f, 4.899f, 8.314f, 11.006f, 12.547f, 12.710f, 12.470f, 13.337f, - 13.606f -},{ --29.534f,-30.346f,-29.844f,-30.518f,-31.842f,-38.531f,-40.595f,-42.147f,-43.873f,-45.652f, --46.803f,-48.132f,-47.644f,-44.199f,-42.984f,-45.777f,-49.316f,-52.389f,-51.629f,-50.588f, --49.169f,-47.927f,-46.462f,-44.717f,-42.720f,-40.757f,-39.279f,-36.871f,-34.336f,-32.100f, --29.535f,-27.137f,-25.485f,-21.945f,-19.866f,-18.468f,-17.706f,-19.217f,-19.204f,-18.382f, --17.584f,-17.274f,-17.190f,-16.458f,-16.220f,-15.816f,-14.677f,-14.313f,-13.609f,-13.371f, --12.482f,-12.113f,-11.318f,-10.773f,-10.772f,-10.633f,-10.800f,-10.846f,-10.648f,-10.766f, --10.875f,-11.598f,-11.982f,-12.319f,-12.292f,-12.124f,-11.999f,-11.104f,-10.904f,-10.447f, --10.479f,-10.145f, -9.655f, -9.924f, -9.795f, -9.592f, -8.518f, -7.583f, -6.281f, -4.672f, - -3.908f, -3.168f, -2.544f, -2.217f, -2.442f, -2.530f, -2.885f, -2.776f, -3.225f, -3.270f, - -4.116f, -5.095f, -5.688f, -6.831f, -7.961f, -9.777f,-11.418f,-12.825f,-14.274f,-15.497f, --16.890f,-18.371f,-19.298f,-20.122f,-20.712f,-22.239f,-23.800f,-25.395f,-26.438f,-27.035f, --27.948f,-28.421f,-28.843f,-28.927f,-29.244f,-29.757f,-29.910f,-30.540f,-30.810f,-31.161f, --31.793f,-32.264f,-33.070f,-33.661f,-34.802f,-35.154f,-36.067f,-36.683f,-35.677f,-34.802f, --33.940f,-31.340f,-30.108f,-28.975f,-27.525f,-26.336f,-24.676f,-22.443f,-19.966f,-17.627f, --14.935f,-12.725f,-10.230f, -7.784f, -4.940f, -3.251f, -2.282f, -0.879f, 2.973f, 9.252f, - 9.677f, 9.936f, 9.463f, 8.467f, 8.981f, 9.297f, 6.255f, 4.374f, 1.683f, -3.747f, - -4.247f, -5.404f, -7.373f, -8.708f, -9.317f, -8.834f, -7.961f, -7.166f, -5.802f, -3.943f, - -1.616f, 1.256f, 2.839f, 4.842f, 8.217f, 11.145f, 12.672f, 12.781f, 12.507f, 13.367f, - 13.606f -},{ --29.534f,-30.364f,-29.866f,-30.529f,-31.925f,-38.178f,-40.520f,-42.045f,-43.478f,-45.375f, --46.607f,-47.389f,-46.578f,-43.490f,-42.343f,-44.449f,-49.048f,-51.777f,-51.112f,-49.806f, --48.212f,-47.048f,-45.702f,-44.102f,-42.442f,-40.540f,-39.068f,-36.570f,-34.143f,-31.763f, --29.257f,-26.773f,-25.039f,-21.845f,-19.855f,-18.298f,-17.391f,-20.243f,-18.678f,-18.326f, --17.881f,-17.337f,-17.010f,-16.190f,-16.145f,-15.737f,-14.333f,-14.230f,-13.805f,-13.439f, --12.637f,-12.249f,-11.690f,-11.241f,-11.141f,-11.030f,-11.272f,-11.214f,-11.015f,-11.325f, --11.408f,-12.353f,-12.580f,-12.941f,-12.898f,-12.372f,-12.084f,-11.896f,-10.714f,-11.191f, --11.054f,-10.320f,-10.298f,-10.770f,-10.488f, -9.938f, -9.025f, -8.345f, -7.010f, -5.577f, - -4.819f, -4.397f, -3.941f, -3.550f, -3.725f, -3.881f, -4.075f, -4.005f, -4.417f, -4.831f, - -5.766f, -6.622f, -7.518f, -8.622f, -9.779f,-11.653f,-13.124f,-14.555f,-15.782f,-17.322f, --18.901f,-20.013f,-21.350f,-22.032f,-22.958f,-24.195f,-25.592f,-27.393f,-28.323f,-28.999f, --29.494f,-30.316f,-30.860f,-30.595f,-30.863f,-31.403f,-31.506f,-31.938f,-32.282f,-32.513f, --32.960f,-33.336f,-34.210f,-34.931f,-35.636f,-36.410f,-36.868f,-37.181f,-36.367f,-35.379f, --34.458f,-31.946f,-30.685f,-29.646f,-28.333f,-27.006f,-25.446f,-23.282f,-20.775f,-18.332f, --15.914f,-13.686f,-11.238f, -8.764f, -5.877f, -5.457f, -3.934f, 0.842f, 4.055f, 5.598f, - 8.271f, 8.339f, 8.072f, 7.398f, 8.054f, 8.587f, 5.715f, 4.097f, 0.111f, -4.829f, - -4.104f, -4.607f, -7.301f, -9.056f, -9.756f, -9.095f, -8.123f, -7.157f, -5.976f, -4.022f, - -1.642f, 1.316f, 2.937f, 4.857f, 8.153f, 11.248f, 12.796f, 12.846f, 12.549f, 13.398f, - 13.606f -},{ --29.534f,-30.382f,-29.879f,-30.558f,-32.134f,-37.867f,-40.425f,-41.971f,-43.051f,-44.947f, --46.318f,-46.851f,-46.072f,-42.995f,-41.414f,-43.561f,-49.213f,-51.058f,-50.577f,-48.855f, --47.482f,-46.138f,-45.039f,-43.513f,-42.042f,-40.546f,-38.646f,-36.429f,-33.883f,-31.522f, --29.020f,-26.503f,-24.534f,-21.761f,-19.865f,-18.375f,-17.085f,-20.393f,-18.563f,-18.194f, --17.833f,-17.311f,-16.758f,-16.180f,-15.648f,-15.191f,-14.589f,-14.217f,-13.821f,-13.367f, --12.810f,-12.278f,-11.898f,-11.684f,-11.556f,-11.121f,-11.592f,-11.571f,-11.516f,-11.893f, --12.063f,-12.950f,-13.096f,-13.285f,-13.087f,-12.734f,-12.792f,-10.647f,-10.935f,-11.439f, --11.430f,-10.638f,-10.855f,-11.086f,-10.627f,-10.117f, -9.338f, -8.789f, -7.658f, -6.599f, - -6.040f, -5.559f, -5.280f, -4.904f, -5.059f, -5.237f, -5.238f, -5.351f, -5.737f, -6.150f, - -6.863f, -7.850f, -9.169f,-10.058f,-11.513f,-13.210f,-14.777f,-16.444f,-17.835f,-19.297f, --20.859f,-22.032f,-23.064f,-23.972f,-25.046f,-26.103f,-27.485f,-29.274f,-29.960f,-30.908f, --31.374f,-32.148f,-32.395f,-32.504f,-32.571f,-33.071f,-33.079f,-33.289f,-33.599f,-33.772f, --34.312f,-34.528f,-35.536f,-36.057f,-36.888f,-37.707f,-37.497f,-37.457f,-36.825f,-35.858f, --34.975f,-32.570f,-31.181f,-30.162f,-28.948f,-27.436f,-25.660f,-23.885f,-21.343f,-19.045f, --16.576f,-14.368f,-11.873f, -9.240f, -7.892f, -6.645f, -0.681f, 2.076f, 2.858f, 5.409f, - 6.667f, 7.087f, 7.012f, 6.294f, 7.170f, 7.694f, 4.299f, 1.866f, -1.696f, -5.555f, - -4.321f, -3.947f, -7.214f, -9.207f, -9.977f, -9.129f, -8.029f, -6.988f, -6.034f, -4.066f, - -1.791f, 1.316f, 3.013f, 4.942f, 8.130f, 11.316f, 12.920f, 12.905f, 12.596f, 13.429f, - 13.606f -},{ --29.534f,-30.399f,-29.883f,-30.597f,-32.447f,-37.631f,-40.283f,-41.881f,-42.653f,-44.321f, --45.728f,-46.382f,-45.788f,-42.715f,-40.609f,-43.666f,-48.950f,-50.276f,-49.776f,-48.068f, --46.679f,-45.451f,-44.354f,-42.890f,-41.686f,-40.415f,-38.180f,-36.004f,-33.425f,-30.979f, --28.614f,-26.594f,-23.679f,-21.551f,-19.767f,-18.371f,-18.121f,-19.625f,-18.520f,-18.210f, --17.699f,-17.112f,-16.409f,-16.043f,-15.347f,-15.167f,-14.493f,-14.383f,-13.802f,-13.239f, --12.863f,-12.435f,-11.996f,-11.919f,-11.423f,-11.361f,-11.869f,-12.017f,-11.993f,-12.232f, --12.614f,-13.294f,-13.403f,-13.372f,-12.900f,-12.600f,-12.436f,-12.148f,-11.157f,-11.473f, --11.413f,-10.960f,-11.191f,-11.019f,-10.655f,-10.113f, -9.690f, -9.153f, -8.218f, -7.432f, - -6.756f, -6.618f, -6.437f, -6.138f, -6.316f, -6.231f, -6.037f, -6.800f, -6.785f, -7.393f, - -8.364f, -9.232f,-10.502f,-11.499f,-13.213f,-14.722f,-16.356f,-18.035f,-19.460f,-21.343f, --22.841f,-23.779f,-24.904f,-25.982f,-27.166f,-28.265f,-29.395f,-31.099f,-31.976f,-32.855f, --33.425f,-33.573f,-33.774f,-33.895f,-34.462f,-34.386f,-34.611f,-34.781f,-34.861f,-35.196f, --35.520f,-35.872f,-36.555f,-37.215f,-38.152f,-38.738f,-38.694f,-38.033f,-37.422f,-36.076f, --35.369f,-32.907f,-31.575f,-30.360f,-29.209f,-27.892f,-25.789f,-24.027f,-21.638f,-19.411f, --17.248f,-14.774f,-12.481f,-11.234f, -9.092f, -3.841f, -0.316f, 0.845f, 1.803f, 5.203f, - 5.327f, 5.988f, 6.019f, 5.211f, 5.922f, 7.032f, 2.057f, -0.162f, -2.305f, -5.808f, - -5.122f, -3.364f, -6.996f, -9.014f, -9.813f, -8.850f, -7.560f, -6.756f, -5.963f, -4.070f, - -2.069f, 1.268f, 3.071f, 5.074f, 8.151f, 11.355f, 13.046f, 12.963f, 12.648f, 13.461f, - 13.606f -},{ --29.534f,-30.416f,-29.878f,-30.633f,-32.828f,-37.496f,-40.081f,-41.748f,-42.336f,-43.538f, --44.772f,-45.789f,-45.336f,-42.443f,-40.401f,-44.097f,-47.269f,-49.626f,-48.735f,-47.364f, --45.660f,-44.797f,-43.587f,-42.283f,-41.388f,-39.864f,-37.812f,-35.579f,-32.924f,-30.345f, --28.095f,-26.582f,-23.070f,-21.318f,-19.657f,-18.276f,-18.817f,-18.683f,-18.256f,-18.039f, --17.473f,-16.815f,-15.955f,-15.541f,-14.942f,-14.951f,-14.262f,-14.283f,-13.844f,-13.452f, --12.875f,-12.669f,-11.928f,-11.947f,-11.272f,-10.930f,-11.828f,-12.078f,-12.302f,-12.570f, --13.134f,-13.478f,-13.587f,-13.293f,-12.889f,-12.769f,-12.323f,-11.780f,-11.456f,-11.771f, --11.638f,-11.383f,-11.223f,-10.924f,-10.551f, -9.968f, -9.652f, -9.103f, -8.504f, -7.883f, - -7.491f, -7.829f, -7.549f, -7.277f, -7.272f, -7.126f, -7.384f, -7.536f, -7.629f, -8.605f, - -9.435f,-10.589f,-11.745f,-13.006f,-14.564f,-16.053f,-17.602f,-19.620f,-21.585f,-23.143f, --24.285f,-25.695f,-26.697f,-28.148f,-29.279f,-30.569f,-31.572f,-33.075f,-33.926f,-34.678f, --34.997f,-35.059f,-35.201f,-35.136f,-35.894f,-35.956f,-36.336f,-36.390f,-36.265f,-36.295f, --36.717f,-36.994f,-37.570f,-38.169f,-39.055f,-39.107f,-38.979f,-38.814f,-38.025f,-36.708f, --36.107f,-32.956f,-31.676f,-30.395f,-29.291f,-27.734f,-25.841f,-23.888f,-21.613f,-19.615f, --17.475f,-15.175f,-13.423f,-11.693f, -6.429f, -3.643f, -1.286f, 0.884f, 2.626f, 3.267f, - 4.188f, 4.839f, 4.869f, 4.344f, 5.087f, 6.699f, -0.125f, -1.058f, -1.997f, -5.549f, - -6.100f, -3.136f, -6.419f, -8.616f, -9.441f, -8.239f, -6.761f, -6.463f, -5.812f, -4.078f, - -2.417f, 1.186f, 3.132f, 5.223f, 8.212f, 11.375f, 13.172f, 13.023f, 12.705f, 13.493f, - 13.606f -},{ --29.534f,-30.432f,-29.865f,-30.656f,-33.234f,-37.470f,-39.828f,-41.567f,-42.124f,-42.717f, --43.593f,-44.962f,-44.568f,-41.973f,-40.673f,-43.959f,-44.751f,-48.702f,-47.684f,-46.507f, --44.981f,-43.977f,-42.751f,-41.693f,-40.911f,-39.297f,-37.414f,-35.235f,-32.578f,-30.030f, --27.563f,-26.019f,-22.869f,-20.991f,-19.639f,-18.334f,-18.522f,-18.126f,-17.863f,-17.565f, --16.989f,-16.470f,-15.371f,-15.119f,-14.940f,-14.560f,-14.094f,-14.190f,-13.733f,-13.454f, --12.908f,-12.580f,-11.939f,-11.728f,-11.247f,-11.064f,-11.741f,-12.039f,-12.326f,-12.834f, --13.287f,-13.508f,-13.550f,-13.273f,-12.855f,-12.753f,-12.217f,-11.428f,-11.367f,-11.753f, --11.529f,-11.332f,-11.127f,-10.991f,-10.320f, -9.881f, -9.607f, -9.056f, -8.655f, -8.267f, - -8.162f, -8.497f, -8.286f, -8.404f, -7.996f, -8.084f, -8.614f, -8.559f, -9.032f, -9.797f, --10.579f,-11.800f,-12.979f,-14.418f,-16.034f,-17.341f,-18.852f,-21.145f,-23.256f,-24.928f, --26.149f,-27.604f,-28.658f,-30.018f,-31.512f,-32.534f,-33.578f,-34.534f,-35.638f,-36.159f, --36.397f,-36.472f,-36.489f,-36.485f,-36.854f,-37.520f,-37.796f,-37.784f,-37.587f,-37.806f, --37.897f,-38.423f,-38.507f,-38.840f,-39.797f,-39.869f,-39.194f,-38.870f,-38.358f,-37.015f, --36.207f,-32.928f,-31.632f,-30.505f,-29.118f,-27.759f,-25.522f,-23.690f,-21.713f,-20.035f, --17.865f,-15.709f,-14.436f, -9.179f, -7.879f, -4.773f, -2.278f, 1.149f, 2.433f, 2.009f, - 2.844f, 3.761f, 3.596f, 3.308f, 4.844f, 5.413f, -1.825f, -2.034f, -2.462f, -5.538f, - -6.815f, -3.801f, -5.357f, -8.078f, -8.767f, -7.227f, -5.909f, -6.119f, -5.632f, -4.117f, - -2.744f, 1.073f, 3.217f, 5.360f, 8.304f, 11.388f, 13.297f, 13.087f, 12.766f, 13.526f, - 13.606f -},{ --29.534f,-30.448f,-29.843f,-30.656f,-33.612f,-37.538f,-39.552f,-41.358f,-42.000f,-41.999f, --42.455f,-43.944f,-43.568f,-41.268f,-40.699f,-43.119f,-43.200f,-47.172f,-46.704f,-45.543f, --44.523f,-43.137f,-41.853f,-40.958f,-40.184f,-38.823f,-36.837f,-34.779f,-32.341f,-29.628f, --27.109f,-25.265f,-22.674f,-20.689f,-19.392f,-18.232f,-18.168f,-17.408f,-17.368f,-17.001f, --16.553f,-15.845f,-15.008f,-14.708f,-14.922f,-14.398f,-14.193f,-13.916f,-13.591f,-13.186f, --12.792f,-12.460f,-11.744f,-11.766f,-11.299f,-11.014f,-11.304f,-11.845f,-12.333f,-12.804f, --13.378f,-13.468f,-13.330f,-13.057f,-12.722f,-12.297f,-11.818f,-11.402f,-11.307f,-11.723f, --11.651f,-11.180f,-10.878f,-10.687f, -9.898f, -9.568f, -9.499f, -9.242f, -8.733f, -8.632f, - -8.837f, -9.129f, -9.116f, -9.147f, -8.933f, -9.093f, -9.368f, -9.643f,-10.253f,-10.864f, --11.755f,-13.054f,-14.350f,-15.846f,-17.397f,-18.636f,-20.123f,-22.580f,-24.897f,-26.386f, --27.688f,-29.188f,-30.694f,-32.061f,-33.319f,-34.502f,-35.320f,-36.312f,-37.395f,-37.771f, --37.809f,-37.646f,-37.927f,-38.305f,-38.584f,-38.912f,-39.365f,-39.223f,-39.179f,-39.216f, --39.275f,-39.314f,-39.606f,-39.434f,-40.460f,-40.272f,-39.865f,-39.191f,-38.633f,-37.248f, --36.467f,-32.556f,-31.243f,-30.315f,-28.927f,-26.749f,-24.980f,-23.276f,-21.752f,-20.044f, --18.203f,-16.562f,-13.264f,-10.747f, -8.848f, -6.000f, -2.171f, 0.969f, 1.087f, 1.604f, - 1.941f, 2.813f, 2.150f, 2.252f, 4.189f, 3.362f, -3.528f, -2.957f, -3.484f, -5.915f, - -7.273f, -5.373f, -4.422f, -7.361f, -7.382f, -5.724f, -5.296f, -5.738f, -5.421f, -4.147f, - -2.961f, 0.923f, 3.333f, 5.467f, 8.419f, 11.407f, 13.416f, 13.160f, 12.831f, 13.559f, - 13.606f -},{ --29.534f,-30.463f,-29.813f,-30.626f,-33.912f,-37.666f,-39.290f,-41.148f,-41.912f,-41.477f, --41.595f,-42.906f,-42.460f,-40.396f,-39.859f,-41.841f,-43.058f,-45.650f,-45.815f,-44.616f, --43.625f,-42.374f,-40.976f,-40.069f,-39.323f,-38.166f,-36.251f,-34.525f,-31.941f,-29.002f, --26.713f,-24.600f,-22.321f,-20.351f,-19.059f,-17.815f,-17.697f,-16.867f,-16.563f,-16.307f, --15.826f,-15.226f,-14.811f,-14.499f,-14.372f,-14.283f,-14.005f,-13.839f,-13.554f,-13.119f, --12.745f,-12.321f,-11.962f,-11.805f,-11.435f,-11.059f,-11.040f,-11.623f,-12.152f,-12.664f, --13.163f,-13.152f,-12.973f,-12.729f,-12.505f,-11.485f,-11.439f,-11.167f,-11.210f,-11.651f, --11.405f,-11.067f,-10.676f,-10.351f, -9.639f, -9.634f, -9.502f, -9.212f, -8.937f, -8.996f, - -9.244f, -9.688f, -9.888f, -9.728f, -9.540f, -9.926f,-10.434f,-10.838f,-11.490f,-12.208f, --13.154f,-14.529f,-15.669f,-17.217f,-18.716f,-19.939f,-21.683f,-23.839f,-26.046f,-27.673f, --29.262f,-30.613f,-32.274f,-33.673f,-34.974f,-36.113f,-37.013f,-37.978f,-38.700f,-39.169f, --39.386f,-39.528f,-39.466f,-39.893f,-39.994f,-40.569f,-40.842f,-40.637f,-40.498f,-40.518f, --40.465f,-40.136f,-40.045f,-40.194f,-40.629f,-40.316f,-40.105f,-39.639f,-38.624f,-37.237f, --36.635f,-32.102f,-31.023f,-29.987f,-28.542f,-26.248f,-24.595f,-23.469f,-21.818f,-20.551f, --18.042f,-17.337f,-14.113f,-11.580f, -9.114f, -7.051f, -3.247f, -1.551f, -0.004f, 0.354f, - 0.454f, 1.384f, 1.615f, 1.796f, 3.261f, 1.904f, -5.103f, -3.825f, -4.530f, -6.581f, - -7.954f, -7.267f, -4.962f, -6.853f, -5.596f, -4.111f, -4.983f, -5.223f, -5.114f, -4.096f, - -3.014f, 0.737f, 3.469f, 5.540f, 8.544f, 11.441f, 13.528f, 13.244f, 12.898f, 13.592f, - 13.606f -},{ --29.534f,-30.476f,-29.775f,-30.561f,-34.089f,-37.799f,-39.078f,-40.962f,-41.800f,-41.158f, --41.091f,-42.061f,-41.333f,-39.361f,-38.341f,-40.357f,-42.769f,-44.674f,-45.164f,-43.823f, --42.546f,-41.583f,-40.190f,-39.127f,-38.449f,-37.353f,-35.640f,-33.996f,-31.550f,-28.564f, --26.674f,-24.021f,-21.912f,-20.185f,-18.640f,-17.311f,-17.124f,-16.380f,-15.988f,-15.463f, --15.029f,-14.617f,-14.247f,-14.001f,-13.785f,-13.803f,-13.681f,-13.598f,-13.206f,-12.985f, --12.645f,-12.350f,-12.164f,-11.939f,-11.541f,-11.222f,-11.123f,-11.551f,-11.936f,-12.409f, --12.843f,-12.916f,-12.620f,-12.294f,-11.891f,-11.155f,-10.959f,-10.927f,-11.107f,-11.515f, --10.967f,-10.599f,-10.586f,-10.008f, -9.599f, -9.488f, -9.425f, -9.232f, -9.234f, -9.278f, - -9.534f,-10.216f,-10.441f,-10.481f,-10.285f,-10.732f,-11.473f,-11.667f,-12.599f,-13.494f, --14.495f,-15.736f,-16.911f,-18.416f,-19.915f,-21.290f,-22.937f,-25.209f,-27.291f,-29.070f, --30.748f,-32.318f,-33.914f,-35.158f,-36.333f,-37.581f,-38.615f,-39.366f,-39.834f,-40.429f, --40.883f,-41.018f,-41.064f,-41.036f,-41.341f,-41.586f,-41.987f,-41.842f,-41.904f,-41.789f, --41.341f,-40.885f,-40.459f,-40.767f,-40.975f,-40.704f,-40.146f,-39.781f,-38.902f,-36.944f, --36.583f,-31.923f,-30.626f,-29.670f,-28.177f,-26.550f,-24.951f,-23.473f,-21.932f,-20.839f, --20.232f,-16.453f,-14.187f,-12.180f,-10.313f, -7.716f, -5.544f, -2.640f, -0.998f, -1.008f, - -0.984f, -0.340f, 0.893f, 1.144f, 1.620f, -0.088f, -6.017f, -4.723f, -5.528f, -7.513f, - -8.850f, -8.884f, -7.393f, -7.203f, -4.684f, -3.375f, -4.866f, -4.429f, -4.666f, -3.956f, - -2.913f, 0.545f, 3.597f, 5.595f, 8.671f, 11.494f, 13.627f, 13.341f, 12.968f, 13.626f, - 13.606f -},{ --29.534f,-30.489f,-29.731f,-30.461f,-34.111f,-37.875f,-38.933f,-40.798f,-41.615f,-40.980f, --40.863f,-41.545f,-40.324f,-38.135f,-36.980f,-39.123f,-41.360f,-43.588f,-44.700f,-43.196f, --41.733f,-40.698f,-39.559f,-38.317f,-37.610f,-36.605f,-35.075f,-33.457f,-31.193f,-28.074f, --26.726f,-23.607f,-21.435f,-19.969f,-18.459f,-16.450f,-16.059f,-15.734f,-15.366f,-14.843f, --14.341f,-13.943f,-13.617f,-13.621f,-13.453f,-13.369f,-13.486f,-13.313f,-12.894f,-12.729f, --12.437f,-12.379f,-12.318f,-11.768f,-11.483f,-11.185f,-11.068f,-11.477f,-11.874f,-12.031f, --12.309f,-12.540f,-12.246f,-11.882f,-11.296f,-10.996f,-10.615f,-10.789f,-11.035f,-11.207f, --10.675f,-10.433f,-10.369f, -9.747f, -9.421f, -9.344f, -9.296f, -9.343f, -9.270f, -9.447f, - -9.996f,-10.404f,-10.990f,-11.058f,-11.082f,-11.623f,-12.158f,-12.735f,-13.792f,-14.521f, --15.677f,-16.847f,-18.241f,-19.671f,-21.067f,-22.559f,-24.293f,-26.529f,-28.518f,-30.596f, --32.206f,-33.974f,-35.479f,-36.527f,-37.614f,-39.111f,-39.929f,-40.364f,-41.115f,-41.657f, --42.040f,-42.150f,-42.064f,-42.003f,-42.477f,-42.662f,-43.022f,-43.118f,-42.833f,-42.590f, --42.081f,-41.307f,-40.728f,-41.097f,-41.160f,-40.952f,-40.375f,-39.816f,-38.812f,-36.780f, --36.480f,-31.664f,-30.512f,-29.290f,-27.715f,-26.442f,-25.114f,-23.718f,-22.026f,-21.535f, --19.588f,-15.445f,-14.202f,-13.038f, -9.654f, -8.423f, -6.743f, -3.919f, -2.220f, -2.558f, - -2.552f, -0.942f, 0.089f, 0.349f, -0.344f, -3.180f, -6.732f, -5.466f, -6.073f, -8.233f, - -9.484f,-10.091f,-10.015f, -8.378f, -5.436f, -4.212f, -4.965f, -3.449f, -4.119f, -3.827f, - -2.728f, 0.390f, 3.689f, 5.654f, 8.792f, 11.568f, 13.711f, 13.452f, 13.038f, 13.659f, - 13.606f -},{ --29.534f,-30.501f,-29.681f,-30.328f,-33.962f,-37.836f,-38.849f,-40.636f,-41.335f,-40.860f, --40.765f,-41.336f,-39.649f,-36.882f,-36.329f,-38.617f,-39.862f,-41.828f,-44.163f,-42.667f, --41.001f,-40.031f,-38.968f,-37.698f,-36.872f,-35.847f,-34.508f,-33.095f,-30.846f,-27.997f, --26.390f,-23.225f,-20.893f,-19.638f,-18.513f,-15.855f,-15.175f,-14.984f,-14.565f,-14.049f, --13.569f,-13.258f,-12.928f,-13.127f,-12.987f,-13.058f,-13.133f,-12.953f,-12.666f,-12.623f, --12.171f,-12.280f,-12.207f,-11.503f,-11.277f,-11.184f,-10.922f,-11.177f,-11.467f,-11.725f, --11.997f,-12.107f,-11.858f,-11.575f,-11.005f,-10.718f,-10.346f,-10.358f,-10.758f,-10.677f, --10.318f,-10.026f, -9.967f, -9.312f, -9.110f, -9.169f, -9.307f, -9.311f, -9.407f, -9.593f, --10.082f,-11.057f,-11.678f,-11.639f,-11.804f,-12.320f,-12.851f,-13.948f,-14.866f,-15.866f, --16.969f,-18.092f,-19.535f,-20.847f,-22.147f,-23.731f,-25.437f,-27.669f,-29.816f,-31.869f, --33.615f,-35.417f,-37.020f,-38.054f,-39.089f,-40.059f,-41.150f,-41.513f,-42.191f,-42.931f, --43.281f,-43.390f,-43.346f,-43.464f,-43.479f,-43.791f,-44.127f,-43.922f,-43.629f,-42.984f, --42.427f,-41.678f,-41.279f,-41.274f,-41.249f,-41.102f,-40.458f,-39.554f,-38.616f,-36.682f, --35.881f,-31.652f,-30.172f,-29.073f,-27.734f,-26.519f,-25.221f,-24.071f,-22.958f,-21.418f, --16.358f,-15.445f,-14.134f,-12.212f, -9.539f, -8.731f, -6.902f, -4.635f, -3.910f, -3.956f, - -3.825f, -1.849f, -0.838f, -0.897f, -2.581f, -6.719f, -7.441f, -6.371f, -6.645f, -8.705f, --10.034f,-11.124f,-10.948f, -9.591f, -7.138f, -6.173f, -5.454f, -2.723f, -3.583f, -3.827f, - -2.559f, 0.307f, 3.732f, 5.740f, 8.900f, 11.661f, 13.780f, 13.577f, 13.108f, 13.693f, - 13.606f -},{ --29.534f,-30.512f,-29.626f,-30.168f,-33.649f,-37.639f,-38.794f,-40.436f,-40.959f,-40.741f, --40.681f,-41.257f,-39.434f,-36.029f,-36.128f,-38.572f,-39.320f,-40.296f,-43.597f,-42.155f, --40.294f,-39.760f,-38.252f,-37.126f,-36.310f,-35.111f,-33.964f,-32.615f,-30.568f,-28.263f, --25.739f,-22.894f,-20.644f,-19.158f,-18.093f,-15.230f,-14.656f,-14.381f,-13.936f,-13.397f, --12.915f,-12.532f,-12.466f,-12.673f,-12.619f,-12.594f,-12.754f,-12.661f,-12.382f,-12.333f, --12.214f,-12.223f,-12.274f,-11.676f,-11.334f,-10.809f,-11.086f,-11.038f,-11.209f,-11.398f, --11.713f,-11.831f,-11.485f,-11.286f,-10.771f,-10.454f,-10.163f,-10.149f,-10.302f,-10.107f, - -9.861f, -9.350f, -9.508f, -8.895f, -8.826f, -8.875f, -9.085f, -9.365f, -9.465f, -9.739f, --10.290f,-11.345f,-11.929f,-12.113f,-12.682f,-13.192f,-13.802f,-15.082f,-16.002f,-17.083f, --18.265f,-19.324f,-20.791f,-22.177f,-23.445f,-25.053f,-26.601f,-28.908f,-31.050f,-33.193f, --34.915f,-36.501f,-38.220f,-39.336f,-40.472f,-41.320f,-42.195f,-42.779f,-43.121f,-43.727f, --44.405f,-44.540f,-44.539f,-44.722f,-44.462f,-44.819f,-45.090f,-44.635f,-44.039f,-43.876f, --42.895f,-42.179f,-41.628f,-41.427f,-41.432f,-41.078f,-40.449f,-39.289f,-37.943f,-36.142f, --35.004f,-31.811f,-30.044f,-29.285f,-28.710f,-27.498f,-26.064f,-24.525f,-22.549f,-19.565f, --14.891f,-15.066f,-12.842f,-11.324f,-10.897f, -9.300f, -7.693f, -5.818f, -5.256f, -5.410f, - -4.676f, -3.477f, -2.404f, -3.023f, -5.699f, -9.565f, -8.504f, -7.527f, -7.660f, -8.988f, --10.769f,-11.956f,-10.474f,-10.218f, -8.526f, -8.160f, -6.338f, -2.687f, -3.149f, -3.951f, - -2.477f, 0.299f, 3.735f, 5.866f, 8.993f, 11.771f, 13.834f, 13.714f, 13.176f, 13.728f, - 13.606f -},{ --29.534f,-30.522f,-29.567f,-29.989f,-33.198f,-37.264f,-38.723f,-40.161f,-40.502f,-40.604f, --40.567f,-41.089f,-39.537f,-35.948f,-35.888f,-38.263f,-39.151f,-39.934f,-43.100f,-41.589f, --39.775f,-39.333f,-37.596f,-36.613f,-35.822f,-34.615f,-33.403f,-32.124f,-30.163f,-28.686f, --24.888f,-22.566f,-20.706f,-18.630f,-17.298f,-14.911f,-14.191f,-13.732f,-13.454f,-12.691f, --12.448f,-11.928f,-12.080f,-12.035f,-12.284f,-12.204f,-12.327f,-12.355f,-12.180f,-12.162f, --12.090f,-12.206f,-12.042f,-11.803f,-10.994f,-11.090f,-11.005f,-11.157f,-10.966f,-11.240f, --11.448f,-11.351f,-11.135f,-10.877f,-10.252f, -9.981f, -9.786f, -9.726f, -9.746f, -9.540f, - -9.258f, -8.751f, -8.932f, -8.375f, -8.412f, -8.567f, -8.784f, -9.106f, -9.330f, -9.753f, --10.406f,-11.456f,-12.344f,-12.977f,-13.534f,-13.805f,-14.684f,-15.948f,-17.054f,-18.055f, --19.467f,-20.578f,-22.112f,-23.396f,-24.617f,-26.194f,-27.879f,-30.088f,-32.277f,-34.330f, --36.114f,-37.687f,-39.349f,-40.582f,-41.620f,-42.423f,-42.953f,-43.661f,-44.114f,-44.443f, --45.298f,-45.575f,-45.486f,-45.538f,-45.458f,-45.544f,-45.576f,-45.334f,-44.364f,-44.028f, --43.416f,-42.268f,-41.600f,-41.668f,-41.475f,-40.740f,-39.959f,-39.006f,-37.303f,-35.663f, --33.730f,-32.531f,-30.161f,-29.236f,-27.883f,-26.905f,-25.796f,-24.478f,-22.974f,-17.300f, --16.830f,-14.666f,-11.708f,-11.557f,-11.803f,-10.222f, -8.368f, -7.653f, -6.283f, -8.448f, - -6.776f, -4.837f, -4.186f, -5.275f, -8.097f,-10.599f,-10.366f, -8.985f, -8.482f, -8.640f, --11.468f,-12.315f, -9.943f,-10.195f, -9.136f, -9.569f, -7.240f, -3.321f, -2.833f, -4.031f, - -2.476f, 0.332f, 3.724f, 6.032f, 9.072f, 11.892f, 13.875f, 13.862f, 13.241f, 13.762f, - 13.606f -},{ --29.534f,-30.531f,-29.505f,-29.803f,-32.657f,-36.728f,-38.589f,-39.794f,-39.977f,-40.443f, --40.417f,-40.719f,-39.614f,-36.550f,-35.704f,-37.682f,-38.464f,-40.026f,-42.300f,-40.970f, --39.576f,-38.537f,-37.193f,-36.265f,-35.285f,-34.067f,-32.871f,-31.598f,-29.821f,-28.341f, --24.606f,-22.632f,-20.596f,-18.426f,-16.915f,-14.351f,-13.755f,-13.133f,-12.904f,-12.107f, --11.934f,-11.464f,-11.795f,-11.574f,-11.745f,-11.818f,-11.934f,-12.011f,-12.031f,-12.068f, --12.137f,-12.203f,-12.049f,-11.756f,-11.608f,-11.280f,-11.553f,-11.271f,-10.766f,-11.152f, --11.210f,-10.988f,-10.831f,-10.360f, -9.892f, -9.465f, -9.209f, -9.135f, -9.149f, -8.716f, - -8.451f, -8.197f, -8.133f, -7.782f, -7.980f, -8.262f, -8.635f, -8.837f, -9.236f, -9.808f, --10.702f,-11.459f,-12.720f,-13.313f,-14.076f,-14.416f,-15.314f,-16.760f,-17.834f,-18.988f, --20.459f,-21.781f,-23.202f,-24.533f,-25.824f,-27.348f,-28.847f,-31.150f,-33.284f,-35.225f, --37.190f,-38.806f,-40.334f,-41.661f,-42.653f,-43.516f,-43.928f,-44.525f,-45.033f,-45.654f, --46.167f,-46.317f,-46.223f,-46.201f,-46.390f,-46.322f,-46.014f,-45.489f,-44.827f,-44.140f, --43.462f,-42.352f,-41.708f,-41.443f,-41.263f,-40.140f,-38.686f,-37.982f,-37.135f,-33.591f, --30.970f,-29.710f,-26.661f,-24.110f,-23.402f,-22.561f,-22.724f,-23.070f,-20.301f,-17.378f, --17.479f,-13.969f,-12.942f,-12.149f,-12.079f,-10.625f, -9.611f, -8.368f, -8.867f,-10.750f, --10.322f, -8.360f, -7.232f, -7.912f, -9.404f,-11.337f,-11.967f,-10.438f, -8.945f, -8.163f, --12.205f,-12.521f, -9.683f, -9.703f, -9.277f,-10.496f, -7.700f, -4.168f, -2.634f, -3.867f, - -2.463f, 0.366f, 3.731f, 6.219f, 9.140f, 12.023f, 13.908f, 14.017f, 13.303f, 13.797f, - 13.606f -},{ --29.534f,-30.538f,-29.440f,-29.621f,-32.083f,-36.074f,-38.358f,-39.344f,-39.396f,-40.246f, --40.212f,-40.198f,-39.398f,-37.262f,-36.027f,-37.436f,-37.529f,-39.442f,-41.116f,-40.458f, --39.574f,-37.723f,-36.822f,-36.018f,-34.807f,-33.459f,-32.357f,-31.004f,-29.520f,-27.370f, --24.380f,-22.476f,-20.305f,-18.349f,-16.452f,-13.585f,-13.303f,-12.501f,-12.370f,-11.580f, --11.551f,-11.036f,-11.490f,-11.342f,-11.421f,-11.634f,-11.614f,-11.946f,-11.978f,-12.076f, --12.467f,-12.356f,-12.113f,-12.008f,-11.673f,-11.656f,-11.742f,-11.307f,-10.731f,-10.836f, --10.816f,-10.652f,-10.454f, -9.852f, -9.306f, -8.994f, -8.629f, -8.365f, -8.356f, -7.844f, - -7.785f, -7.486f, -7.436f, -7.334f, -7.517f, -7.893f, -8.285f, -8.552f, -9.306f, -9.647f, --10.610f,-11.521f,-12.868f,-13.635f,-14.413f,-14.830f,-15.852f,-17.214f,-18.543f,-20.016f, --21.303f,-22.708f,-24.259f,-25.481f,-26.973f,-28.231f,-29.926f,-31.934f,-34.182f,-36.123f, --37.916f,-39.561f,-41.130f,-42.580f,-43.517f,-44.311f,-44.753f,-45.261f,-45.819f,-46.324f, --46.954f,-47.087f,-46.940f,-46.898f,-46.946f,-46.743f,-46.461f,-45.880f,-45.024f,-44.228f, --43.240f,-42.211f,-41.856f,-40.955f,-40.632f,-39.455f,-37.859f,-36.625f,-33.025f,-29.662f, --28.372f,-25.342f,-24.125f,-23.214f,-22.472f,-21.835f,-20.457f,-20.539f,-20.262f,-20.566f, --16.838f,-13.577f,-13.603f,-13.256f,-12.684f,-11.742f,-10.875f,-10.262f,-11.763f,-12.353f, --11.941f,-11.292f,-10.679f,-10.569f,-10.811f,-12.860f,-13.278f,-11.536f, -9.557f, -8.491f, --12.967f,-13.165f, -9.480f, -9.067f, -9.349f,-11.098f, -7.665f, -4.796f, -2.605f, -3.391f, - -2.314f, 0.385f, 3.773f, 6.404f, 9.207f, 12.162f, 13.938f, 14.175f, 13.360f, 13.832f, - 13.606f -},{ --29.534f,-30.544f,-29.373f,-29.454f,-31.541f,-35.374f,-38.026f,-38.850f,-38.774f,-39.985f, --39.908f,-39.660f,-38.892f,-37.523f,-36.743f,-37.463f,-36.961f,-38.394f,-40.177f,-40.102f, --39.030f,-36.824f,-36.314f,-35.672f,-34.392f,-33.126f,-31.787f,-30.296f,-29.175f,-26.556f, --24.183f,-22.193f,-19.916f,-18.603f,-15.288f,-13.140f,-12.750f,-12.048f,-11.875f,-11.126f, --10.971f,-10.779f,-11.036f,-11.198f,-10.956f,-11.394f,-11.442f,-11.821f,-12.215f,-12.488f, --12.683f,-12.627f,-12.488f,-12.411f,-11.751f,-12.227f,-11.932f,-11.118f,-10.841f,-10.800f, --10.739f,-10.410f,-10.004f, -9.377f, -8.941f, -8.329f, -8.020f, -7.820f, -7.476f, -7.013f, - -6.964f, -6.783f, -6.723f, -6.819f, -6.945f, -7.490f, -7.910f, -8.326f, -9.050f, -9.622f, --10.760f,-11.894f,-13.233f,-14.029f,-14.601f,-15.164f,-16.428f,-17.814f,-19.354f,-20.679f, --22.125f,-23.554f,-25.060f,-26.316f,-27.826f,-29.148f,-30.844f,-32.483f,-34.716f,-36.829f, --38.497f,-40.208f,-41.638f,-43.042f,-43.882f,-44.720f,-45.141f,-45.857f,-46.442f,-46.823f, --47.434f,-47.541f,-47.402f,-47.171f,-47.205f,-47.112f,-46.221f,-45.907f,-44.997f,-44.206f, --43.296f,-42.244f,-41.551f,-40.710f,-39.712f,-39.227f,-36.380f,-33.354f,-31.936f,-29.786f, --27.657f,-24.879f,-22.807f,-21.243f,-20.567f,-20.387f,-19.855f,-20.166f,-21.612f,-18.875f, --16.618f,-14.798f,-14.172f,-13.478f,-13.513f,-12.492f,-12.667f,-12.124f,-13.257f,-13.373f, --12.413f,-12.301f,-13.053f,-12.405f,-12.589f,-14.575f,-15.060f,-12.946f,-10.451f, -9.410f, --13.447f,-14.024f, -9.643f, -8.735f, -9.668f,-11.378f, -7.540f, -5.125f, -2.805f, -2.720f, - -1.944f, 0.412f, 3.843f, 6.562f, 9.286f, 12.308f, 13.970f, 14.332f, 13.412f, 13.868f, - 13.606f -},{ --29.534f,-30.549f,-29.307f,-29.312f,-31.092f,-34.711f,-37.614f,-38.361f,-38.141f,-39.638f, --39.482f,-39.180f,-38.253f,-37.259f,-37.061f,-37.015f,-36.710f,-37.617f,-39.489f,-39.678f, --37.776f,-36.121f,-35.917f,-35.280f,-34.009f,-32.700f,-31.490f,-29.815f,-28.774f,-25.931f, --24.017f,-21.797f,-19.581f,-18.802f,-14.514f,-12.732f,-12.280f,-11.650f,-11.294f,-10.736f, --10.561f,-10.549f,-10.753f,-11.062f,-10.815f,-11.235f,-11.280f,-11.732f,-12.355f,-12.718f, --12.944f,-12.947f,-12.711f,-12.155f,-12.120f,-11.711f,-12.105f,-11.129f,-10.856f,-10.690f, --10.616f,-10.089f, -9.823f, -8.938f, -8.337f, -7.737f, -7.354f, -7.140f, -6.757f, -6.212f, - -6.235f, -6.090f, -6.166f, -6.216f, -6.516f, -6.997f, -7.558f, -8.069f, -8.853f, -9.722f, --10.804f,-12.277f,-13.518f,-14.350f,-14.887f,-15.728f,-17.159f,-18.307f,-20.026f,-21.353f, --22.783f,-24.259f,-25.616f,-27.077f,-28.462f,-29.677f,-31.331f,-33.003f,-35.155f,-37.238f, --39.102f,-40.725f,-42.004f,-43.219f,-44.045f,-44.955f,-45.662f,-45.758f,-46.805f,-47.351f, --47.569f,-47.702f,-47.538f,-47.511f,-47.140f,-46.826f,-46.329f,-45.639f,-44.823f,-44.011f, --42.906f,-41.795f,-40.965f,-40.366f,-39.053f,-36.262f,-33.256f,-32.691f,-30.994f,-27.231f, --23.423f,-22.688f,-21.369f,-20.071f,-19.494f,-20.094f,-19.683f,-18.239f,-17.851f,-16.704f, --15.990f,-15.192f,-14.303f,-13.797f,-13.850f,-13.682f,-13.901f,-13.472f,-14.649f,-14.670f, --13.882f,-13.780f,-13.991f,-13.612f,-14.384f,-15.633f,-16.489f,-14.709f,-11.310f,-10.522f, --14.126f,-14.539f,-10.408f, -8.987f,-10.394f,-11.496f, -7.702f, -5.296f, -3.157f, -2.035f, - -1.361f, 0.489f, 3.915f, 6.676f, 9.389f, 12.463f, 14.008f, 14.484f, 13.458f, 13.903f, - 13.606f -},{ --29.534f,-30.552f,-29.240f,-29.204f,-30.786f,-34.165f,-37.168f,-37.919f,-37.536f,-39.208f, --38.973f,-38.705f,-37.572f,-36.844f,-36.538f,-36.105f,-36.623f,-37.005f,-38.229f,-39.107f, --36.812f,-35.997f,-35.609f,-34.977f,-33.613f,-32.229f,-31.155f,-29.682f,-27.976f,-25.783f, --23.647f,-21.401f,-19.587f,-18.506f,-14.323f,-12.628f,-12.045f,-11.421f,-10.904f,-10.441f, --10.242f,-10.395f,-10.422f,-10.787f,-10.692f,-10.932f,-11.280f,-11.619f,-12.337f,-12.786f, --12.902f,-12.915f,-12.729f,-12.511f,-12.225f,-11.866f,-11.470f,-11.154f,-10.832f,-10.651f, --10.455f, -9.952f, -9.471f, -8.577f, -7.783f, -7.259f, -6.780f, -6.431f, -6.025f, -5.664f, - -5.528f, -5.390f, -5.523f, -5.628f, -5.998f, -6.567f, -7.166f, -7.887f, -8.780f, -9.887f, --11.028f,-12.572f,-13.436f,-14.538f,-15.233f,-16.281f,-17.514f,-18.840f,-20.408f,-21.923f, --23.146f,-24.831f,-26.079f,-27.583f,-28.951f,-30.236f,-31.803f,-33.267f,-35.370f,-37.444f, --39.423f,-40.836f,-42.201f,-43.242f,-44.172f,-44.844f,-45.674f,-46.056f,-46.757f,-47.189f, --47.576f,-47.487f,-47.406f,-47.312f,-47.124f,-46.555f,-46.189f,-45.214f,-44.334f,-43.151f, --42.404f,-41.472f,-40.781f,-38.420f,-37.231f,-33.954f,-34.083f,-32.350f,-25.939f,-23.671f, --23.328f,-21.539f,-19.960f,-19.272f,-17.952f,-19.165f,-20.384f,-19.521f,-17.923f,-16.168f, --16.043f,-15.836f,-14.758f,-14.277f,-13.685f,-15.389f,-14.847f,-14.363f,-15.115f,-16.836f, --15.902f,-15.826f,-14.970f,-15.791f,-16.173f,-16.214f,-17.296f,-15.903f,-12.456f,-11.914f, --15.490f,-14.878f,-11.449f, -9.807f,-11.245f,-11.694f, -8.097f, -5.397f, -3.423f, -1.430f, - -0.649f, 0.639f, 3.952f, 6.749f, 9.525f, 12.625f, 14.057f, 14.624f, 13.498f, 13.939f, - 13.606f -},{ --29.534f,-30.554f,-29.175f,-29.133f,-30.653f,-33.799f,-36.741f,-37.539f,-37.001f,-38.730f, --38.489f,-38.128f,-36.842f,-36.609f,-35.742f,-35.716f,-36.956f,-36.249f,-36.514f,-38.608f, --36.485f,-35.708f,-35.102f,-34.557f,-33.128f,-31.941f,-30.628f,-29.348f,-27.262f,-25.448f, --23.295f,-21.060f,-19.566f,-18.241f,-14.142f,-12.564f,-11.785f,-11.187f,-10.675f,-10.265f, - -9.951f,-10.302f,-10.108f,-10.469f,-10.502f,-10.853f,-11.190f,-11.559f,-12.177f,-12.656f, --12.685f,-12.894f,-12.765f,-12.383f,-11.975f,-11.519f,-11.577f,-11.109f,-10.776f,-10.596f, --10.153f, -9.797f, -9.281f, -8.247f, -7.443f, -6.714f, -6.231f, -5.825f, -5.357f, -5.069f, - -4.856f, -4.828f, -4.876f, -5.063f, -5.509f, -6.074f, -6.680f, -7.598f, -8.555f, -9.854f, --11.012f,-12.516f,-13.473f,-14.683f,-15.406f,-16.741f,-17.882f,-19.362f,-20.786f,-22.246f, --23.593f,-25.154f,-26.543f,-27.858f,-29.267f,-30.486f,-31.927f,-33.531f,-35.425f,-37.399f, --39.402f,-40.961f,-42.157f,-43.135f,-44.065f,-44.912f,-45.302f,-45.929f,-46.344f,-46.779f, --47.134f,-47.336f,-47.147f,-46.942f,-46.837f,-46.160f,-45.674f,-44.765f,-44.030f,-42.662f, --41.901f,-40.885f,-39.057f,-37.702f,-37.176f,-32.509f,-31.684f,-26.771f,-24.360f,-24.748f, --23.160f,-21.285f,-19.376f,-18.329f,-17.550f,-17.179f,-20.659f,-19.650f,-18.185f,-16.313f, --15.932f,-16.390f,-14.992f,-14.530f,-14.617f,-16.466f,-15.941f,-15.405f,-16.919f,-17.994f, --17.112f,-18.229f,-17.646f,-18.289f,-17.658f,-17.786f,-18.020f,-16.494f,-14.513f,-13.570f, --16.892f,-15.423f,-12.420f,-10.983f,-11.759f,-11.918f, -8.399f, -5.445f, -3.383f, -0.876f, - 0.092f, 0.854f, 3.933f, 6.793f, 9.695f, 12.790f, 14.118f, 14.751f, 13.533f, 13.976f, - 13.606f -},{ --29.534f,-30.554f,-29.111f,-29.100f,-30.698f,-33.642f,-36.376f,-37.203f,-36.554f,-38.245f, --38.153f,-37.426f,-36.119f,-36.523f,-35.519f,-36.202f,-37.701f,-35.637f,-35.286f,-38.201f, --36.193f,-35.048f,-34.561f,-34.056f,-32.802f,-31.465f,-30.113f,-28.746f,-26.990f,-25.156f, --23.052f,-21.162f,-19.465f,-17.823f,-14.121f,-12.716f,-11.655f,-11.004f,-10.536f,-10.239f, - -9.797f,-10.087f, -9.897f,-10.176f,-10.411f,-10.674f,-11.099f,-11.477f,-12.012f,-12.316f, --12.593f,-12.713f,-12.546f,-12.300f,-12.006f,-11.935f,-11.292f,-10.999f,-10.657f,-10.472f, - -9.976f, -9.532f, -9.109f, -7.968f, -7.057f, -6.232f, -5.682f, -5.205f, -4.794f, -4.479f, - -4.202f, -4.254f, -4.259f, -4.499f, -4.880f, -5.556f, -6.044f, -7.272f, -8.352f, -9.485f, --11.012f,-12.329f,-13.381f,-14.625f,-15.662f,-16.766f,-17.978f,-19.475f,-21.195f,-22.468f, --23.949f,-25.249f,-26.658f,-28.217f,-29.370f,-30.781f,-32.143f,-33.408f,-35.392f,-37.186f, --39.082f,-40.612f,-41.818f,-43.086f,-43.695f,-44.369f,-44.635f,-45.151f,-45.679f,-46.213f, --46.358f,-46.624f,-46.633f,-46.199f,-45.956f,-45.436f,-45.014f,-44.206f,-43.291f,-41.933f, --41.034f,-39.550f,-38.296f,-37.119f,-34.158f,-31.893f,-28.918f,-27.129f,-25.461f,-23.667f, --22.678f,-20.394f,-18.263f,-17.543f,-16.998f,-16.304f,-18.197f,-18.592f,-17.497f,-16.279f, --16.183f,-15.961f,-14.728f,-14.195f,-15.387f,-16.781f,-17.434f,-17.422f,-18.799f,-19.039f, --18.336f,-20.339f,-20.085f,-19.716f,-19.022f,-19.380f,-18.670f,-17.255f,-16.567f,-15.385f, --17.729f,-16.010f,-13.256f,-12.155f,-12.067f,-11.898f, -8.437f, -5.534f, -3.059f, -0.322f, - 0.817f, 1.103f, 3.864f, 6.831f, 9.894f, 12.954f, 14.191f, 14.861f, 13.563f, 14.013f, - 13.606f -},{ --29.534f,-30.553f,-29.050f,-29.103f,-30.902f,-33.686f,-36.096f,-36.866f,-36.183f,-37.789f, --38.035f,-36.717f,-35.598f,-36.366f,-35.838f,-36.592f,-38.173f,-35.405f,-34.441f,-37.658f, --35.740f,-34.701f,-34.044f,-33.661f,-32.453f,-30.997f,-29.644f,-28.212f,-26.676f,-24.960f, --22.945f,-21.099f,-19.515f,-17.069f,-14.148f,-12.937f,-11.802f,-11.204f,-10.635f,-10.238f, - -9.598f, -9.797f, -9.763f, -9.936f,-10.222f,-10.661f,-11.022f,-11.301f,-11.814f,-12.016f, --12.224f,-12.412f,-12.420f,-12.187f,-12.125f,-11.661f,-11.358f,-10.866f,-10.621f,-10.218f, - -9.746f, -9.247f, -8.712f, -7.630f, -6.425f, -5.692f, -5.204f, -4.754f, -4.255f, -3.954f, - -3.692f, -3.628f, -3.641f, -3.891f, -4.232f, -4.826f, -5.512f, -6.737f, -7.882f, -9.150f, --10.713f,-11.940f,-13.379f,-14.353f,-15.510f,-16.623f,-18.082f,-19.571f,-21.208f,-22.508f, --23.996f,-25.318f,-26.636f,-27.959f,-29.289f,-30.828f,-32.140f,-33.523f,-35.171f,-36.828f, --38.594f,-39.958f,-41.069f,-42.285f,-43.068f,-43.615f,-44.065f,-43.914f,-44.761f,-45.400f, --45.569f,-45.948f,-45.728f,-45.620f,-45.061f,-44.586f,-44.184f,-43.359f,-42.506f,-41.788f, --40.227f,-38.494f,-36.502f,-33.181f,-31.850f,-31.647f,-30.432f,-28.038f,-25.462f,-22.301f, --21.096f,-19.176f,-17.163f,-16.205f,-17.081f,-15.281f,-16.499f,-17.465f,-16.633f,-15.794f, --15.886f,-15.653f,-13.114f,-14.657f,-16.322f,-17.275f,-18.365f,-19.255f,-20.362f,-19.627f, --20.388f,-22.436f,-21.966f,-21.500f,-20.754f,-19.812f,-18.828f,-18.256f,-17.551f,-17.083f, --18.059f,-16.429f,-14.078f,-13.078f,-12.790f,-11.633f, -8.300f, -5.819f, -2.712f, 0.186f, - 1.552f, 1.368f, 3.782f, 6.885f, 10.109f, 13.111f, 14.274f, 14.951f, 13.589f, 14.050f, - 13.606f -},{ --29.534f,-30.551f,-28.992f,-29.134f,-31.225f,-33.885f,-35.891f,-36.473f,-35.846f,-37.377f, --38.110f,-36.178f,-35.415f,-36.078f,-35.801f,-35.959f,-37.751f,-35.229f,-33.398f,-37.001f, --35.226f,-34.341f,-33.455f,-33.164f,-31.953f,-30.616f,-29.404f,-27.825f,-26.260f,-24.841f, --23.016f,-21.029f,-19.995f,-16.855f,-14.219f,-13.059f,-11.993f,-11.157f,-10.681f,-10.339f, - -9.726f, -9.739f, -9.777f, -9.832f,-10.060f,-10.423f,-10.814f,-11.115f,-11.537f,-11.724f, --12.022f,-12.119f,-12.054f,-11.928f,-11.617f,-11.616f,-11.303f,-10.734f,-10.453f,-10.003f, - -9.535f, -8.978f, -8.262f, -7.254f, -5.980f, -5.428f, -4.812f, -4.383f, -3.872f, -3.586f, - -3.223f, -3.082f, -3.108f, -3.388f, -3.750f, -4.344f, -4.986f, -6.035f, -7.240f, -8.680f, --10.261f,-11.646f,-13.014f,-14.139f,-15.432f,-16.672f,-17.960f,-19.458f,-20.993f,-22.460f, --23.817f,-25.183f,-26.431f,-27.733f,-29.028f,-30.545f,-31.762f,-33.137f,-34.720f,-36.212f, --37.806f,-39.020f,-40.303f,-41.309f,-42.124f,-42.387f,-43.177f,-43.508f,-43.865f,-44.190f, --44.431f,-44.587f,-44.719f,-44.697f,-44.336f,-43.134f,-43.222f,-42.894f,-43.366f,-40.697f, --38.398f,-34.144f,-32.501f,-34.244f,-32.429f,-31.427f,-28.793f,-27.154f,-24.683f,-22.018f, --19.722f,-18.023f,-16.044f,-16.022f,-15.495f,-15.024f,-15.843f,-15.973f,-16.352f,-15.383f, --15.436f,-14.152f,-12.240f,-16.439f,-17.535f,-17.898f,-19.311f,-20.137f,-21.205f,-20.083f, --22.357f,-24.373f,-23.907f,-23.452f,-22.188f,-20.466f,-18.727f,-19.004f,-18.519f,-18.363f, --18.034f,-16.819f,-15.098f,-13.918f,-13.982f,-11.418f, -8.112f, -6.327f, -2.586f, 0.503f, - 2.344f, 1.665f, 3.741f, 6.969f, 10.327f, 13.253f, 14.364f, 15.020f, 13.612f, 14.088f, - 13.606f -},{ --29.534f,-30.547f,-28.937f,-29.186f,-31.607f,-34.161f,-35.723f,-35.981f,-35.490f,-37.010f, --38.278f,-35.902f,-35.430f,-35.789f,-34.753f,-34.580f,-36.492f,-34.812f,-32.647f,-36.353f, --34.745f,-33.754f,-32.944f,-32.487f,-31.602f,-30.273f,-29.091f,-27.531f,-25.923f,-24.632f, --23.018f,-21.568f,-19.737f,-17.255f,-14.269f,-13.034f,-12.061f,-11.240f,-10.786f,-10.450f, - -9.982f, -9.515f, -9.657f, -9.631f, -9.816f,-10.201f,-10.678f,-10.836f,-11.272f,-11.498f, --11.732f,-11.829f,-11.774f,-11.524f,-11.155f,-11.168f,-11.120f,-10.610f,-10.186f, -9.864f, - -9.250f, -8.714f, -7.932f, -6.878f, -5.848f, -5.213f, -4.604f, -4.007f, -3.571f, -3.246f, - -2.961f, -2.729f, -2.672f, -2.886f, -3.315f, -3.885f, -4.549f, -5.581f, -6.747f, -8.128f, - -9.583f,-11.156f,-12.758f,-13.948f,-15.241f,-16.473f,-17.760f,-19.303f,-20.716f,-22.122f, --23.417f,-24.721f,-25.906f,-27.076f,-28.518f,-30.084f,-31.372f,-32.780f,-34.094f,-35.446f, --36.774f,-37.963f,-39.181f,-40.043f,-40.543f,-41.067f,-41.574f,-42.207f,-42.420f,-42.795f, --43.011f,-43.110f,-43.302f,-43.139f,-42.729f,-42.576f,-41.754f,-42.586f,-37.387f,-37.795f, --34.618f,-34.869f,-35.331f,-34.136f,-32.594f,-30.368f,-28.741f,-26.574f,-24.007f,-20.946f, --19.352f,-17.096f,-15.040f,-14.916f,-13.119f,-14.016f,-14.887f,-15.090f,-15.403f,-15.312f, --14.147f,-13.466f,-15.499f,-17.815f,-18.646f,-19.003f,-20.045f,-21.713f,-22.898f,-21.228f, --24.236f,-26.227f,-25.922f,-25.296f,-23.361f,-21.530f,-19.660f,-19.988f,-20.734f,-19.416f, --18.038f,-17.170f,-16.243f,-14.947f,-14.932f,-11.427f, -7.954f, -6.891f, -2.695f, 0.504f, - 3.179f, 2.033f, 3.785f, 7.086f, 10.535f, 13.376f, 14.457f, 15.070f, 13.633f, 14.126f, - 13.606f -},{ --29.534f,-30.541f,-28.887f,-29.246f,-31.980f,-34.423f,-35.536f,-35.376f,-35.086f,-36.689f, --38.412f,-35.816f,-35.306f,-35.571f,-33.071f,-33.236f,-34.894f,-34.272f,-32.595f,-35.581f, --34.453f,-33.549f,-32.265f,-31.867f,-31.072f,-30.010f,-28.650f,-27.205f,-25.725f,-24.437f, --23.196f,-22.044f,-19.042f,-17.408f,-14.408f,-13.065f,-12.246f,-11.346f,-10.994f,-10.418f, - -9.996f, -9.409f, -9.432f, -9.463f, -9.725f,-10.023f,-10.351f,-10.628f,-10.894f,-11.132f, --11.347f,-11.490f,-11.362f,-11.205f,-10.796f,-11.031f,-10.896f,-10.325f,-10.007f, -9.476f, - -9.004f, -8.375f, -7.452f, -6.390f, -5.661f, -5.219f, -4.492f, -3.796f, -3.278f, -3.004f, - -2.703f, -2.427f, -2.354f, -2.570f, -2.982f, -3.542f, -4.215f, -5.232f, -6.361f, -7.559f, - -8.949f,-10.565f,-12.140f,-13.659f,-14.905f,-16.210f,-17.508f,-18.879f,-20.248f,-21.618f, --22.804f,-24.144f,-25.250f,-26.500f,-27.965f,-29.473f,-30.719f,-32.120f,-33.274f,-34.413f, --35.668f,-36.627f,-37.746f,-38.561f,-38.919f,-39.494f,-39.759f,-40.476f,-40.844f,-41.228f, --41.478f,-41.757f,-41.883f,-41.746f,-41.608f,-41.265f,-41.269f,-37.749f,-37.482f,-35.285f, --36.520f,-35.721f,-34.478f,-32.773f,-31.351f,-29.419f,-27.302f,-25.644f,-22.832f,-20.550f, --19.121f,-17.492f,-14.571f,-13.664f,-11.491f,-13.005f,-13.375f,-14.396f,-15.096f,-14.701f, --15.554f,-16.846f,-18.130f,-19.590f,-20.116f,-20.482f,-20.974f,-22.074f,-23.835f,-24.222f, --26.186f,-27.857f,-27.691f,-26.527f,-24.183f,-22.335f,-21.264f,-21.720f,-23.396f,-20.349f, --18.443f,-17.315f,-17.221f,-16.133f,-15.275f,-11.582f, -7.995f, -7.327f, -2.865f, 0.194f, - 3.949f, 2.504f, 3.931f, 7.234f, 10.729f, 13.479f, 14.548f, 15.100f, 13.655f, 14.165f, - 13.606f -},{ --29.534f,-30.534f,-28.841f,-29.303f,-32.279f,-34.578f,-35.272f,-34.679f,-34.635f,-36.402f, --38.407f,-35.737f,-34.864f,-35.332f,-31.775f,-32.161f,-33.414f,-33.826f,-32.509f,-34.845f, --34.148f,-33.452f,-31.596f,-31.327f,-30.441f,-29.508f,-28.192f,-26.804f,-25.560f,-24.315f, --23.007f,-22.294f,-19.132f,-16.876f,-14.512f,-13.342f,-12.296f,-11.469f,-11.139f,-10.403f, --10.150f, -9.485f, -9.391f, -9.395f, -9.527f, -9.803f,-10.144f,-10.350f,-10.576f,-10.849f, --10.988f,-11.132f,-10.862f,-10.702f,-10.813f,-10.823f,-10.370f,-10.033f, -9.669f, -9.187f, - -8.752f, -7.997f, -6.827f, -6.093f, -5.510f, -4.990f, -4.366f, -3.873f, -3.239f, -2.805f, - -2.404f, -2.132f, -2.066f, -2.315f, -2.808f, -3.358f, -4.062f, -5.036f, -6.103f, -7.242f, - -8.520f,-10.059f,-11.576f,-13.423f,-14.698f,-15.821f,-17.112f,-18.418f,-19.735f,-20.967f, --22.163f,-23.507f,-24.611f,-25.903f,-27.200f,-28.604f,-29.916f,-31.217f,-32.155f,-33.249f, --34.305f,-35.367f,-36.429f,-36.935f,-37.417f,-37.837f,-38.284f,-38.590f,-39.055f,-39.250f, --39.651f,-39.998f,-40.099f,-40.164f,-40.513f,-39.311f,-37.186f,-37.388f,-35.111f,-36.666f, --35.438f,-34.382f,-32.646f,-31.894f,-30.193f,-26.831f,-24.706f,-23.192f,-21.271f,-20.497f, --18.692f,-17.349f,-14.739f,-12.971f,-11.183f,-11.080f,-12.018f,-12.718f,-12.981f,-14.471f, --16.874f,-17.504f,-19.459f,-20.773f,-21.657f,-21.762f,-22.504f,-23.237f,-24.472f,-26.877f, --28.055f,-29.239f,-28.653f,-27.362f,-25.288f,-23.587f,-22.558f,-23.414f,-25.166f,-20.928f, --19.184f,-17.635f,-18.149f,-17.311f,-15.479f,-11.798f, -8.438f, -7.597f, -2.982f, -0.283f, - 4.489f, 3.067f, 4.157f, 7.406f, 10.912f, 13.564f, 14.633f, 15.114f, 13.677f, 14.205f, - 13.606f -},{ --29.534f,-30.526f,-28.799f,-29.345f,-32.447f,-34.555f,-34.890f,-33.929f,-34.169f,-36.113f, --38.204f,-35.503f,-34.276f,-35.022f,-31.506f,-31.186f,-32.231f,-33.473f,-31.999f,-34.492f, --33.642f,-32.957f,-31.459f,-30.621f,-29.832f,-28.904f,-27.645f,-26.315f,-25.410f,-24.204f, --22.768f,-22.129f,-19.340f,-16.694f,-14.464f,-13.448f,-12.191f,-11.687f,-11.345f,-10.716f, --10.408f, -9.624f, -9.555f, -9.474f, -9.564f, -9.763f, -9.947f,-10.120f,-10.337f,-10.570f, --10.727f,-10.702f,-10.469f,-10.373f,-10.512f,-10.442f,-10.156f, -9.661f, -9.238f, -8.877f, - -8.358f, -7.759f, -6.763f, -5.767f, -5.175f, -4.610f, -4.184f, -3.765f, -3.228f, -2.682f, - -2.238f, -2.009f, -2.049f, -2.264f, -2.701f, -3.288f, -3.923f, -4.884f, -5.880f, -7.047f, - -8.304f, -9.670f,-11.117f,-12.607f,-14.144f,-15.534f,-16.669f,-17.943f,-19.267f,-20.510f, --21.686f,-22.925f,-23.929f,-25.205f,-26.558f,-27.746f,-28.978f,-30.048f,-30.906f,-31.918f, --32.741f,-33.679f,-34.585f,-35.314f,-35.884f,-35.977f,-36.471f,-36.638f,-36.980f,-37.262f, --37.646f,-38.073f,-38.166f,-38.650f,-36.864f,-36.638f,-36.266f,-35.725f,-35.914f,-34.543f, --32.916f,-32.218f,-31.158f,-30.714f,-28.836f,-24.669f,-23.479f,-22.638f,-18.959f,-18.290f, --17.721f,-16.912f,-14.530f,-11.866f,-10.896f, -9.422f,-11.668f,-12.827f,-13.982f,-14.551f, --17.534f,-18.714f,-19.682f,-21.785f,-22.915f,-23.365f,-23.670f,-25.098f,-26.290f,-28.679f, --29.440f,-30.099f,-29.475f,-28.429f,-27.000f,-25.140f,-23.878f,-24.683f,-26.392f,-21.645f, --20.370f,-18.877f,-19.282f,-18.391f,-15.941f,-12.109f, -9.205f, -7.779f, -3.131f, -0.742f, - 4.679f, 3.674f, 4.419f, 7.597f, 11.095f, 13.637f, 14.710f, 15.113f, 13.704f, 14.245f, - 13.606f -},{ --29.534f,-30.516f,-28.761f,-29.363f,-32.444f,-34.313f,-34.375f,-33.175f,-33.730f,-35.758f, --37.790f,-35.090f,-33.883f,-34.773f,-31.987f,-30.342f,-31.305f,-33.010f,-31.529f,-34.013f, --33.163f,-32.408f,-31.162f,-29.801f,-29.049f,-28.292f,-27.164f,-25.992f,-25.168f,-24.026f, --22.655f,-21.402f,-19.256f,-16.402f,-14.379f,-13.393f,-12.376f,-11.683f,-11.535f,-10.930f, --10.563f, -9.795f, -9.604f, -9.533f, -9.637f, -9.751f, -9.889f, -9.971f,-10.127f,-10.275f, --10.484f,-10.370f,-10.035f,-10.003f,-10.135f,-10.147f,-10.082f, -9.593f, -8.963f, -8.633f, - -8.062f, -7.358f, -6.442f, -5.419f, -4.975f, -4.651f, -4.216f, -3.732f, -3.120f, -2.619f, - -2.245f, -2.034f, -2.051f, -2.282f, -2.773f, -3.296f, -3.969f, -4.749f, -5.701f, -6.893f, - -8.052f, -9.388f,-10.844f,-12.164f,-13.368f,-14.871f,-16.357f,-17.545f,-18.840f,-19.966f, --21.099f,-22.152f,-23.150f,-24.475f,-25.641f,-26.715f,-27.767f,-28.605f,-29.454f,-30.115f, --31.049f,-31.774f,-32.868f,-33.299f,-33.708f,-33.871f,-34.476f,-34.818f,-35.127f,-34.968f, --35.724f,-36.139f,-36.568f,-36.529f,-35.354f,-34.142f,-35.306f,-35.627f,-33.864f,-32.755f, --31.498f,-30.344f,-29.662f,-29.135f,-26.387f,-24.286f,-23.496f,-23.044f,-20.545f,-17.789f, --16.281f,-13.973f,-13.594f,-10.674f, -9.262f, -8.557f,-11.244f,-11.543f,-14.267f,-15.125f, --17.352f,-18.799f,-20.001f,-21.919f,-23.481f,-24.408f,-25.255f,-26.358f,-28.239f,-29.928f, --30.362f,-30.959f,-30.378f,-29.080f,-28.177f,-26.480f,-25.209f,-26.011f,-27.907f,-23.400f, --22.347f,-21.034f,-20.276f,-19.249f,-16.404f,-12.557f, -9.859f, -7.923f, -3.464f, -1.070f, - 4.522f, 4.266f, 4.672f, 7.802f, 11.289f, 13.706f, 14.779f, 15.103f, 13.735f, 14.286f, - 13.606f -},{ --29.534f,-30.504f,-28.728f,-29.348f,-32.255f,-33.850f,-33.747f,-32.452f,-33.336f,-35.265f, --37.180f,-34.633f,-33.840f,-34.715f,-32.377f,-29.751f,-30.622f,-32.376f,-31.137f,-32.950f, --32.843f,-31.985f,-30.474f,-29.117f,-28.399f,-27.648f,-26.667f,-25.707f,-24.872f,-23.637f, --22.560f,-20.448f,-18.716f,-16.130f,-14.479f,-13.480f,-12.395f,-11.766f,-11.701f,-10.858f, --10.620f, -9.936f, -9.753f, -9.583f, -9.561f, -9.692f, -9.768f, -9.939f,-10.056f,-10.287f, --10.317f,-10.280f, -9.995f, -9.866f, -9.884f, -9.809f, -9.511f, -9.336f, -8.894f, -8.438f, - -7.859f, -6.943f, -6.022f, -5.243f, -4.840f, -4.597f, -4.102f, -3.661f, -3.088f, -2.667f, - -2.311f, -2.184f, -2.201f, -2.409f, -2.848f, -3.339f, -4.035f, -4.737f, -5.705f, -6.768f, - -7.832f, -9.180f,-10.525f,-11.817f,-13.067f,-14.297f,-15.893f,-17.111f,-18.397f,-19.485f, --20.424f,-21.439f,-22.526f,-23.551f,-24.654f,-25.532f,-26.222f,-27.082f,-28.094f,-28.574f, --29.057f,-30.188f,-30.840f,-31.485f,-32.024f,-32.351f,-32.815f,-33.024f,-33.349f,-33.674f, --33.938f,-34.202f,-34.610f,-33.071f,-32.610f,-35.104f,-34.535f,-33.150f,-31.789f,-31.051f, --29.825f,-28.380f,-28.153f,-27.515f,-24.322f,-24.452f,-21.204f,-21.541f,-19.780f,-20.195f, --18.435f,-12.887f,-14.279f,-10.103f, -7.904f, -7.482f,-11.122f,-11.879f,-14.565f,-16.155f, --17.374f,-19.052f,-19.551f,-22.040f,-24.009f,-25.146f,-27.033f,-27.649f,-29.170f,-31.059f, --31.046f,-31.667f,-31.316f,-29.993f,-29.015f,-27.900f,-26.769f,-27.586f,-29.326f,-26.025f, --24.836f,-23.116f,-20.819f,-19.800f,-16.627f,-13.096f,-10.041f, -8.003f, -3.961f, -1.258f, - 4.132f, 4.800f, 4.894f, 8.015f, 11.503f, 13.781f, 14.839f, 15.087f, 13.773f, 14.327f, - 13.606f -},{ --29.534f,-30.491f,-28.700f,-29.297f,-31.889f,-33.203f,-33.053f,-31.776f,-32.975f,-34.606f, --36.403f,-34.300f,-34.017f,-34.701f,-32.078f,-29.261f,-30.211f,-31.817f,-30.615f,-32.152f, --32.666f,-31.496f,-30.111f,-28.665f,-27.698f,-27.020f,-26.168f,-25.290f,-24.429f,-22.984f, --22.274f,-19.578f,-18.463f,-16.044f,-14.515f,-13.447f,-12.425f,-11.920f,-11.613f,-10.803f, --10.688f,-10.049f, -9.948f, -9.549f, -9.523f, -9.671f, -9.712f, -9.802f, -9.945f,-10.127f, --10.267f,-10.112f, -9.855f, -9.839f, -9.735f, -9.588f, -9.131f, -9.068f, -8.724f, -8.220f, - -7.563f, -6.695f, -5.919f, -4.978f, -4.709f, -4.454f, -4.066f, -3.553f, -3.039f, -2.770f, - -2.525f, -2.405f, -2.359f, -2.580f, -3.060f, -3.389f, -4.183f, -4.882f, -5.890f, -6.894f, - -7.981f, -9.160f,-10.405f,-11.650f,-12.873f,-14.028f,-15.549f,-16.830f,-17.893f,-18.921f, --19.809f,-20.652f,-21.779f,-22.718f,-23.649f,-24.343f,-24.997f,-25.679f,-26.555f,-26.935f, --26.935f,-28.393f,-28.957f,-29.701f,-29.830f,-30.569f,-30.638f,-31.449f,-31.666f,-31.692f, --32.142f,-32.234f,-32.555f,-32.913f,-33.243f,-32.632f,-31.417f,-30.578f,-29.142f,-28.589f, --27.914f,-27.405f,-26.793f,-26.000f,-23.169f,-23.080f,-20.373f,-21.308f,-19.390f,-17.917f, --16.662f,-14.122f,-13.550f,-10.136f, -9.767f,-11.822f,-12.677f,-12.451f,-14.663f,-16.312f, --17.322f,-19.620f,-20.016f,-22.022f,-24.617f,-26.025f,-28.251f,-29.041f,-30.096f,-32.177f, --31.838f,-32.281f,-32.401f,-30.993f,-30.171f,-29.337f,-28.654f,-29.505f,-30.356f,-28.424f, --26.921f,-24.263f,-21.294f,-20.089f,-16.799f,-13.603f, -9.865f, -7.944f, -4.393f, -1.351f, - 3.657f, 5.261f, 5.097f, 8.226f, 11.737f, 13.870f, 14.893f, 15.069f, 13.819f, 14.369f, - 13.606f -},{ --29.534f,-30.476f,-28.675f,-29.211f,-31.375f,-32.437f,-32.357f,-31.152f,-32.607f,-33.832f, --35.491f,-34.138f,-34.179f,-34.412f,-31.190f,-28.628f,-29.841f,-31.361f,-30.249f,-31.771f, --32.476f,-31.018f,-29.813f,-28.505f,-27.113f,-26.429f,-25.711f,-24.856f,-23.833f,-22.303f, --21.497f,-19.382f,-17.994f,-15.814f,-14.448f,-13.425f,-12.559f,-12.102f,-11.544f,-10.876f, --10.741f,-10.100f, -9.866f, -9.662f, -9.474f, -9.399f, -9.405f, -9.499f, -9.809f, -9.855f, --10.040f,-10.033f, -9.852f, -9.864f, -9.595f, -9.437f, -8.913f, -8.780f, -8.454f, -7.961f, - -7.290f, -6.439f, -5.563f, -4.771f, -4.559f, -4.244f, -3.911f, -3.610f, -3.200f, -2.815f, - -2.742f, -2.583f, -2.662f, -2.694f, -3.204f, -3.578f, -4.326f, -5.117f, -6.087f, -7.130f, - -8.167f, -9.231f,-10.256f,-11.545f,-12.771f,-13.846f,-15.294f,-16.414f,-17.488f,-18.385f, --19.172f,-20.223f,-20.973f,-21.824f,-22.543f,-23.244f,-23.801f,-24.541f,-25.030f,-25.100f, --25.504f,-26.356f,-26.965f,-27.528f,-27.771f,-28.615f,-29.218f,-29.587f,-29.890f,-30.316f, --30.325f,-30.571f,-31.033f,-31.116f,-30.387f,-29.789f,-28.713f,-27.151f,-24.948f,-24.921f, --25.061f,-25.780f,-25.647f,-23.853f,-22.340f,-20.846f,-21.433f,-20.511f,-16.768f,-16.628f, --15.633f,-15.563f,-14.352f,-13.595f,-12.816f,-11.195f,-13.909f,-14.184f,-15.929f,-16.665f, --17.412f,-19.969f,-20.646f,-22.334f,-25.077f,-26.968f,-28.957f,-29.458f,-30.518f,-32.925f, --32.631f,-33.051f,-33.514f,-32.429f,-32.087f,-31.311f,-30.340f,-31.333f,-31.172f,-29.823f, --27.923f,-24.578f,-21.824f,-20.092f,-17.020f,-13.940f, -9.732f, -7.678f, -4.527f, -1.362f, - 3.184f, 5.642f, 5.313f, 8.421f, 11.981f, 13.977f, 14.944f, 15.053f, 13.875f, 14.412f, - 13.606f -},{ --29.534f,-30.460f,-28.654f,-29.091f,-30.763f,-31.629f,-31.720f,-30.581f,-32.190f,-33.063f, --34.490f,-33.991f,-34.173f,-33.728f,-30.236f,-27.883f,-29.189f,-30.563f,-29.985f,-30.367f, --31.952f,-30.635f,-29.385f,-28.233f,-26.762f,-25.976f,-25.269f,-24.223f,-23.307f,-21.738f, --20.663f,-19.552f,-17.368f,-15.593f,-14.356f,-13.343f,-12.570f,-12.081f,-11.413f,-11.010f, --10.615f,-10.260f, -9.780f, -9.441f, -9.284f, -9.081f, -9.119f, -9.295f, -9.412f, -9.605f, - -9.758f, -9.705f, -9.678f, -9.537f, -9.164f, -9.262f, -8.588f, -8.345f, -8.054f, -7.591f, - -7.063f, -6.141f, -5.312f, -4.528f, -4.106f, -3.871f, -3.855f, -3.575f, -3.266f, -3.052f, - -2.907f, -2.754f, -2.876f, -3.103f, -3.327f, -3.946f, -4.669f, -5.416f, -6.397f, -7.426f, - -8.447f, -9.360f,-10.405f,-11.477f,-12.522f,-13.693f,-14.985f,-16.136f,-17.065f,-17.904f, --18.719f,-19.390f,-20.051f,-20.796f,-21.425f,-22.067f,-22.613f,-23.134f,-23.392f,-23.466f, --23.916f,-24.194f,-24.832f,-25.251f,-25.459f,-26.013f,-26.494f,-26.949f,-27.634f,-27.994f, --29.049f,-30.165f,-29.030f,-28.493f,-27.386f,-26.463f,-24.374f,-23.668f,-23.528f,-23.793f, --25.147f,-25.529f,-24.928f,-23.945f,-22.867f,-22.109f,-20.048f,-18.577f,-15.116f,-14.447f, --13.011f,-11.549f,-13.445f,-12.496f,-10.207f,-13.699f,-14.745f,-14.644f,-16.236f,-16.977f, --18.851f,-20.971f,-21.550f,-23.324f,-25.902f,-27.670f,-29.095f,-29.808f,-31.628f,-33.303f, --33.966f,-33.982f,-34.307f,-33.828f,-33.627f,-33.250f,-31.737f,-32.212f,-31.693f,-30.393f, --28.025f,-24.637f,-21.916f,-19.892f,-17.107f,-14.051f, -9.817f, -7.213f, -4.349f, -1.227f, - 2.718f, 5.922f, 5.587f, 8.589f, 12.219f, 14.103f, 14.995f, 15.041f, 13.940f, 14.455f, - 13.606f -},{ --29.534f,-30.442f,-28.637f,-28.944f,-30.112f,-30.860f,-31.190f,-30.075f,-31.707f,-32.424f, --33.470f,-33.618f,-33.915f,-32.883f,-29.549f,-27.234f,-28.424f,-29.337f,-29.234f,-28.127f, --31.243f,-30.174f,-29.016f,-27.622f,-26.254f,-25.517f,-24.735f,-23.745f,-22.794f,-21.448f, --20.136f,-18.981f,-17.010f,-15.574f,-14.374f,-13.314f,-12.410f,-11.856f,-11.149f,-11.107f, --10.441f,-10.212f, -9.635f, -9.317f, -9.008f, -8.873f, -9.022f, -8.960f, -9.175f, -9.185f, - -9.368f, -9.502f, -9.453f, -9.109f, -8.942f, -8.787f, -8.280f, -7.989f, -7.820f, -7.215f, - -6.716f, -5.892f, -4.938f, -3.984f, -3.725f, -3.489f, -3.616f, -3.500f, -3.181f, -3.075f, - -3.047f, -2.972f, -3.213f, -3.441f, -3.573f, -4.504f, -5.080f, -6.031f, -6.858f, -7.861f, - -8.879f, -9.700f,-10.627f,-11.676f,-12.613f,-13.530f,-14.729f,-15.843f,-16.662f,-17.468f, --18.191f,-18.601f,-19.079f,-19.541f,-20.272f,-20.759f,-21.198f,-21.616f,-21.809f,-21.686f, --22.078f,-22.106f,-22.455f,-22.794f,-23.176f,-23.479f,-23.556f,-24.047f,-24.737f,-27.938f, --29.377f,-27.966f,-25.320f,-25.251f,-22.359f,-21.864f,-21.477f,-23.130f,-23.857f,-24.518f, --24.540f,-24.484f,-24.176f,-22.316f,-21.062f,-19.937f,-18.862f,-17.033f,-16.198f,-13.719f, --12.278f,-10.703f,-11.795f,-13.632f,-14.641f,-14.833f,-15.858f,-15.835f,-16.733f,-17.176f, --19.427f,-21.045f,-21.880f,-23.649f,-25.772f,-28.199f,-29.131f,-29.886f,-32.336f,-33.960f, --35.114f,-35.235f,-35.338f,-34.678f,-34.121f,-33.864f,-32.899f,-32.754f,-32.304f,-30.797f, --27.993f,-24.720f,-21.769f,-19.966f,-17.042f,-13.995f, -9.908f, -6.719f, -4.062f, -0.857f, - 2.241f, 6.066f, 5.950f, 8.728f, 12.434f, 14.245f, 15.050f, 15.036f, 14.018f, 14.499f, - 13.606f -},{ --29.534f,-30.422f,-28.622f,-28.781f,-29.480f,-30.191f,-30.783f,-29.660f,-31.184f,-31.963f, --32.518f,-32.912f,-33.349f,-32.172f,-29.041f,-26.764f,-27.995f,-28.181f,-28.042f,-27.042f, --30.667f,-29.486f,-28.491f,-27.153f,-25.900f,-25.091f,-24.221f,-23.288f,-22.249f,-21.331f, --19.893f,-18.127f,-16.893f,-15.262f,-14.154f,-13.051f,-11.961f,-11.768f,-11.332f,-10.873f, --10.362f,-10.106f, -9.476f, -9.155f, -8.847f, -8.530f, -8.820f, -8.701f, -8.934f, -8.758f, - -8.948f, -9.065f, -9.077f, -8.775f, -8.317f, -8.153f, -7.874f, -7.546f, -7.466f, -6.877f, - -6.340f, -5.689f, -4.583f, -3.609f, -3.353f, -3.140f, -3.226f, -3.284f, -3.087f, -3.118f, - -3.197f, -3.302f, -3.475f, -3.452f, -4.580f, -5.069f, -5.632f, -6.539f, -7.615f, -8.525f, - -9.369f,-10.184f,-10.935f,-11.965f,-12.884f,-13.636f,-14.563f,-15.559f,-16.326f,-16.988f, --17.555f,-17.942f,-18.231f,-18.670f,-19.155f,-19.428f,-19.673f,-19.856f,-20.043f,-19.926f, --20.050f,-20.093f,-20.282f,-20.487f,-20.820f,-21.005f,-21.217f,-21.824f,-22.910f,-24.708f, --20.856f,-21.793f,-22.394f,-20.852f,-19.306f,-20.632f,-21.049f,-22.164f,-23.314f,-23.777f, --24.008f,-23.908f,-23.456f,-22.441f,-22.942f,-21.938f,-18.673f,-17.291f,-17.370f,-15.962f, --17.207f,-15.133f,-13.697f,-15.003f,-14.572f,-14.621f,-15.852f,-16.314f,-17.242f,-17.811f, --19.333f,-20.893f,-22.298f,-24.486f,-26.265f,-28.848f,-29.732f,-31.051f,-32.721f,-34.799f, --35.865f,-36.937f,-36.738f,-36.202f,-35.067f,-34.444f,-34.183f,-33.766f,-33.052f,-31.272f, --28.302f,-24.948f,-22.231f,-20.472f,-16.942f,-13.827f, -9.739f, -6.464f, -3.868f, -0.250f, - 1.796f, 6.058f, 6.422f, 8.853f, 12.614f, 14.398f, 15.112f, 15.040f, 14.106f, 14.544f, - 13.606f -},{ --29.534f,-30.401f,-28.609f,-28.613f,-28.923f,-29.660f,-30.488f,-29.372f,-30.679f,-31.607f, --31.696f,-32.017f,-32.539f,-31.633f,-28.498f,-26.427f,-27.770f,-27.159f,-26.951f,-26.959f, --30.041f,-28.689f,-28.031f,-26.939f,-25.488f,-24.538f,-23.802f,-22.844f,-21.794f,-20.803f, --19.535f,-17.233f,-16.115f,-14.606f,-13.657f,-12.625f,-11.924f,-11.597f,-10.988f,-10.629f, --10.231f, -9.725f, -9.359f, -8.945f, -8.635f, -8.368f, -8.322f, -8.424f, -8.589f, -8.476f, - -8.357f, -8.492f, -8.695f, -8.436f, -7.962f, -7.428f, -7.457f, -7.320f, -7.112f, -6.585f, - -6.025f, -5.345f, -4.425f, -3.421f, -2.948f, -2.921f, -3.070f, -3.200f, -3.129f, -3.239f, - -3.424f, -3.589f, -3.712f, -4.170f, -4.978f, -5.631f, -6.404f, -7.396f, -8.507f, -9.453f, --10.196f,-10.702f,-11.428f,-12.298f,-13.060f,-13.773f,-14.512f,-15.329f,-16.047f,-16.560f, --16.983f,-17.352f,-17.591f,-17.706f,-17.968f,-17.941f,-18.004f,-18.170f,-18.182f,-18.075f, --18.026f,-18.016f,-18.114f,-18.172f,-18.384f,-18.663f,-19.345f,-19.572f,-23.410f,-19.195f, --15.905f,-18.418f,-18.080f,-17.688f,-18.293f,-19.664f,-20.582f,-21.350f,-21.887f,-22.595f, --22.479f,-23.034f,-26.447f,-23.523f,-23.945f,-23.942f,-20.602f,-19.775f,-21.326f,-19.635f, --19.194f,-18.207f,-17.907f,-15.136f,-12.935f,-15.451f,-15.706f,-15.929f,-17.670f,-18.618f, --19.600f,-21.153f,-22.939f,-25.128f,-27.277f,-29.489f,-30.657f,-32.277f,-33.749f,-35.279f, --37.152f,-38.416f,-38.447f,-37.955f,-37.035f,-35.819f,-35.511f,-34.699f,-33.462f,-31.525f, --28.727f,-25.443f,-23.070f,-20.643f,-16.694f,-13.517f, -9.303f, -6.565f, -3.808f, 0.425f, - 1.508f, 5.930f, 7.001f, 8.998f, 12.757f, 14.555f, 15.182f, 15.053f, 14.206f, 14.589f, - 13.606f -},{ --29.534f,-30.378f,-28.597f,-28.450f,-28.480f,-29.270f,-30.268f,-29.235f,-30.262f,-31.204f, --30.985f,-31.194f,-31.753f,-31.105f,-27.912f,-26.183f,-27.201f,-25.948f,-25.965f,-26.069f, --29.253f,-28.081f,-27.597f,-26.766f,-25.090f,-23.995f,-23.190f,-22.473f,-21.273f,-20.129f, --18.908f,-16.624f,-15.508f,-13.816f,-12.988f,-12.180f,-11.843f,-11.157f,-10.606f,-10.299f, - -9.811f, -9.453f, -9.165f, -8.557f, -8.289f, -7.959f, -7.995f, -7.954f, -8.490f, -8.000f, - -7.980f, -7.897f, -8.262f, -7.954f, -7.565f, -6.986f, -7.062f, -6.982f, -6.824f, -6.244f, - -5.612f, -5.054f, -4.005f, -3.243f, -2.677f, -2.626f, -2.867f, -3.107f, -3.174f, -3.359f, - -3.597f, -3.964f, -4.175f, -4.473f, -5.145f, -6.044f, -7.067f, -8.006f, -9.162f,-10.098f, --11.168f,-11.642f,-12.092f,-12.702f,-13.335f,-13.890f,-14.455f,-15.090f,-15.639f,-16.075f, --16.465f,-16.620f,-16.783f,-16.742f,-16.784f,-16.680f,-16.590f,-16.449f,-16.310f,-16.416f, --16.393f,-16.024f,-15.920f,-15.906f,-16.109f,-16.751f,-17.241f,-20.007f,-18.330f,-15.972f, --14.311f,-15.055f,-15.201f,-15.591f,-16.768f,-18.539f,-20.293f,-20.262f,-21.209f,-22.299f, --22.693f,-24.397f,-24.084f,-22.494f,-24.025f,-24.900f,-24.016f,-22.837f,-23.212f,-22.202f, --21.011f,-19.650f,-18.833f,-17.603f,-16.704f,-17.159f,-16.486f,-16.895f,-17.766f,-18.751f, --20.026f,-22.232f,-23.963f,-26.425f,-29.191f,-30.547f,-31.326f,-33.015f,-34.869f,-36.286f, --38.846f,-39.423f,-40.248f,-39.343f,-38.903f,-37.102f,-36.375f,-35.542f,-34.025f,-31.355f, --28.738f,-25.878f,-23.178f,-19.883f,-16.185f,-13.056f, -8.774f, -6.823f, -3.808f, 0.896f, - 1.516f, 5.773f, 7.672f, 9.200f, 12.872f, 14.712f, 15.261f, 15.076f, 14.316f, 14.634f, - 13.606f -},{ --29.534f,-30.354f,-28.586f,-28.306f,-28.174f,-28.999f,-30.073f,-29.247f,-29.981f,-30.620f, --30.270f,-30.553f,-31.266f,-30.504f,-27.402f,-25.966f,-26.269f,-24.939f,-24.844f,-24.605f, --28.238f,-27.613f,-26.939f,-26.346f,-24.794f,-23.601f,-22.871f,-21.926f,-20.886f,-19.559f, --18.373f,-16.226f,-14.846f,-13.376f,-12.343f,-11.815f,-11.658f,-10.838f,-10.036f,-10.109f, - -9.365f, -9.238f, -8.806f, -8.111f, -7.870f, -7.425f, -7.467f, -7.663f, -8.170f, -7.825f, - -7.723f, -7.669f, -7.775f, -7.178f, -7.211f, -6.454f, -6.736f, -6.605f, -6.472f, -5.927f, - -5.231f, -4.631f, -3.973f, -2.992f, -2.046f, -2.329f, -2.639f, -2.949f, -3.104f, -3.433f, - -3.901f, -4.135f, -4.564f, -4.881f, -5.406f, -6.494f, -7.509f, -8.522f, -9.370f,-10.484f, --11.440f,-12.158f,-12.911f,-13.086f,-13.727f,-14.083f,-14.443f,-14.868f,-15.216f,-15.503f, --15.729f,-15.842f,-15.850f,-15.701f,-15.515f,-15.261f,-15.041f,-14.800f,-14.672f,-14.847f, --14.675f,-14.133f,-13.886f,-13.873f,-14.463f,-14.763f,-15.399f,-19.008f,-14.294f,-12.968f, --11.836f,-12.608f,-13.383f,-14.352f,-15.427f,-16.343f,-17.936f,-20.255f,-21.017f,-21.789f, --23.968f,-24.501f,-25.723f,-24.935f,-26.177f,-26.757f,-27.098f,-25.634f,-24.613f,-23.959f, --22.958f,-20.907f,-19.005f,-18.734f,-19.772f,-19.522f,-19.065f,-18.729f,-18.327f,-20.026f, --21.447f,-23.045f,-24.340f,-27.388f,-29.966f,-31.153f,-32.145f,-33.662f,-35.755f,-37.993f, --40.292f,-40.796f,-41.514f,-40.867f,-40.242f,-38.283f,-36.989f,-36.342f,-34.869f,-31.052f, --28.210f,-25.716f,-22.388f,-18.717f,-15.571f,-12.482f, -8.261f, -6.907f, -3.832f, 0.974f, - 1.878f, 5.698f, 8.399f, 9.485f, 12.975f, 14.866f, 15.348f, 15.107f, 14.437f, 14.680f, - 13.606f -},{ --29.534f,-30.327f,-28.574f,-28.189f,-28.010f,-28.803f,-29.860f,-29.374f,-29.841f,-29.837f, --29.415f,-29.946f,-31.035f,-29.890f,-26.953f,-25.643f,-25.347f,-24.595f,-23.753f,-23.901f, --26.922f,-26.813f,-26.421f,-25.648f,-24.228f,-23.162f,-22.580f,-21.494f,-20.532f,-18.827f, --17.612f,-15.880f,-14.536f,-12.984f,-12.097f,-11.456f,-11.057f,-10.163f, -9.839f, -9.780f, - -9.144f, -8.814f, -8.236f, -7.492f, -7.319f, -6.958f, -6.835f, -7.506f, -7.628f, -7.668f, - -7.437f, -7.422f, -7.300f, -6.712f, -6.639f, -6.169f, -6.326f, -6.305f, -6.199f, -5.633f, - -4.925f, -4.214f, -3.400f, -2.618f, -1.855f, -2.075f, -2.375f, -2.823f, -3.089f, -3.277f, - -3.920f, -4.430f, -5.035f, -5.490f, -5.601f, -6.792f, -7.672f, -8.685f, -9.572f,-10.568f, --11.762f,-12.284f,-13.151f,-13.190f,-13.813f,-14.046f,-14.441f,-14.551f,-14.720f,-14.877f, --14.970f,-15.031f,-14.891f,-14.624f,-14.213f,-13.862f,-13.562f,-13.250f,-13.043f,-13.110f, --13.007f,-12.531f,-12.124f,-12.184f,-12.511f,-12.885f,-14.560f,-14.297f, -8.504f,-10.749f, - -9.508f,-11.052f,-12.173f,-13.203f,-14.209f,-14.750f,-18.739f,-21.072f,-22.965f,-23.639f, --23.947f,-24.482f,-26.156f,-27.310f,-28.169f,-27.821f,-28.356f,-27.567f,-25.876f,-25.242f, --24.249f,-22.431f,-20.851f,-21.115f,-23.184f,-21.604f,-20.769f,-20.899f,-20.637f,-21.493f, --22.991f,-24.544f,-26.815f,-28.034f,-30.458f,-31.970f,-33.354f,-34.680f,-36.573f,-39.504f, --41.093f,-41.730f,-42.415f,-42.331f,-41.730f,-39.447f,-37.612f,-36.560f,-35.316f,-31.161f, --27.658f,-25.017f,-21.327f,-17.715f,-14.870f,-11.739f, -7.734f, -6.699f, -3.886f, 0.735f, - 2.512f, 5.788f, 9.129f, 9.858f, 13.084f, 15.016f, 15.443f, 15.144f, 14.567f, 14.726f, - 13.606f -},{ --29.534f,-30.299f,-28.561f,-28.108f,-27.973f,-28.630f,-29.602f,-29.554f,-29.800f,-28.976f, --28.371f,-29.158f,-30.679f,-29.264f,-26.425f,-25.162f,-24.388f,-24.208f,-22.978f,-23.688f, --26.098f,-25.942f,-25.742f,-25.090f,-23.836f,-22.834f,-21.967f,-20.972f,-19.988f,-18.374f, --16.932f,-15.633f,-14.134f,-12.594f,-11.949f,-11.119f,-10.303f, -9.819f, -9.518f, -8.967f, - -8.583f, -8.125f, -7.718f, -7.243f, -6.454f, -6.642f, -6.348f, -7.111f, -7.388f, -7.439f, - -7.116f, -6.938f, -6.895f, -6.181f, -6.183f, -6.059f, -6.030f, -6.104f, -5.831f, -5.249f, - -4.449f, -3.885f, -3.160f, -2.324f, -1.979f, -1.589f, -1.896f, -2.429f, -2.924f, -3.381f, - -4.009f, -4.517f, -5.178f, -5.682f, -5.888f, -6.593f, -7.743f, -8.892f, -9.734f,-10.702f, --11.961f,-12.591f,-13.122f,-13.357f,-13.822f,-14.278f,-14.309f,-14.286f,-14.300f,-14.303f, --14.238f,-14.277f,-13.753f,-13.506f,-13.016f,-12.549f,-12.197f,-11.831f,-11.568f,-11.514f, --11.611f,-11.241f,-10.407f,-10.514f,-10.658f,-11.061f,-14.293f, -8.485f, -7.010f, -6.591f, - -7.020f,-10.317f,-12.421f,-13.217f,-13.160f,-16.250f,-19.984f,-21.983f,-24.404f,-23.903f, --23.141f,-24.099f,-26.960f,-30.097f,-29.451f,-28.250f,-29.397f,-28.210f,-26.605f,-26.227f, --25.052f,-23.289f,-22.296f,-23.714f,-24.917f,-22.541f,-22.183f,-22.090f,-21.999f,-21.522f, --23.789f,-26.567f,-30.026f,-29.758f,-30.927f,-32.798f,-34.448f,-36.138f,-38.130f,-40.677f, --42.152f,-42.800f,-43.070f,-43.434f,-42.936f,-40.302f,-38.258f,-36.629f,-35.446f,-31.611f, --27.524f,-24.172f,-20.141f,-16.653f,-13.895f,-10.768f, -7.165f, -6.348f, -3.885f, 0.492f, - 3.250f, 6.065f, 9.791f, 10.292f, 13.212f, 15.163f, 15.541f, 15.188f, 14.704f, 14.773f, - 13.606f -},{ --29.534f,-30.270f,-28.545f,-28.067f,-28.038f,-28.432f,-29.301f,-29.717f,-29.787f,-28.225f, --27.251f,-28.184f,-29.896f,-28.490f,-25.780f,-24.594f,-23.168f,-23.200f,-22.525f,-23.122f, --26.254f,-25.626f,-24.863f,-24.623f,-23.336f,-22.285f,-21.369f,-20.179f,-19.486f,-18.013f, --16.344f,-15.106f,-13.686f,-12.266f,-11.473f, -9.786f, -9.775f, -9.469f, -9.094f, -8.202f, - -8.049f, -7.357f, -7.322f, -6.826f, -5.720f, -6.159f, -5.784f, -6.298f, -7.402f, -6.632f, - -6.468f, -6.376f, -5.966f, -5.512f, -5.709f, -5.786f, -5.804f, -5.848f, -5.593f, -4.939f, - -4.129f, -3.470f, -2.874f, -2.128f, -1.704f, -1.215f, -1.518f, -2.147f, -2.695f, -3.281f, - -3.981f, -4.772f, -5.298f, -5.912f, -6.046f, -6.732f, -7.602f, -8.844f, -9.905f,-10.898f, --11.968f,-12.571f,-13.129f,-13.388f,-13.780f,-14.086f,-14.132f,-14.075f,-13.916f,-13.668f, --13.482f,-13.417f,-12.809f,-12.434f,-11.849f,-11.378f,-10.957f,-10.483f,-10.320f,-10.366f, --10.231f, -9.980f, -9.195f, -8.900f, -8.926f, -9.589f,-11.996f, -4.809f, -5.691f, -5.209f, - -5.961f,-10.042f,-14.440f,-15.582f,-17.905f,-19.374f,-23.432f,-25.285f,-26.300f,-25.430f, --23.544f,-24.625f,-28.051f,-30.402f,-29.624f,-27.015f,-28.748f,-29.011f,-27.084f,-26.643f, --26.179f,-24.484f,-23.694f,-25.776f,-25.330f,-23.958f,-23.617f,-23.716f,-23.735f,-23.290f, --24.956f,-28.447f,-30.901f,-31.546f,-32.017f,-34.070f,-35.159f,-37.836f,-39.821f,-41.855f, --42.899f,-43.942f,-43.972f,-44.341f,-43.711f,-40.841f,-38.844f,-36.819f,-35.343f,-31.801f, --27.621f,-23.354f,-18.930f,-15.538f,-12.891f, -9.762f, -6.625f, -5.945f, -3.598f, 0.548f, - 3.947f, 6.495f, 10.319f, 10.743f, 13.362f, 15.309f, 15.641f, 15.234f, 14.847f, 14.819f, - 13.606f -},{ --29.534f,-30.238f,-28.526f,-28.067f,-28.168f,-28.177f,-28.978f,-29.807f,-29.730f,-27.720f, --26.262f,-27.245f,-28.828f,-27.497f,-25.151f,-23.938f,-21.913f,-22.446f,-22.066f,-22.351f, --26.642f,-25.296f,-24.412f,-24.034f,-22.726f,-21.938f,-20.636f,-19.503f,-18.763f,-17.349f, --15.896f,-14.434f,-13.289f,-12.041f,-11.271f, -9.967f, -9.048f, -9.068f, -8.539f, -7.683f, - -7.527f, -6.880f, -6.851f, -6.060f, -5.662f, -5.503f, -5.438f, -5.492f, -6.222f, -4.958f, - -5.748f, -5.658f, -5.269f, -4.946f, -5.184f, -5.501f, -5.532f, -5.597f, -5.413f, -4.547f, - -3.767f, -3.180f, -2.460f, -1.740f, -1.267f, -0.938f, -1.373f, -2.079f, -2.555f, -3.174f, - -3.966f, -4.781f, -5.429f, -5.997f, -6.142f, -6.804f, -7.685f, -8.807f, -9.968f,-10.925f, --11.850f,-12.652f,-12.986f,-13.307f,-13.824f,-13.975f,-14.074f,-13.854f,-13.448f,-13.084f, --12.770f,-12.539f,-11.538f,-11.384f,-10.790f,-10.242f, -9.759f, -9.315f, -9.011f, -8.995f, - -9.018f, -8.780f, -8.458f, -7.629f, -7.555f, -9.416f, -7.707f, -3.399f, -4.101f, -4.246f, - -5.580f,-12.678f,-15.871f,-17.751f,-20.374f,-22.659f,-24.558f,-26.483f,-27.929f,-27.338f, --26.719f,-27.181f,-28.489f,-29.778f,-27.266f,-27.501f,-28.024f,-28.944f,-28.668f,-27.794f, --27.075f,-26.006f,-24.947f,-26.558f,-25.754f,-24.647f,-25.206f,-25.302f,-24.970f,-25.304f, --26.678f,-29.648f,-32.100f,-33.113f,-34.470f,-35.168f,-37.031f,-39.391f,-41.312f,-43.328f, --44.201f,-45.064f,-45.213f,-44.887f,-43.823f,-41.090f,-39.193f,-36.767f,-34.940f,-31.670f, --27.592f,-22.754f,-18.270f,-14.947f,-12.386f, -9.037f, -6.211f, -5.329f, -2.845f, 0.946f, - 4.587f, 7.030f, 10.679f, 11.167f, 13.531f, 15.454f, 15.739f, 15.284f, 14.994f, 14.866f, - 13.606f -},{ --29.534f,-30.205f,-28.503f,-28.105f,-28.327f,-27.853f,-28.672f,-29.797f,-29.585f,-27.452f, --25.552f,-26.493f,-27.841f,-26.444f,-24.632f,-23.102f,-20.884f,-22.468f,-21.369f,-21.806f, --27.045f,-24.813f,-23.809f,-23.112f,-22.021f,-21.305f,-20.021f,-18.899f,-17.817f,-16.608f, --15.367f,-13.961f,-12.796f,-11.625f,-10.557f, -9.708f, -8.842f, -8.372f, -8.150f, -7.557f, - -7.038f, -6.588f, -6.770f, -5.989f, -5.396f, -4.663f, -5.006f, -5.384f, -5.081f, -4.334f, - -4.638f, -4.661f, -4.492f, -4.387f, -4.836f, -4.861f, -5.245f, -5.072f, -4.942f, -4.267f, - -3.352f, -2.682f, -1.931f, -1.417f, -0.814f, -0.716f, -0.968f, -1.712f, -2.294f, -2.950f, - -3.860f, -4.597f, -5.404f, -5.901f, -6.283f, -6.781f, -7.763f, -8.780f, -9.896f,-10.916f, --11.760f,-12.571f,-13.003f,-13.430f,-13.861f,-14.021f,-13.834f,-13.507f,-13.019f,-12.539f, --12.028f,-11.693f,-10.440f,-10.454f, -9.683f, -9.195f, -8.642f, -8.149f, -7.602f, -7.519f, - -7.498f, -7.401f, -7.363f, -7.101f, -6.724f, -9.082f, -2.562f, -1.887f, -5.795f, -6.469f, - -9.682f,-15.379f,-19.342f,-21.552f,-23.399f,-22.297f,-22.696f,-25.323f,-28.144f,-28.885f, --27.726f,-27.298f,-27.723f,-27.674f,-26.717f,-26.993f,-28.966f,-29.679f,-29.796f,-29.588f, --27.863f,-27.177f,-25.399f,-26.161f,-26.159f,-25.391f,-26.288f,-26.380f,-27.178f,-27.070f, --28.456f,-30.547f,-32.731f,-34.039f,-35.882f,-37.053f,-38.359f,-40.655f,-42.590f,-44.810f, --45.593f,-46.482f,-46.299f,-45.287f,-43.206f,-41.155f,-38.983f,-36.638f,-34.598f,-31.522f, --27.306f,-22.232f,-18.119f,-14.731f,-12.213f, -8.569f, -5.923f, -4.348f, -1.777f, 1.454f, - 5.296f, 7.644f, 10.892f, 11.545f, 13.707f, 15.597f, 15.831f, 15.334f, 15.143f, 14.913f, - 13.606f -},{ --29.534f,-30.170f,-28.475f,-28.176f,-28.481f,-27.474f,-28.423f,-29.696f,-29.347f,-27.286f, --25.084f,-25.765f,-26.980f,-25.547f,-24.126f,-22.187f,-19.971f,-22.241f,-21.010f,-21.511f, --26.961f,-24.844f,-22.852f,-22.000f,-20.914f,-20.218f,-19.301f,-18.019f,-17.048f,-15.910f, --14.414f,-13.180f,-12.077f,-11.299f,-10.579f, -9.824f, -8.917f, -8.308f, -8.006f, -7.415f, - -6.802f, -6.615f, -6.432f, -5.646f, -4.803f, -4.036f, -4.325f, -4.902f, -4.918f, -3.832f, - -3.813f, -3.996f, -3.811f, -3.931f, -4.453f, -4.423f, -4.765f, -4.812f, -4.497f, -3.732f, - -2.914f, -2.180f, -1.403f, -0.842f, -0.484f, -0.382f, -0.696f, -1.346f, -2.004f, -2.777f, - -3.690f, -4.555f, -5.264f, -5.835f, -6.463f, -6.770f, -7.809f, -8.907f, -9.713f,-10.641f, --11.506f,-12.391f,-13.041f,-13.562f,-13.814f,-13.823f,-13.692f,-13.200f,-12.567f,-11.986f, --11.297f,-10.851f, -9.503f, -9.036f, -8.776f, -8.073f, -7.573f, -7.102f, -6.475f, -6.082f, - -5.877f, -6.002f, -6.128f, -5.929f, -6.172f, -9.198f, -3.420f, -6.489f,-12.111f,-12.995f, --15.108f,-19.087f,-23.682f,-25.783f,-28.108f,-27.310f,-27.050f,-27.982f,-27.242f,-28.275f, --28.729f,-27.709f,-26.727f,-26.530f,-28.649f,-30.050f,-29.635f,-30.117f,-31.547f,-31.601f, --30.247f,-28.132f,-28.201f,-27.205f,-26.595f,-26.696f,-26.759f,-26.984f,-27.290f,-28.057f, --29.196f,-31.114f,-32.691f,-34.349f,-36.750f,-38.757f,-39.719f,-41.925f,-44.007f,-46.379f, --46.765f,-47.628f,-47.166f,-45.396f,-42.814f,-40.852f,-38.174f,-36.242f,-34.265f,-31.381f, --26.710f,-21.124f,-17.656f,-14.005f,-11.700f, -8.050f, -5.644f, -3.239f, -0.859f, 1.841f, - 6.247f, 8.333f, 11.033f, 11.889f, 13.881f, 15.734f, 15.916f, 15.384f, 15.292f, 14.959f, - 13.606f -},{ --29.534f,-30.133f,-28.440f,-28.272f,-28.604f,-27.076f,-28.256f,-29.536f,-29.048f,-27.053f, --24.663f,-24.727f,-25.847f,-24.797f,-23.493f,-21.498f,-19.190f,-21.385f,-21.654f,-21.117f, --24.734f,-24.245f,-22.182f,-21.357f,-20.214f,-19.621f,-18.294f,-17.368f,-16.420f,-15.304f, --13.925f,-12.322f,-10.982f,-11.155f,-11.067f,-10.479f, -9.190f, -8.193f, -7.723f, -7.357f, - -6.676f, -6.263f, -5.693f, -5.008f, -3.964f, -3.681f, -3.999f, -4.199f, -4.246f, -3.269f, - -3.144f, -3.448f, -3.198f, -3.380f, -3.982f, -3.814f, -4.316f, -4.372f, -3.987f, -3.208f, - -2.478f, -1.704f, -0.873f, -0.240f, -0.061f, -0.098f, -0.253f, -0.877f, -1.566f, -2.312f, - -3.228f, -4.092f, -4.970f, -5.808f, -6.397f, -6.971f, -7.711f, -8.615f, -9.684f,-10.570f, --11.211f,-12.194f,-12.995f,-13.397f,-13.573f,-13.628f,-13.271f,-12.796f,-12.084f,-11.499f, --10.732f,-10.141f, -8.532f, -7.738f, -7.788f, -6.958f, -6.398f, -5.919f, -5.367f, -4.819f, - -4.633f, -4.620f, -4.646f, -4.899f, -6.304f,-10.170f, -7.602f, -8.646f,-11.410f,-13.345f, --19.200f,-22.105f,-25.630f,-28.832f,-31.337f,-32.330f,-32.572f,-31.050f,-28.021f,-27.429f, --28.543f,-28.275f,-27.529f,-27.744f,-29.585f,-32.353f,-29.862f,-30.645f,-32.308f,-32.851f, --32.077f,-30.262f,-29.094f,-29.010f,-27.722f,-27.304f,-26.861f,-27.658f,-28.285f,-29.399f, --29.994f,-31.575f,-32.776f,-35.284f,-37.706f,-39.796f,-41.022f,-43.092f,-45.173f,-47.777f, --47.859f,-48.272f,-47.833f,-45.358f,-42.183f,-40.193f,-37.292f,-35.204f,-33.767f,-31.092f, --25.898f,-19.674f,-16.816f,-12.748f,-10.850f, -7.441f, -5.223f, -2.519f, -0.503f, 2.160f, - 7.516f, 9.081f, 11.202f, 12.240f, 14.047f, 15.860f, 15.992f, 15.435f, 15.439f, 15.006f, - 13.606f -},{ --29.534f,-30.094f,-28.399f,-28.382f,-28.682f,-26.706f,-28.179f,-29.354f,-28.738f,-26.677f, --24.110f,-23.310f,-24.177f,-23.988f,-22.790f,-21.094f,-18.774f,-20.964f,-22.407f,-20.080f, --21.519f,-22.405f,-21.551f,-20.807f,-19.666f,-17.863f,-17.339f,-16.698f,-15.666f,-14.632f, --13.560f,-12.346f,-10.754f,-10.750f,-10.940f,-10.390f, -9.049f, -7.950f, -7.464f, -6.962f, - -6.262f, -5.759f, -5.028f, -4.524f, -3.600f, -3.451f, -3.579f, -3.514f, -3.560f, -2.691f, - -2.599f, -2.832f, -2.750f, -2.882f, -3.315f, -3.345f, -3.687f, -3.484f, -3.114f, -2.323f, - -1.630f, -0.942f, -0.439f, 0.041f, 0.134f, 0.318f, 0.132f, -0.623f, -1.140f, -1.880f, - -2.878f, -3.796f, -4.811f, -5.650f, -6.435f, -6.979f, -7.648f, -8.492f, -9.364f,-10.154f, --11.117f,-12.043f,-12.772f,-13.135f,-13.345f,-13.245f,-12.793f,-12.233f,-11.460f,-10.762f, - -9.966f, -8.863f, -7.355f, -6.617f, -6.606f, -5.947f, -5.257f, -4.627f, -4.128f, -3.486f, - -3.227f, -3.142f, -3.342f, -4.056f, -9.336f, -5.231f, -6.303f, -7.178f,-12.716f,-13.514f, --17.323f,-21.419f,-24.493f,-27.441f,-30.608f,-32.107f,-31.118f,-30.235f,-27.152f,-26.588f, --28.501f,-28.822f,-27.055f,-27.648f,-28.527f,-31.634f,-29.003f,-30.280f,-32.537f,-33.407f, --33.085f,-31.840f,-28.311f,-29.039f,-28.918f,-27.710f,-27.286f,-28.889f,-29.200f,-30.555f, --31.177f,-32.609f,-33.948f,-36.362f,-38.697f,-40.661f,-41.993f,-44.927f,-46.190f,-48.897f, --49.050f,-48.825f,-47.891f,-45.238f,-41.318f,-39.419f,-36.598f,-34.185f,-32.961f,-30.403f, --25.242f,-19.291f,-16.436f,-11.863f,-10.272f, -7.006f, -4.568f, -2.428f, -0.706f, 2.720f, - 8.982f, 9.824f, 11.476f, 12.644f, 14.203f, 15.971f, 16.056f, 15.487f, 15.582f, 15.052f, - 13.606f -},{ --29.534f,-30.053f,-28.351f,-28.494f,-28.712f,-26.419f,-28.176f,-29.184f,-28.460f,-26.225f, --23.424f,-21.880f,-22.350f,-23.040f,-22.238f,-20.676f,-18.535f,-20.962f,-21.664f,-18.476f, --20.637f,-20.901f,-20.807f,-20.001f,-19.372f,-16.793f,-16.818f,-15.768f,-15.043f,-14.106f, --12.849f,-11.761f,-10.756f,-10.006f, -9.928f, -9.660f, -8.320f, -7.788f, -7.211f, -6.479f, - -5.811f, -5.082f, -4.294f, -3.861f, -3.247f, -2.973f, -3.026f, -2.950f, -2.824f, -2.183f, - -2.032f, -2.385f, -2.397f, -2.856f, -3.044f, -2.964f, -3.243f, -2.897f, -2.334f, -1.564f, - -0.907f, -0.292f, 0.096f, 0.752f, 0.699f, 0.572f, 0.468f, -0.102f, -0.772f, -1.614f, - -2.580f, -3.493f, -4.479f, -5.496f, -6.350f, -6.853f, -7.477f, -8.178f, -9.186f,-10.088f, --10.932f,-11.906f,-12.403f,-12.784f,-12.858f,-12.735f,-12.279f,-11.520f,-10.582f, -9.851f, - -8.793f, -7.343f, -6.203f, -5.466f, -5.422f, -4.964f, -4.200f, -3.309f, -2.934f, -2.387f, - -2.098f, -1.859f, -1.812f, -4.037f, -7.440f, -5.357f, -2.494f, -5.046f,-11.244f,-11.877f, --15.978f,-20.846f,-24.203f,-26.470f,-28.209f,-30.364f,-29.432f,-28.880f,-25.850f,-25.863f, --28.025f,-27.520f,-26.897f,-27.349f,-27.786f,-29.878f,-29.279f,-29.843f,-32.371f,-33.411f, --32.621f,-32.421f,-32.139f,-30.253f,-29.376f,-28.414f,-27.812f,-29.641f,-30.797f,-32.144f, --32.515f,-33.834f,-35.237f,-37.637f,-39.484f,-41.639f,-43.007f,-46.110f,-47.116f,-49.186f, --49.501f,-49.048f,-47.934f,-45.141f,-40.800f,-38.484f,-36.365f,-33.581f,-31.549f,-29.300f, --25.046f,-20.263f,-16.773f,-11.712f,-10.063f, -6.718f, -3.697f, -2.638f, -1.096f, 3.753f, - 10.335f, 10.455f, 11.870f, 13.125f, 14.356f, 16.061f, 16.109f, 15.540f, 15.721f, 15.098f, - 13.606f -},{ --29.534f,-30.011f,-28.295f,-28.597f,-28.700f,-26.262f,-28.218f,-29.043f,-28.239f,-25.859f, --22.793f,-20.868f,-21.049f,-22.125f,-21.911f,-20.088f,-18.126f,-20.034f,-19.639f,-17.233f, --21.583f,-19.444f,-19.907f,-19.351f,-18.833f,-17.130f,-16.197f,-15.217f,-14.504f,-13.582f, --12.240f,-11.143f, -9.951f, -9.275f, -9.146f, -8.231f, -7.261f, -7.214f, -6.652f, -6.063f, - -5.227f, -4.178f, -3.359f, -2.993f, -2.634f, -2.354f, -2.447f, -2.323f, -2.032f, -1.779f, - -1.607f, -1.874f, -2.313f, -2.705f, -2.943f, -2.864f, -2.738f, -2.322f, -1.506f, -0.894f, - 0.140f, 0.419f, 0.685f, 0.790f, 1.042f, 1.256f, 0.738f, 0.212f, -0.571f, -1.435f, - -2.473f, -3.304f, -4.248f, -5.255f, -6.180f, -6.732f, -7.062f, -7.778f, -8.864f, -9.816f, --10.703f,-11.383f,-11.894f,-12.309f,-12.316f,-12.075f,-11.484f,-10.685f, -9.677f, -9.599f, - -8.208f, -6.204f, -4.958f, -4.320f, -4.117f, -3.991f, -3.169f, -2.240f, -1.536f, -1.046f, - -0.712f, -0.419f, -0.733f, -5.930f, -4.189f, 0.948f, -1.508f, -4.827f,-10.093f,-11.294f, --13.493f,-14.238f,-17.773f,-26.939f,-28.171f,-28.232f,-28.711f,-29.177f,-25.637f,-25.353f, --27.818f,-28.003f,-26.739f,-27.128f,-27.046f,-28.485f,-29.018f,-30.422f,-31.970f,-33.254f, --33.100f,-33.349f,-31.769f,-30.935f,-30.527f,-31.051f,-27.562f,-28.979f,-31.572f,-33.375f, --33.968f,-34.881f,-36.467f,-38.532f,-40.387f,-42.395f,-44.180f,-46.695f,-47.732f,-48.952f, --49.154f,-49.025f,-48.042f,-44.871f,-40.262f,-37.880f,-36.348f,-32.787f,-30.197f,-28.309f, --25.234f,-21.205f,-17.207f,-11.874f, -9.870f, -6.152f, -2.766f, -2.603f, -1.302f, 5.082f, - 11.211f, 10.874f, 12.326f, 13.671f, 14.511f, 16.131f, 16.152f, 15.596f, 15.852f, 15.143f, - 13.606f -},{ --29.534f,-29.967f,-28.231f,-28.679f,-28.662f,-26.269f,-28.274f,-28.941f,-28.086f,-25.724f, --22.436f,-20.218f,-20.330f,-21.393f,-21.564f,-19.554f,-17.774f,-18.420f,-18.008f,-16.613f, --21.642f,-17.354f,-18.675f,-18.447f,-16.879f,-15.567f,-14.887f,-14.421f,-13.809f,-12.847f, --11.530f,-10.756f, -9.085f, -9.195f, -8.793f, -7.210f, -6.411f, -6.490f, -6.010f, -5.182f, - -4.277f, -3.123f, -2.288f, -2.065f, -2.147f, -1.765f, -1.847f, -1.720f, -1.512f, -1.285f, - -1.218f, -1.691f, -2.068f, -2.487f, -2.847f, -2.547f, -2.264f, -1.878f, -1.061f, -0.296f, - 0.494f, 1.118f, 1.292f, 1.121f, 1.226f, 1.436f, 1.039f, 0.335f, -0.236f, -0.996f, - -2.036f, -2.839f, -3.749f, -4.752f, -5.642f, -6.217f, -6.557f, -7.353f, -8.471f, -9.346f, --10.240f,-10.793f,-11.273f,-11.569f,-11.603f,-11.268f,-10.587f, -9.538f, -9.244f, -5.803f, - -5.959f, -4.563f, -3.925f, -3.189f, -2.926f, -2.697f, -2.057f, -1.271f, -0.447f, 0.013f, - 0.429f, 0.753f, -0.069f, -4.832f, -2.915f, 3.820f, -2.647f, -6.087f, -8.023f,-10.023f, --11.654f,-13.279f,-16.267f,-25.388f,-28.536f,-27.377f,-28.561f,-28.540f,-25.329f,-25.099f, --27.507f,-28.031f,-27.337f,-27.414f,-27.668f,-28.099f,-29.044f,-30.873f,-30.795f,-32.665f, --33.235f,-33.469f,-32.904f,-32.370f,-32.905f,-31.370f,-30.159f,-31.297f,-30.647f,-34.415f, --34.886f,-35.909f,-37.433f,-39.667f,-41.558f,-43.388f,-45.100f,-47.127f,-48.057f,-48.637f, --48.150f,-48.183f,-47.693f,-44.411f,-40.000f,-37.650f,-35.993f,-31.899f,-29.732f,-27.907f, --25.515f,-21.251f,-17.110f,-11.988f, -9.731f, -5.127f, -2.019f, -2.095f, -1.231f, 6.161f, - 11.379f, 11.051f, 12.755f, 14.232f, 14.673f, 16.183f, 16.185f, 15.657f, 15.977f, 15.188f, - 13.606f -},{ --29.534f,-29.922f,-28.159f,-28.732f,-28.614f,-26.450f,-28.324f,-28.884f,-28.007f,-25.854f, --22.420f,-19.353f,-19.350f,-20.697f,-20.909f,-19.206f,-17.706f,-17.824f,-17.407f,-15.796f, --20.670f,-16.340f,-17.542f,-17.212f,-15.758f,-14.610f,-13.995f,-13.363f,-12.901f,-12.174f, --11.120f, -9.937f, -8.489f, -8.616f, -7.989f, -6.195f, -5.734f, -5.931f, -5.312f, -4.361f, - -3.378f, -2.509f, -1.521f, -1.213f, -1.318f, -1.019f, -1.217f, -1.040f, -0.931f, -0.940f, - -1.121f, -1.308f, -1.804f, -2.335f, -2.619f, -2.296f, -2.161f, -1.571f, -0.925f, -0.266f, - 0.855f, 1.365f, 1.615f, 1.718f, 1.490f, 1.821f, 1.469f, 0.740f, 0.186f, -0.684f, - -1.467f, -2.325f, -3.318f, -4.382f, -5.206f, -5.628f, -6.008f, -6.954f, -7.956f, -8.714f, - -9.363f, -9.979f,-10.300f,-10.699f,-10.555f,-10.206f, -9.495f, -8.373f, -7.978f, -3.595f, - -4.286f, -3.685f, -2.850f, -2.203f, -1.574f, -1.376f, -0.694f, 0.058f, 0.886f, 1.317f, - 1.283f, 1.603f, -2.309f, -2.850f, 0.467f, 2.127f, -1.857f, -4.754f, -6.843f, -8.827f, --10.723f,-13.624f,-15.260f,-19.682f,-27.855f,-27.006f,-27.437f,-27.054f,-25.779f,-24.535f, --27.256f,-28.492f,-27.164f,-27.904f,-27.286f,-28.349f,-29.111f,-29.507f,-30.262f,-31.925f, --33.271f,-33.341f,-33.394f,-34.306f,-35.521f,-33.788f,-31.013f,-31.699f,-33.131f,-35.250f, --35.009f,-36.989f,-38.989f,-40.700f,-42.640f,-44.601f,-46.384f,-47.597f,-48.196f,-48.295f, --47.040f,-47.059f,-46.916f,-44.116f,-39.909f,-37.315f,-35.612f,-31.426f,-29.761f,-27.929f, --25.671f,-20.799f,-16.244f,-11.846f, -9.787f, -3.988f, -1.623f, -1.251f, -0.955f, 6.491f, - 10.855f, 11.074f, 13.091f, 14.742f, 14.841f, 16.224f, 16.211f, 15.725f, 16.093f, 15.231f, - 13.606f -},{ --29.534f,-29.874f,-28.080f,-28.747f,-28.574f,-26.795f,-28.364f,-28.884f,-28.015f,-26.158f, --22.601f,-17.844f,-17.331f,-19.750f,-19.999f,-18.803f,-17.370f,-18.232f,-17.149f,-14.702f, --19.251f,-16.327f,-16.638f,-16.339f,-15.702f,-14.684f,-13.393f,-12.764f,-12.266f,-11.516f, --10.240f, -9.268f, -8.195f, -7.799f, -7.290f, -5.497f, -5.265f, -5.345f, -4.811f, -3.603f, - -2.654f, -1.736f, -1.140f, -0.446f, -0.488f, -0.274f, -0.254f, -0.212f, -0.357f, -0.445f, - -0.727f, -0.977f, -1.493f, -2.069f, -2.237f, -2.160f, -1.708f, -1.165f, -0.555f, 0.225f, - 0.972f, 1.667f, 2.198f, 2.085f, 1.981f, 2.047f, 1.923f, 1.242f, 0.692f, 0.000f, - -1.017f, -1.980f, -2.866f, -3.687f, -4.499f, -5.189f, -5.652f, -6.316f, -7.037f, -7.777f, - -8.469f, -9.038f, -9.356f, -9.516f, -9.441f, -9.088f, -8.385f, -7.312f, -6.571f, -3.608f, - -3.592f, -2.755f, -1.956f, -0.989f, -0.415f, 0.231f, 0.882f, 1.477f, 2.129f, 2.672f, - 2.826f, 2.687f, -3.456f, -1.186f, 2.576f, 1.753f, -1.492f, -3.591f, -6.263f, -7.394f, --10.087f,-12.400f,-14.823f,-15.823f,-24.407f,-28.003f,-26.206f,-26.010f,-27.360f,-25.215f, --27.842f,-29.256f,-27.842f,-29.043f,-28.320f,-28.619f,-29.190f,-29.006f,-30.201f,-32.271f, --32.778f,-33.030f,-33.530f,-34.796f,-36.827f,-35.926f,-32.245f,-32.536f,-34.551f,-36.255f, --36.326f,-37.746f,-40.649f,-42.038f,-43.831f,-45.577f,-47.537f,-48.074f,-48.677f,-48.006f, --46.226f,-46.288f,-45.726f,-43.497f,-39.699f,-37.028f,-34.990f,-31.390f,-30.077f,-27.857f, --25.648f,-20.245f,-14.867f,-11.318f, -9.662f, -3.021f, -1.521f, -0.175f, -0.432f, 6.028f, - 9.892f, 11.121f, 13.338f, 15.153f, 15.012f, 16.265f, 16.235f, 15.799f, 16.200f, 15.274f, - 13.606f -},{ --29.534f,-29.825f,-27.994f,-28.719f,-28.557f,-27.268f,-28.405f,-28.951f,-28.129f,-26.490f, --22.734f,-16.121f,-14.777f,-18.572f,-19.220f,-18.167f,-16.390f,-18.082f,-16.694f,-14.185f, --17.105f,-15.640f,-15.887f,-15.539f,-14.798f,-13.661f,-12.718f,-12.204f,-11.925f,-10.812f, - -9.455f, -8.824f, -7.554f, -7.059f, -6.705f, -5.090f, -4.842f, -4.545f, -3.981f, -2.914f, - -2.049f, -1.253f, -0.744f, 0.062f, 0.148f, 0.429f, 0.828f, 0.799f, 0.505f, -0.072f, - -0.365f, -0.514f, -1.118f, -1.651f, -1.689f, -1.724f, -1.271f, -0.729f, -0.200f, 0.599f, - 1.154f, 1.819f, 2.740f, 2.741f, 2.495f, 2.758f, 2.291f, 1.768f, 1.226f, 0.393f, - -0.401f, -1.443f, -2.267f, -3.078f, -3.999f, -4.734f, -5.120f, -5.611f, -6.284f, -6.899f, - -7.483f, -8.019f, -8.252f, -8.202f, -8.056f, -7.635f, -6.983f, -5.987f, -5.169f, -3.112f, - -2.634f, -1.796f, -0.990f, 0.291f, 1.365f, 1.717f, 2.536f, 3.131f, 3.666f, 4.400f, - 4.240f, 1.210f, -2.449f, -0.414f, 3.642f, 2.288f, -3.105f, -5.384f, -8.185f, -6.787f, - -8.738f,-11.715f,-13.890f,-16.673f,-20.883f,-27.685f,-25.700f,-26.092f,-30.195f,-28.908f, --27.934f,-29.481f,-28.696f,-30.020f,-28.266f,-28.418f,-29.388f,-30.028f,-31.235f,-32.310f, --32.724f,-33.088f,-34.058f,-35.226f,-36.129f,-36.664f,-33.865f,-35.366f,-34.803f,-37.110f, --37.890f,-39.315f,-41.772f,-43.172f,-44.843f,-46.053f,-47.382f,-48.518f,-48.878f,-47.870f, --46.540f,-45.840f,-44.863f,-42.770f,-39.476f,-36.871f,-34.212f,-31.841f,-30.803f,-27.745f, --25.430f,-19.578f,-13.685f,-10.816f, -9.059f, -2.024f, -1.467f, 1.255f, 0.521f, 5.222f, - 8.851f, 11.388f, 13.581f, 15.456f, 15.177f, 16.317f, 16.261f, 15.882f, 16.299f, 15.317f, - 13.606f -},{ --29.534f,-29.775f,-27.902f,-28.646f,-28.569f,-27.818f,-28.467f,-29.081f,-28.352f,-26.739f, --22.651f,-15.379f,-13.423f,-17.660f,-18.858f,-17.519f,-15.523f,-17.267f,-16.065f,-14.242f, --14.743f,-14.811f,-15.243f,-14.298f,-13.839f,-12.810f,-12.173f,-11.669f,-11.215f,-10.012f, - -8.759f, -8.100f, -6.797f, -6.585f, -6.082f, -4.878f, -4.343f, -3.921f, -2.987f, -1.993f, - -1.072f, -0.697f, -0.059f, 0.576f, 0.826f, 1.231f, 1.750f, 1.783f, 1.385f, 0.426f, - 0.080f, -0.134f, -0.598f, -0.716f, -1.163f, -0.931f, -0.590f, -0.222f, 0.197f, 0.894f, - 1.613f, 2.319f, 2.857f, 3.390f, 3.506f, 2.825f, 2.821f, 2.335f, 1.693f, 0.945f, - 0.081f, -1.026f, -1.795f, -2.548f, -3.405f, -4.303f, -4.658f, -4.869f, -5.480f, -6.028f, - -6.473f, -6.813f, -6.877f, -6.694f, -6.405f, -6.009f, -5.231f, -4.311f, -3.510f, -2.271f, - -1.592f, -0.733f, 0.092f, 1.072f, 2.908f, 3.873f, 4.252f, 4.907f, 5.283f, 5.889f, - 3.805f, -0.708f, -0.253f, 4.336f, 5.349f, 4.204f, -1.735f, -8.567f,-10.969f,-12.327f, --12.657f,-11.306f,-13.494f,-17.786f,-22.682f,-25.695f,-25.305f,-27.023f,-31.493f,-28.955f, --27.782f,-28.545f,-28.548f,-30.106f,-28.961f,-28.526f,-29.797f,-31.190f,-32.447f,-33.458f, --34.039f,-34.353f,-34.260f,-34.713f,-35.792f,-37.238f,-35.433f,-36.057f,-36.212f,-37.558f, --38.928f,-39.989f,-42.642f,-44.288f,-45.612f,-46.543f,-47.504f,-48.525f,-48.416f,-47.814f, --46.981f,-45.667f,-44.080f,-42.038f,-38.955f,-36.589f,-34.016f,-32.073f,-30.921f,-27.845f, --24.803f,-18.838f,-13.146f,-10.928f, -8.340f, -0.726f, -1.233f, 3.063f, 1.969f, 4.660f, - 8.052f, 11.996f, 13.936f, 15.687f, 15.334f, 16.390f, 16.293f, 15.974f, 16.391f, 15.358f, - 13.606f -},{ --29.534f,-29.723f,-27.803f,-28.528f,-28.611f,-28.382f,-28.568f,-29.249f,-28.653f,-26.873f, --22.377f,-16.588f,-14.703f,-17.603f,-18.835f,-17.138f,-15.564f,-16.911f,-15.455f,-14.249f, --12.981f,-14.487f,-14.428f,-13.302f,-13.136f,-11.880f,-11.516f,-11.163f,-10.409f, -9.199f, - -7.968f, -6.921f, -6.209f, -5.995f, -4.976f, -4.296f, -3.730f, -3.213f, -2.067f, -1.160f, - -0.401f, 0.241f, 0.831f, 1.189f, 1.660f, 2.196f, 2.627f, 2.441f, 2.190f, 1.047f, - 0.398f, 0.510f, 0.107f, 0.039f, -0.435f, -0.128f, 0.075f, 0.403f, 0.698f, 1.445f, - 2.137f, 2.750f, 3.422f, 3.758f, 3.856f, 3.449f, 3.274f, 2.837f, 2.248f, 1.385f, - 0.638f, -0.079f, -1.091f, -1.903f, -2.825f, -3.803f, -4.186f, -4.197f, -4.470f, -4.937f, - -5.308f, -5.461f, -5.373f, -5.080f, -4.599f, -4.098f, -3.439f, -2.503f, -1.781f, -1.098f, - -0.431f, 0.610f, 1.354f, 2.320f, 3.666f, 5.594f, 6.117f, 6.417f, 7.134f, 6.275f, - 6.285f, 6.036f, 5.671f, 6.801f, 5.550f, 4.284f, -0.477f, -8.584f,-10.937f,-12.358f, --15.646f,-17.810f,-17.772f,-19.072f,-24.328f,-24.481f,-25.631f,-29.268f,-29.546f,-27.368f, --28.102f,-28.284f,-27.953f,-30.125f,-30.067f,-29.890f,-30.442f,-31.731f,-34.039f,-34.578f, --34.658f,-34.626f,-33.927f,-33.963f,-34.454f,-36.119f,-35.502f,-36.753f,-37.171f,-38.081f, --39.358f,-39.920f,-42.687f,-45.085f,-45.973f,-47.037f,-47.628f,-48.198f,-48.150f,-47.611f, --46.755f,-45.258f,-43.525f,-41.417f,-38.259f,-35.866f,-33.967f,-31.487f,-29.513f,-27.209f, --23.593f,-18.148f,-12.913f,-11.211f, -7.763f, 0.753f, -0.739f, 4.846f, 3.664f, 4.685f, - 7.703f, 12.934f, 14.484f, 15.911f, 15.484f, 16.492f, 16.336f, 16.075f, 16.475f, 15.397f, - 13.606f -},{ --29.534f,-29.670f,-27.700f,-28.369f,-28.675f,-28.899f,-28.708f,-29.402f,-28.958f,-26.923f, --22.098f,-19.518f,-18.243f,-18.498f,-18.895f,-17.032f,-16.164f,-16.916f,-14.982f,-14.122f, --11.857f,-14.012f,-13.719f,-12.802f,-12.333f,-10.970f,-10.866f,-10.442f, -9.774f, -8.412f, - -7.206f, -6.004f, -5.642f, -5.045f, -3.808f, -3.313f, -3.158f, -2.257f, -1.139f, -0.324f, - 0.394f, 1.125f, 1.559f, 2.082f, 2.373f, 3.054f, 3.324f, 3.277f, 3.065f, 1.791f, - 1.034f, 0.807f, 0.991f, 0.974f, 0.670f, 0.929f, 1.079f, 1.495f, 1.679f, 2.102f, - 2.611f, 3.162f, 4.069f, 4.342f, 4.479f, 4.330f, 4.356f, 3.598f, 3.110f, 2.160f, - 1.306f, 0.510f, -0.290f, -1.086f, -2.078f, -2.891f, -3.488f, -3.523f, -3.476f, -3.734f, - -3.957f, -3.917f, -3.837f, -3.328f, -2.817f, -2.270f, -1.485f, -0.465f, 0.297f, 0.879f, - 0.898f, 1.944f, 2.887f, 3.873f, 4.664f, 6.066f, 7.593f, 8.474f, 9.192f, 6.811f, - 10.498f, 8.398f, 8.558f, 7.059f, 5.575f, 3.375f, -1.011f, -7.605f,-11.698f,-13.952f, --14.806f,-19.041f,-20.411f,-22.528f,-26.143f,-27.109f,-27.861f,-27.163f,-26.354f,-27.559f, --28.572f,-28.849f,-27.206f,-30.063f,-30.489f,-31.025f,-30.276f,-32.102f,-34.667f,-34.915f, --34.467f,-34.044f,-34.126f,-33.787f,-33.708f,-34.980f,-35.717f,-37.239f,-37.453f,-38.614f, --39.832f,-40.440f,-42.420f,-45.164f,-45.702f,-46.400f,-47.718f,-47.984f,-47.601f,-46.566f, --45.479f,-44.299f,-42.748f,-40.737f,-37.459f,-34.623f,-33.493f,-30.651f,-27.500f,-25.251f, --22.267f,-17.510f,-12.333f,-10.413f, -6.984f, 2.204f, -0.012f, 6.021f, 5.219f, 5.291f, - 7.905f, 14.058f, 15.214f, 16.190f, 15.635f, 16.626f, 16.396f, 16.183f, 16.553f, 15.436f, - 13.606f -},{ --29.534f,-29.616f,-27.594f,-28.172f,-28.747f,-29.315f,-28.870f,-29.476f,-29.170f,-26.935f, --22.045f,-22.759f,-22.002f,-19.737f,-18.878f,-17.019f,-16.573f,-16.416f,-14.547f,-13.762f, --11.024f,-13.159f,-13.049f,-11.916f,-11.519f,-10.324f, -9.904f, -9.569f, -8.837f, -7.656f, - -6.575f, -5.550f, -4.732f, -3.670f, -2.976f, -2.666f, -1.968f, -1.156f, -0.091f, 0.566f, - 1.144f, 1.771f, 2.294f, 3.040f, 3.606f, 3.886f, 4.202f, 4.301f, 3.924f, 2.740f, - 2.229f, 1.979f, 2.002f, 2.056f, 2.119f, 2.204f, 2.254f, 2.507f, 2.636f, 3.091f, - 3.526f, 3.886f, 4.498f, 5.311f, 5.270f, 4.600f, 4.476f, 4.448f, 4.030f, 3.019f, - 2.341f, 1.549f, 0.833f, -0.124f, -0.974f, -1.728f, -2.335f, -2.389f, -2.275f, -2.283f, - -2.426f, -2.189f, -1.950f, -1.676f, -1.132f, -0.436f, 0.539f, 1.537f, 2.643f, 3.536f, - 3.025f, 3.455f, 4.638f, 5.497f, 6.768f, 7.610f, 8.830f, 10.723f, 10.786f, 10.093f, - 13.705f, 8.875f, 7.289f, 5.509f, 3.445f, 1.040f, -1.643f, -5.668f,-12.240f,-13.241f, --17.054f,-19.712f,-18.958f,-22.877f,-25.362f,-23.348f,-25.442f,-25.039f,-24.584f,-27.915f, --28.637f,-28.609f,-27.744f,-28.620f,-30.955f,-29.739f,-31.896f,-31.330f,-33.923f,-34.537f, --33.753f,-35.896f,-35.168f,-33.969f,-35.515f,-36.402f,-37.496f,-37.232f,-37.385f,-38.693f, --39.938f,-41.382f,-42.867f,-44.658f,-45.100f,-45.329f,-47.442f,-47.819f,-47.117f,-45.798f, --44.088f,-43.133f,-41.520f,-40.030f,-36.709f,-33.332f,-32.725f,-29.632f,-26.357f,-23.597f, --21.466f,-16.747f,-11.181f, -8.295f, -5.894f, 3.763f, 0.886f, 6.436f, 6.455f, 6.303f, - 8.685f, 15.153f, 16.023f, 16.550f, 15.803f, 16.791f, 16.476f, 16.298f, 16.627f, 15.474f, - 13.606f -},{ --29.534f,-29.561f,-27.485f,-27.944f,-28.808f,-29.592f,-29.016f,-29.414f,-29.216f,-26.937f, --22.364f,-24.775f,-23.943f,-20.366f,-18.703f,-16.848f,-16.496f,-15.661f,-14.023f,-13.014f, --10.312f,-12.040f,-12.072f,-10.841f,-10.579f, -9.394f, -8.873f, -8.307f, -7.831f, -6.774f, - -5.752f, -4.827f, -3.553f, -2.732f, -2.448f, -1.516f, -0.769f, 0.036f, 0.867f, 1.565f, - 2.139f, 2.646f, 3.243f, 4.154f, 4.508f, 4.855f, 5.286f, 5.186f, 4.908f, 3.847f, - 3.276f, 3.156f, 3.042f, 3.265f, 3.389f, 3.549f, 3.290f, 3.612f, 3.646f, 4.073f, - 4.657f, 4.966f, 4.988f, 6.133f, 6.409f, 5.127f, 5.556f, 5.628f, 5.742f, 4.452f, - 3.457f, 2.880f, 2.202f, 1.353f, 0.384f, -0.074f, -0.687f, -1.027f, -0.816f, -0.572f, - -0.624f, -0.309f, -0.261f, -0.338f, -0.029f, 0.808f, 1.748f, 3.771f, 4.997f, 6.742f, - 6.166f, 5.724f, 6.504f, 7.444f, 8.504f, 9.357f, 10.021f, 10.894f, 11.912f, 14.872f, - 9.382f, 5.894f, 5.521f, 4.598f, 2.327f, -0.624f, -2.394f, -6.084f,-12.676f,-14.300f, --17.478f,-20.276f,-16.867f,-21.691f,-24.716f,-23.219f,-24.893f,-25.922f,-25.798f,-28.530f, --29.114f,-28.857f,-28.818f,-29.284f,-30.516f,-31.460f,-31.908f,-31.948f,-33.544f,-34.148f, --34.417f,-35.400f,-35.723f,-35.169f,-35.443f,-37.071f,-37.931f,-36.903f,-37.016f,-37.850f, --39.474f,-41.601f,-43.230f,-44.752f,-44.623f,-44.757f,-46.769f,-47.546f,-46.815f,-45.612f, --43.240f,-41.695f,-40.264f,-39.063f,-36.116f,-33.129f,-32.068f,-28.589f,-26.263f,-23.392f, --21.056f,-15.728f, -9.887f, -6.209f, -4.968f, 5.547f, 1.840f, 6.583f, 7.512f, 7.566f, - 9.984f, 16.008f, 16.771f, 16.968f, 16.005f, 16.982f, 16.579f, 16.418f, 16.697f, 15.510f, - 13.606f -},{ --29.534f,-29.505f,-27.374f,-27.691f,-28.836f,-29.713f,-29.104f,-29.197f,-29.084f,-26.938f, --23.038f,-25.028f,-23.573f,-19.773f,-18.323f,-16.293f,-15.777f,-15.252f,-13.439f,-12.202f, - -9.994f,-10.748f,-11.279f,-10.173f, -9.530f, -8.398f, -7.756f, -7.082f, -6.890f, -5.996f, - -5.001f, -4.019f, -2.513f, -2.061f, -1.683f, -0.938f, 0.389f, 1.241f, 1.784f, 2.410f, - 3.195f, 3.472f, 3.962f, 4.820f, 5.415f, 5.811f, 6.328f, 6.224f, 5.897f, 5.094f, - 4.465f, 4.379f, 4.187f, 4.525f, 4.856f, 4.712f, 4.877f, 4.633f, 4.863f, 4.938f, - 5.396f, 5.847f, 6.092f, 6.802f, 6.435f, 7.747f, 6.233f, 7.024f, 6.463f, 6.289f, - 5.230f, 4.431f, 3.706f, 3.019f, 2.387f, 1.656f, 1.271f, 1.259f, 1.282f, 1.328f, - 0.754f, 0.348f, -0.200f, -1.880f, -2.859f, -1.952f, 0.079f, 3.155f, 6.263f, 8.896f, - 9.560f, 8.454f, 9.042f, 10.141f, 10.469f, 10.401f, 12.807f, 11.570f, 14.169f, 13.263f, - 6.287f, 3.364f, 3.070f, 1.887f, 0.571f, -1.169f, -3.611f, -6.824f,-11.238f,-16.173f, --18.082f,-21.693f,-17.940f,-21.570f,-25.644f,-23.572f,-24.490f,-25.994f,-27.664f,-29.201f, --29.424f,-29.648f,-30.738f,-31.255f,-31.056f,-33.018f,-32.282f,-32.104f,-33.471f,-34.827f, --34.598f,-34.055f,-35.544f,-35.757f,-36.395f,-37.379f,-37.907f,-36.853f,-37.684f,-38.385f, --38.876f,-41.188f,-43.210f,-44.873f,-44.520f,-44.523f,-46.467f,-46.862f,-46.180f,-45.119f, --42.633f,-40.230f,-39.083f,-38.102f,-35.295f,-33.421f,-31.242f,-28.139f,-26.437f,-23.549f, --20.484f,-14.581f, -9.026f, -5.274f, -4.277f, 6.980f, 2.731f, 7.076f, 8.581f, 8.945f, - 11.619f, 16.492f, 17.361f, 17.384f, 16.257f, 17.190f, 16.704f, 16.540f, 16.767f, 15.544f, - 13.606f -},{ --29.534f,-29.448f,-27.264f,-27.423f,-28.812f,-29.681f,-29.092f,-28.854f,-28.837f,-26.954f, --23.880f,-24.177f,-21.973f,-18.190f,-17.899f,-15.511f,-14.435f,-14.760f,-12.831f,-11.435f, - -9.989f, -9.452f,-10.619f, -9.503f, -8.441f, -7.209f, -6.469f, -6.087f, -5.735f, -5.075f, - -4.256f, -3.065f, -1.990f, -1.049f, -0.591f, 0.697f, 1.686f, 2.315f, 2.805f, 3.410f, - 4.065f, 4.447f, 4.776f, 5.724f, 6.623f, 6.443f, 7.182f, 7.207f, 7.056f, 6.361f, - 5.549f, 5.651f, 5.400f, 5.713f, 6.000f, 5.968f, 6.599f, 5.529f, 6.087f, 6.379f, - 6.536f, 6.537f, 6.656f, 7.709f, 7.759f, 7.863f, 7.945f, 7.101f, 7.039f, 7.684f, - 6.876f, 6.146f, 5.443f, 5.010f, 4.526f, 4.105f, 3.500f, 3.552f, 3.410f, 2.276f, - 0.387f, -2.256f, -1.858f, 2.812f, 8.417f, 11.235f, 8.132f, 4.963f, 10.866f, 10.032f, - 8.863f, 9.541f, 11.276f, 11.834f, 13.071f, 12.147f, 12.897f, 11.754f, 15.276f, 10.722f, - 2.591f, 1.122f, 2.554f, 0.459f, -0.594f, -3.246f, -5.112f, -8.262f,-12.137f,-16.362f, --19.107f,-22.843f,-20.041f,-23.001f,-26.459f,-24.480f,-26.254f,-27.155f,-29.539f,-29.652f, --30.124f,-31.017f,-32.787f,-32.923f,-32.450f,-31.829f,-34.152f,-32.285f,-32.258f,-34.314f, --34.545f,-34.406f,-35.412f,-36.349f,-36.235f,-37.244f,-37.555f,-36.696f,-37.805f,-38.592f, --38.800f,-41.360f,-43.292f,-44.712f,-44.396f,-44.379f,-45.182f,-44.838f,-44.693f,-43.809f, --42.291f,-38.486f,-37.536f,-37.323f,-34.359f,-32.546f,-30.228f,-27.893f,-26.272f,-23.086f, --19.567f,-13.427f, -8.485f, -4.801f, -3.175f, 7.147f, 3.595f, 8.010f, 9.604f, 10.211f, - 13.270f, 16.601f, 17.799f, 17.728f, 16.566f, 17.408f, 16.850f, 16.663f, 16.837f, 15.577f, - 13.606f -},{ --29.534f,-29.391f,-27.155f,-27.144f,-28.715f,-29.516f,-28.960f,-28.460f,-28.587f,-27.004f, --24.603f,-23.302f,-20.591f,-16.630f,-17.808f,-15.102f,-13.195f,-13.730f,-12.318f,-10.706f, - -9.534f, -8.249f, -9.827f, -8.608f, -7.479f, -6.024f, -5.437f, -5.010f, -4.561f, -4.132f, - -3.512f, -2.162f, -1.246f, -0.345f, 0.736f, 1.526f, 2.567f, 3.391f, 4.108f, 4.528f, - 4.949f, 5.478f, 5.897f, 6.809f, 7.597f, 7.210f, 8.302f, 8.155f, 8.132f, 7.699f, - 6.855f, 6.701f, 6.469f, 6.772f, 7.252f, 7.344f, 7.443f, 6.383f, 7.095f, 7.296f, - 7.996f, 7.843f, 8.031f, 8.646f, 9.468f, 8.409f, 8.094f, 8.015f, 8.413f, 8.241f, - 8.162f, 7.802f, 7.817f, 7.324f, 6.701f, 6.950f, 6.319f, 5.702f, 3.823f, -0.052f, - -0.787f, 5.812f, 8.543f, 8.719f, 9.899f, 16.603f, 15.855f, 10.183f, 18.492f, 15.868f, - 14.391f, 12.117f, 10.550f, 12.655f, 13.635f, 13.356f, 13.718f, 11.960f, 14.540f, 12.352f, - 0.841f, -0.803f, 0.311f, -1.568f, -2.804f, -5.725f, -7.157f,-10.349f,-14.964f,-19.553f, --19.246f,-23.508f,-21.350f,-23.667f,-26.369f,-28.308f,-28.446f,-29.534f,-31.274f,-32.042f, --32.390f,-33.632f,-34.468f,-34.311f,-33.553f,-32.229f,-32.823f,-33.327f,-32.406f,-32.254f, --33.945f,-34.525f,-34.976f,-36.699f,-36.758f,-36.589f,-36.926f,-36.641f,-37.916f,-39.139f, --39.502f,-42.133f,-43.546f,-44.626f,-44.008f,-44.446f,-44.033f,-43.698f,-43.768f,-44.006f, --42.354f,-37.456f,-35.750f,-36.062f,-33.837f,-31.898f,-29.717f,-27.239f,-25.470f,-22.237f, --18.443f,-12.124f, -7.539f, -3.310f, -1.352f, 6.127f, 4.686f, 8.922f, 10.279f, 11.028f, - 14.574f, 16.463f, 18.191f, 17.953f, 16.931f, 17.628f, 17.015f, 16.785f, 16.909f, 15.608f, - 13.606f -},{ --29.534f,-29.334f,-27.049f,-26.863f,-28.533f,-29.249f,-28.705f,-28.111f,-28.437f,-27.084f, --24.948f,-22.982f,-20.134f,-16.209f,-18.184f,-15.328f,-12.777f,-12.681f,-12.004f,-10.303f, - -8.542f, -7.367f, -9.152f, -7.489f, -6.538f, -4.965f, -4.158f, -3.950f, -3.313f, -3.067f, - -2.470f, -1.537f, -0.170f, 0.613f, 1.765f, 3.079f, 3.678f, 4.469f, 5.098f, 5.351f, - 5.550f, 6.066f, 6.742f, 7.737f, 8.531f, 8.862f, 9.201f, 9.078f, 9.228f, 9.037f, - 8.081f, 7.928f, 7.540f, 8.029f, 8.435f, 8.352f, 10.050f, 7.614f, 8.597f, 8.475f, - 9.029f, 9.255f, 9.421f, 9.990f, 9.356f, 9.508f, 9.457f, 8.719f, 8.768f, 9.073f, - 9.374f, 9.884f, 10.305f, 10.080f, 9.750f, 9.851f, 8.505f, 6.255f, 1.934f, 2.243f, - 9.197f, 13.758f, 14.608f, 17.188f, 16.723f, 18.323f, 17.178f, 22.230f, 23.432f, 23.746f, - 22.030f, 17.646f, 12.585f, 10.941f, 13.089f, 14.384f, 14.105f, 11.813f, 15.043f, 14.482f, - 1.139f, -2.089f, -1.633f, -3.915f, -5.947f, -7.663f,-10.162f,-12.285f,-15.805f,-22.293f, --20.908f,-21.382f,-22.847f,-25.137f,-26.916f,-28.416f,-30.412f,-30.186f,-33.574f,-34.896f, --35.801f,-35.548f,-36.607f,-36.184f,-35.575f,-34.867f,-32.332f,-32.687f,-33.429f,-32.926f, --32.690f,-33.319f,-33.373f,-36.311f,-37.098f,-35.908f,-36.632f,-37.246f,-38.194f,-39.390f, --40.189f,-41.918f,-43.200f,-43.884f,-43.370f,-44.282f,-43.767f,-43.764f,-42.435f,-41.684f, --40.768f,-37.052f,-34.275f,-34.543f,-33.020f,-31.504f,-29.046f,-26.567f,-24.340f,-21.422f, --17.118f,-10.484f, -5.807f, -0.686f, 0.779f, 5.445f, 6.209f, 9.362f, 10.363f, 11.134f, - 15.267f, 16.292f, 18.678f, 18.060f, 17.337f, 17.845f, 17.191f, 16.906f, 16.985f, 15.638f, - 13.606f -},{ --29.534f,-29.276f,-26.946f,-26.583f,-28.258f,-28.911f,-28.349f,-27.883f,-28.425f,-27.141f, --24.823f,-23.061f,-20.435f,-17.315f,-18.575f,-15.512f,-12.740f,-12.036f,-11.488f, -9.694f, - -7.356f, -6.691f, -8.233f, -6.280f, -5.433f, -3.804f, -2.623f, -2.589f, -2.202f, -1.868f, - -1.251f, -0.636f, 0.534f, 1.595f, 2.935f, 3.893f, 4.741f, 4.998f, 5.364f, 5.042f, - 5.193f, 5.606f, 7.269f, 8.558f, 9.757f, 10.408f, 10.024f, 10.219f, 10.352f, 10.319f, - 9.377f, 9.263f, 9.036f, 9.205f, 9.797f, 9.703f, 9.599f, 8.770f, 10.035f, 9.933f, - 10.171f, 11.151f, 10.863f, 11.712f, 11.115f, 11.024f, 10.536f, 10.140f, 9.799f, 10.489f, - 10.897f, 11.762f, 12.053f, 13.024f, 12.950f, 11.654f, 8.769f, 6.645f, 10.235f, 14.975f, - 20.177f, 18.928f, 19.770f, 19.485f, 18.818f, 11.432f, 12.875f, 16.238f, 23.414f, 23.147f, - 24.530f, 27.656f, 19.544f, 15.393f, 10.132f, 11.971f, 12.096f, 13.955f, 14.609f, 9.980f, - -1.612f, -3.647f, -4.189f, -6.434f, -7.564f, -9.534f,-12.732f,-13.847f,-15.111f,-24.345f, --22.599f,-23.245f,-23.553f,-24.223f,-27.047f,-31.537f,-32.881f,-33.446f,-36.365f,-37.026f, --38.804f,-39.579f,-38.748f,-39.374f,-38.881f,-37.226f,-35.995f,-33.776f,-33.502f,-34.129f, --34.968f,-33.684f,-32.410f,-35.393f,-36.772f,-35.312f,-36.356f,-36.514f,-37.684f,-38.937f, --40.086f,-40.673f,-41.683f,-42.554f,-42.054f,-42.928f,-42.590f,-42.219f,-40.645f,-38.629f, --37.853f,-35.179f,-32.503f,-33.046f,-31.718f,-29.657f,-28.222f,-26.358f,-23.448f,-20.519f, --15.364f, -8.458f, -3.509f, 1.653f, 2.990f, 6.580f, 8.024f, 9.361f, 9.910f, 10.537f, - 15.291f, 16.311f, 19.339f, 18.097f, 17.762f, 18.059f, 17.374f, 17.025f, 17.066f, 15.665f, - 13.606f -},{ --29.534f,-29.219f,-26.848f,-26.311f,-27.887f,-28.527f,-27.924f,-27.803f,-28.503f,-27.082f, --24.357f,-23.108f,-20.987f,-19.280f,-18.416f,-14.792f,-12.147f,-11.381f,-10.319f, -8.320f, - -5.857f, -5.525f, -6.920f, -5.055f, -4.173f, -2.440f, -1.197f, -1.016f, -0.680f, -0.483f, - 0.031f, 0.608f, 1.465f, 2.652f, 3.733f, 4.819f, 4.807f, 4.642f, 4.505f, 4.609f, - 5.609f, 5.801f, 6.903f, 8.946f, 10.784f, 11.133f, 10.711f, 11.204f, 11.369f, 11.142f, - 10.719f, 10.306f, 10.284f, 10.672f, 11.023f, 11.303f, 10.565f, 10.754f, 11.878f, 11.315f, - 11.527f, 12.024f, 12.363f, 13.250f, 13.026f, 12.093f, 12.434f, 11.684f, 11.325f, 12.055f, - 12.501f, 13.378f, 14.353f, 15.236f, 14.757f, 11.037f, 11.663f, 16.848f, 24.029f, 26.677f, - 24.226f, 19.277f, 13.362f, 11.386f, 14.262f, 10.401f, 10.194f, 9.929f, 13.751f, 14.986f, - 17.319f, 24.490f, 26.364f, 23.863f, 17.340f, 16.469f, 19.252f, 17.022f, 12.334f, 1.487f, - -4.462f, -5.897f, -5.925f, -8.231f,-12.088f,-13.830f,-14.551f,-16.545f,-15.042f,-26.453f, --24.633f,-25.276f,-28.776f,-26.836f,-31.758f,-32.988f,-39.057f,-37.559f,-38.493f,-41.224f, --41.382f,-42.693f,-40.914f,-39.885f,-39.885f,-38.902f,-37.463f,-36.455f,-34.855f,-33.146f, --34.505f,-34.015f,-33.282f,-35.316f,-35.783f,-34.489f,-35.345f,-35.732f,-36.169f,-38.051f, --39.478f,-39.348f,-40.346f,-40.910f,-40.909f,-40.947f,-40.881f,-40.562f,-38.396f,-36.101f, --34.574f,-32.870f,-30.521f,-32.246f,-30.695f,-27.773f,-27.517f,-25.586f,-22.349f,-19.044f, --13.192f, -6.214f, -1.126f, 2.854f, 5.545f, 9.291f, 9.756f, 9.300f, 9.246f, 9.527f, - 14.774f, 16.667f, 20.127f, 18.139f, 18.181f, 18.273f, 17.556f, 17.143f, 17.153f, 15.691f, - 13.606f -},{ --29.534f,-29.161f,-26.755f,-26.049f,-27.426f,-28.110f,-27.461f,-27.836f,-28.567f,-26.830f, --23.824f,-22.938f,-21.388f,-20.871f,-17.818f,-13.247f,-10.937f,-10.391f, -8.785f, -7.121f, - -4.497f, -3.825f, -5.249f, -3.516f, -3.014f, -0.980f, 0.005f, 0.496f, 0.859f, 0.662f, - 1.308f, 1.764f, 2.665f, 3.578f, 4.620f, 4.502f, 4.200f, 4.696f, 7.113f, 9.192f, - 10.007f, 10.229f, 10.886f, 9.810f, 11.256f, 10.791f, 10.318f, 10.073f, 10.717f, 11.120f, - 10.968f, 10.602f, 10.940f, 11.164f, 11.942f, 12.556f, 12.425f, 11.665f, 13.241f, 12.703f, - 13.440f, 13.603f, 13.621f, 14.212f, 14.531f, 14.115f, 14.179f, 14.100f, 13.420f, 13.875f, - 14.635f, 15.338f, 15.880f, 15.779f, 12.678f, 15.450f, 24.460f, 31.969f, 31.575f, 31.677f, - 28.332f, 17.668f, 11.924f, 12.133f, 12.603f, 11.414f, 11.955f, 14.172f, 15.982f, 17.122f, - 18.048f, 19.095f, 24.361f, 26.881f, 26.670f, 27.074f, 26.218f, 21.663f, 8.879f, 2.233f, - -2.569f, -8.607f,-10.265f,-11.492f,-14.670f,-15.269f,-16.872f,-18.741f,-20.030f,-26.542f, --26.136f,-28.532f,-31.906f,-30.369f,-34.474f,-38.978f,-43.671f,-44.466f,-45.423f,-46.324f, --46.466f,-43.594f,-43.204f,-44.186f,-41.492f,-39.744f,-40.296f,-39.009f,-37.211f,-35.499f, --34.671f,-33.240f,-32.894f,-33.550f,-34.098f,-34.044f,-33.849f,-34.863f,-34.535f,-36.958f, --37.730f,-37.314f,-38.641f,-39.095f,-39.166f,-38.613f,-38.899f,-38.550f,-36.573f,-34.416f, --31.920f,-30.756f,-28.570f,-31.190f,-29.379f,-26.423f,-25.997f,-23.690f,-20.599f,-16.884f, --10.755f, -4.083f, 0.615f, 3.904f, 8.389f, 12.036f, 11.192f, 9.441f, 8.750f, 8.475f, - 13.902f, 17.351f, 20.875f, 18.253f, 18.568f, 18.490f, 17.733f, 17.262f, 17.247f, 15.715f, - 13.606f -},{ --29.534f,-29.104f,-26.669f,-25.799f,-26.888f,-27.659f,-26.983f,-27.901f,-28.516f,-26.389f, --23.467f,-22.673f,-21.408f,-21.229f,-17.453f,-11.667f, -9.612f, -9.340f, -7.260f, -6.240f, - -3.831f, -2.539f, -2.912f, -2.025f, -1.937f, 0.300f, 1.187f, 1.891f, 2.269f, 1.864f, - 2.254f, 2.981f, 3.712f, 4.559f, 5.112f, 3.359f, 3.676f, 9.078f, 12.788f, 13.698f, - 13.496f, 14.709f, 15.004f, 13.460f, 14.942f, 13.389f, 12.349f, 11.704f, 11.752f, 11.317f, - 9.575f, 9.342f, 8.839f, 9.475f, 11.155f, 12.814f, 14.020f, 13.543f, 14.572f, 14.432f, - 14.665f, 15.317f, 15.264f, 16.200f, 15.778f, 16.565f, 15.758f, 15.874f, 15.699f, 15.778f, - 16.493f, 17.218f, 16.978f, 14.125f, 15.241f, 30.370f, 37.657f, 35.765f, 32.546f, 30.958f, - 26.513f, 19.218f, 14.606f, 16.228f, 14.569f, 14.610f, 15.957f, 18.079f, 18.872f, 18.671f, - 19.591f, 19.666f, 19.699f, 18.380f, 17.578f, 23.061f, 20.064f, 14.158f, 4.214f, -2.232f, - -4.783f, -8.867f,-16.480f,-16.899f,-17.714f,-17.959f,-19.330f,-21.061f,-22.868f,-27.496f, --27.440f,-34.213f,-36.796f,-36.005f,-39.141f,-43.279f,-43.199f,-43.823f,-45.416f,-45.885f, --45.821f,-44.410f,-45.971f,-47.554f,-46.960f,-42.778f,-39.912f,-38.591f,-37.491f,-36.329f, --34.040f,-33.950f,-30.580f,-32.079f,-30.870f,-32.075f,-33.102f,-33.938f,-33.445f,-35.790f, --35.735f,-35.682f,-36.308f,-36.758f,-37.005f,-36.608f,-36.959f,-36.713f,-34.855f,-32.752f, --29.931f,-28.520f,-27.072f,-29.377f,-27.798f,-24.864f,-24.243f,-22.136f,-18.618f,-14.227f, - -7.833f, -2.148f, 1.351f, 6.148f, 10.873f, 13.871f, 12.398f, 9.741f, 8.705f, 7.626f, - 12.802f, 18.192f, 21.375f, 18.475f, 18.902f, 18.715f, 17.900f, 17.383f, 17.349f, 15.737f, - 13.606f -},{ --29.534f,-29.048f,-26.591f,-25.562f,-26.291f,-27.163f,-26.498f,-27.896f,-28.310f,-25.865f, --23.338f,-22.430f,-20.960f,-20.446f,-17.571f,-10.436f, -8.286f, -8.379f, -5.647f, -4.484f, - -3.088f, -1.633f, -0.641f, -0.587f, -0.438f, 1.304f, 2.389f, 2.874f, 3.450f, 3.349f, - 4.024f, 4.352f, 4.949f, 5.868f, 4.961f, 3.454f, 8.809f, 11.276f, 13.084f, 14.942f, - 15.815f, 16.335f, 15.561f, 17.947f, 17.583f, 16.116f, 13.930f, 14.558f, 15.742f, 15.713f, - 13.400f, 12.994f, 14.327f, 12.411f, 9.047f, 9.523f, 13.314f, 15.189f, 15.667f, 15.872f, - 15.745f, 16.733f, 16.743f, 17.726f, 17.436f, 18.184f, 18.248f, 17.622f, 17.240f, 17.950f, - 18.283f, 18.825f, 17.399f, 11.838f, 30.432f, 38.459f, 37.101f, 34.334f, 30.987f, 28.697f, - 23.260f, 20.675f, 20.568f, 20.244f, 17.763f, 18.557f, 19.968f, 20.343f, 19.527f, 19.657f, - 20.685f, 22.215f, 20.394f, 17.507f, 18.950f, 21.723f, 13.390f, 4.358f, 1.792f, -1.771f, - -4.390f, 0.010f,-20.105f,-21.884f,-20.811f,-21.000f,-22.735f,-25.496f,-24.847f,-27.188f, --35.951f,-41.624f,-37.785f,-39.063f,-43.020f,-44.446f,-45.257f,-45.183f,-45.907f,-46.761f, --46.822f,-48.331f,-49.992f,-49.582f,-47.775f,-45.232f,-42.979f,-41.888f,-38.857f,-37.024f, --33.760f,-32.312f,-32.012f,-31.517f,-29.181f,-29.968f,-32.514f,-32.685f,-32.739f,-34.675f, --34.540f,-34.293f,-34.345f,-34.288f,-34.676f,-34.506f,-35.086f,-34.850f,-33.317f,-31.106f, --28.113f,-26.520f,-25.359f,-27.720f,-25.809f,-23.133f,-22.590f,-21.016f,-16.532f,-11.411f, - -4.749f, -0.239f, 2.042f, 9.241f, 12.550f, 15.117f, 13.422f, 10.082f, 9.264f, 7.061f, - 11.528f, 18.910f, 21.481f, 18.792f, 19.177f, 18.950f, 18.059f, 17.511f, 17.457f, 15.757f, - 13.606f -},{ --29.534f,-28.993f,-26.520f,-25.338f,-25.660f,-26.605f,-26.007f,-27.747f,-27.983f,-25.407f, --23.293f,-22.105f,-20.171f,-19.338f,-17.526f, -9.298f, -6.989f, -7.133f, -3.932f, -2.523f, - -1.582f, 0.266f, 0.899f, 1.565f, 1.005f, 2.373f, 3.345f, 3.942f, 4.389f, 5.028f, - 5.644f, 5.838f, 6.756f, 6.453f, 4.506f, 6.869f, 11.568f, 10.147f, 12.689f, 14.837f, - 16.107f, 16.922f, 17.402f, 20.140f, 22.910f, 19.349f, 16.666f, 16.802f, 17.073f, 18.506f, - 17.317f, 16.970f, 19.892f, 20.647f, 18.537f, 11.735f, 8.441f, 10.331f, 12.447f, 13.300f, - 13.706f, 15.799f, 17.073f, 18.542f, 18.283f, 18.863f, 18.943f, 19.825f, 19.188f, 19.572f, - 20.196f, 20.589f, 13.443f, 18.983f, 38.486f, 43.637f, 40.306f, 36.390f, 31.445f, 27.833f, - 26.349f, 25.139f, 22.784f, 21.593f, 19.701f, 20.504f, 21.319f, 19.790f, 18.825f, 19.055f, - 18.982f, 20.860f, 20.087f, 16.084f, 10.216f, 13.210f, 20.135f, 11.383f, 4.407f, -2.013f, - -1.266f, -5.200f,-18.161f,-24.407f,-22.513f,-21.248f,-24.789f,-29.100f,-27.965f,-28.046f, --36.585f,-43.581f,-41.748f,-44.131f,-45.134f,-46.734f,-47.701f,-47.837f,-48.249f,-48.193f, --49.453f,-50.963f,-51.401f,-50.710f,-48.357f,-46.532f,-44.446f,-42.930f,-42.060f,-37.071f, --34.871f,-31.406f,-29.756f,-29.240f,-28.984f,-29.588f,-31.870f,-31.065f,-31.792f,-34.368f, --33.335f,-33.254f,-32.621f,-32.285f,-32.326f,-32.525f,-33.351f,-32.920f,-31.722f,-29.375f, --26.546f,-24.772f,-24.250f,-25.980f,-23.077f,-20.943f,-20.522f,-18.985f,-14.321f, -8.851f, - -2.459f, 1.414f, 3.946f, 11.652f, 13.631f, 16.256f, 14.128f, 10.542f, 10.444f, 6.829f, - 10.145f, 19.218f, 21.193f, 19.151f, 19.395f, 19.197f, 18.212f, 17.648f, 17.573f, 15.774f, - 13.606f -},{ --29.534f,-28.939f,-26.457f,-25.129f,-25.023f,-25.977f,-25.509f,-27.429f,-27.623f,-25.107f, --23.118f,-21.521f,-19.383f,-18.658f,-16.568f, -8.091f, -6.090f, -5.325f, -2.102f, -1.354f, - 0.296f, 2.747f, 2.138f, 3.679f, 2.439f, 3.673f, 4.459f, 5.023f, 5.711f, 6.615f, - 6.633f, 7.355f, 8.417f, 7.463f, 4.303f, 9.641f, 10.327f, 10.464f, 10.722f, 12.613f, - 13.684f, 16.049f, 17.753f, 19.988f, 23.445f, 18.874f, 18.079f, 19.864f, 20.066f, 21.453f, - 21.500f, 20.480f, 20.896f, 20.842f, 20.712f, 20.708f, 19.159f, 14.902f, 14.622f, 16.796f, - 15.168f, 14.101f, 12.947f, 13.359f, 15.638f, 16.471f, 17.135f, 18.414f, 19.501f, 20.040f, - 18.781f, 13.866f, 18.076f, 30.436f, 42.364f, 45.825f, 44.807f, 41.484f, 30.952f, 26.232f, - 26.310f, 24.918f, 23.560f, 23.261f, 22.206f, 21.102f, 20.848f, 19.189f, 17.022f, 16.792f, - 18.562f, 20.357f, 17.544f, 11.822f, 6.286f, 2.666f, 5.787f, 3.184f, 0.044f,-11.214f, --12.556f,-12.780f,-15.614f,-25.857f,-24.877f,-23.969f,-27.042f,-30.074f,-29.335f,-27.275f, --41.133f,-45.523f,-42.849f,-46.704f,-47.559f,-48.790f,-49.634f,-49.984f,-50.339f,-50.711f, --51.485f,-51.653f,-51.360f,-50.552f,-48.581f,-46.201f,-44.346f,-42.502f,-42.026f,-39.413f, --34.677f,-32.153f,-29.952f,-28.223f,-27.949f,-28.049f,-28.841f,-29.195f,-29.937f,-33.111f, --31.388f,-32.064f,-31.039f,-30.382f,-30.714f,-30.932f,-31.339f,-31.026f,-29.708f,-27.862f, --25.334f,-23.865f,-24.414f,-23.308f,-19.839f,-18.630f,-18.303f,-16.323f,-11.824f, -6.354f, - -0.692f, 2.300f, 6.708f, 12.766f, 14.513f, 17.160f, 14.470f, 11.340f, 12.102f, 7.041f, - 8.811f, 18.929f, 20.655f, 19.487f, 19.574f, 19.452f, 18.366f, 17.798f, 17.694f, 15.790f, - 13.606f -},{ --29.534f,-28.886f,-26.403f,-24.934f,-24.410f,-25.286f,-25.015f,-26.984f,-27.309f,-24.936f, --22.709f,-20.710f,-18.919f,-18.487f,-14.845f, -7.039f, -5.590f, -3.401f, -0.047f, 0.394f, - 2.152f, 3.977f, 3.386f, 4.792f, 4.838f, 4.817f, 5.673f, 6.227f, 7.113f, 8.103f, - 8.065f, 9.260f, 9.862f, 8.198f, 6.096f, 10.882f, 9.264f, 8.916f, 9.546f, 10.834f, - 12.879f, 14.583f, 15.690f, 17.482f, 18.753f, 17.759f, 18.037f, 20.016f, 21.224f, 22.141f, - 23.292f, 24.361f, 24.476f, 25.297f, 24.786f, 24.837f, 25.003f, 26.202f, 29.447f, 31.432f, - 32.594f, 30.768f, 25.786f, 22.669f, 20.212f, 18.319f, 16.955f, 15.033f, 14.598f, 15.553f, - 15.762f, 20.387f, 27.481f, 39.357f, 45.051f, 46.533f, 49.123f, 36.632f, 27.868f, 27.028f, - 27.267f, 26.175f, 25.617f, 23.608f, 23.119f, 21.533f, 20.274f, 17.787f, 15.527f, 15.475f, - 16.978f, 17.421f, 13.822f, 8.811f, 4.492f, -0.250f, -3.132f, -4.780f, -5.145f, -4.599f, --14.191f,-17.356f,-21.502f,-26.388f,-29.353f,-28.213f,-29.246f,-32.862f,-33.755f,-28.882f, --44.850f,-44.019f,-48.933f,-48.922f,-49.726f,-50.842f,-51.425f,-51.600f,-51.755f,-51.982f, --52.131f,-51.554f,-50.766f,-49.768f,-48.050f,-45.846f,-43.984f,-42.753f,-41.276f,-39.839f, --34.895f,-31.583f,-29.321f,-27.380f,-27.494f,-26.505f,-27.580f,-27.942f,-27.643f,-29.618f, --28.849f,-29.365f,-29.721f,-28.846f,-28.638f,-28.628f,-29.394f,-29.193f,-28.362f,-27.010f, --24.294f,-23.018f,-23.163f,-19.568f,-16.167f,-16.301f,-16.029f,-13.651f, -8.677f, -3.902f, - 1.281f, 2.579f, 8.986f, 13.221f, 15.267f, 17.691f, 14.726f, 12.576f, 13.949f, 7.816f, - 7.768f, 18.024f, 20.082f, 19.744f, 19.736f, 19.707f, 18.532f, 17.963f, 17.819f, 15.803f, - 13.606f -},{ --29.534f,-28.835f,-26.358f,-24.754f,-23.851f,-24.557f,-24.555f,-26.496f,-27.069f,-24.758f, --22.141f,-19.972f,-18.797f,-18.335f,-13.273f, -6.250f, -4.790f, -2.037f, 1.621f, 2.757f, - 3.688f, 4.571f, 4.937f, 6.190f, 7.394f, 6.204f, 6.875f, 7.623f, 8.496f, 9.364f, - 9.433f, 11.237f, 11.070f, 8.081f, 11.438f, 12.736f, 9.695f, 9.334f, 9.302f, 10.376f, - 11.452f, 12.911f, 15.223f, 15.780f, 16.085f, 16.927f, 18.771f, 20.285f, 21.697f, 22.547f, - 22.746f, 22.664f, 23.923f, 25.345f, 26.959f, 30.058f, 31.957f, 31.814f, 32.281f, 33.246f, - 36.671f, 37.574f, 35.090f, 34.594f, 34.258f, 35.752f, 32.146f, 33.283f, 33.308f, 31.616f, - 33.577f, 35.431f, 38.298f, 44.503f, 45.456f, 46.584f, 44.159f, 31.042f, 27.473f, 28.394f, - 27.401f, 26.406f, 24.246f, 22.700f, 22.652f, 19.600f, 18.205f, 16.642f, 14.994f, 14.154f, - 13.712f, 13.683f, 10.702f, 5.827f, 1.869f, -1.564f, -4.634f, -7.014f, -8.780f, -8.479f, --10.821f,-16.701f,-22.703f,-30.007f,-32.964f,-30.155f,-31.468f,-37.650f,-38.171f,-35.709f, --47.155f,-48.024f,-50.740f,-50.376f,-51.199f,-52.148f,-52.543f,-52.099f,-51.822f,-51.881f, --51.679f,-51.071f,-49.966f,-48.581f,-47.192f,-45.200f,-43.114f,-42.471f,-40.926f,-38.779f, --34.597f,-30.688f,-28.453f,-26.730f,-26.505f,-26.190f,-26.106f,-27.748f,-27.507f,-26.881f, --26.294f,-25.969f,-28.200f,-26.928f,-26.518f,-26.231f,-27.474f,-28.072f,-28.163f,-26.465f, --23.101f,-21.837f,-21.056f,-15.822f,-13.286f,-13.472f,-13.493f,-10.362f, -5.340f, -1.888f, - 2.847f, 3.268f, 10.356f, 13.506f, 15.740f, 18.173f, 15.212f, 14.105f, 15.684f, 9.134f, - 7.236f, 16.643f, 19.653f, 19.898f, 19.905f, 19.956f, 18.721f, 18.146f, 17.947f, 15.814f, - 13.606f -},{ --29.534f,-28.785f,-26.322f,-24.589f,-23.372f,-23.842f,-24.177f,-26.069f,-26.868f,-24.436f, --21.600f,-19.600f,-18.720f,-17.790f,-12.554f, -5.534f, -3.349f, -1.100f, 2.293f, 3.826f, - 5.080f, 5.922f, 6.409f, 8.352f, 9.203f, 8.375f, 8.277f, 8.831f, 9.900f, 10.608f, - 11.653f, 12.480f, 12.509f, 9.020f, 14.435f, 13.628f, 11.675f, 10.801f, 9.861f, 9.808f, - 10.392f, 11.900f, 13.865f, 14.474f, 15.133f, 15.847f, 17.541f, 20.329f, 23.061f, 23.980f, - 22.671f, 20.329f, 21.223f, 22.925f, 26.192f, 25.802f, 24.428f, 22.758f, 25.622f, 26.964f, - 31.787f, 35.160f, 38.266f, 41.244f, 40.663f, 38.421f, 34.178f, 36.310f, 36.830f, 37.887f, - 41.781f, 43.511f, 44.400f, 44.558f, 45.605f, 44.522f, 33.725f, 30.175f, 28.817f, 27.692f, - 26.278f, 24.359f, 22.424f, 22.146f, 21.279f, 18.738f, 16.266f, 14.310f, 13.608f, 12.057f, - 10.630f, 10.283f, 7.759f, 3.053f, -1.062f, -4.799f, -7.139f, -8.371f, -9.881f,-11.709f, --13.484f,-17.275f,-24.595f,-34.747f,-34.773f,-31.982f,-33.913f,-41.444f,-41.289f,-44.231f, --51.000f,-51.175f,-50.708f,-51.026f,-52.034f,-52.419f,-52.244f,-51.619f,-51.325f,-51.175f, --50.664f,-49.681f,-48.404f,-47.319f,-46.091f,-44.585f,-42.972f,-42.198f,-40.643f,-38.252f, --34.265f,-31.055f,-28.266f,-26.533f,-25.678f,-25.536f,-24.801f,-25.762f,-26.919f,-26.774f, --25.004f,-24.157f,-25.939f,-24.921f,-24.391f,-24.467f,-26.361f,-26.582f,-25.796f,-24.197f, --21.465f,-21.136f,-19.181f,-12.803f,-11.370f,-10.569f,-10.655f, -6.799f, -2.283f, -0.149f, - 3.569f, 5.104f, 11.222f, 13.664f, 15.944f, 18.804f, 15.881f, 15.705f, 17.146f, 10.777f, - 7.300f, 15.040f, 19.426f, 19.961f, 20.101f, 20.189f, 18.944f, 18.347f, 18.076f, 15.823f, - 13.606f -},{ --29.534f,-28.737f,-26.295f,-24.443f,-22.996f,-23.206f,-23.937f,-25.783f,-26.634f,-23.935f, --21.228f,-19.589f,-18.392f,-17.016f,-12.687f, -4.930f, -1.912f, 0.096f, 2.783f, 4.647f, - 7.317f, 7.494f, 7.005f, 9.283f, 10.436f, 10.970f, 9.663f, 10.310f, 11.516f, 12.080f, - 13.362f, 13.451f, 13.369f, 12.182f, 14.777f, 13.788f, 12.190f, 12.033f, 10.293f, 9.953f, - 10.430f, 11.547f, 11.604f, 13.036f, 14.371f, 14.694f, 16.010f, 18.932f, 22.721f, 23.298f, - 21.084f, 18.480f, 18.674f, 20.113f, 22.846f, 22.080f, 21.838f, 20.643f, 21.265f, 23.719f, - 27.033f, 31.142f, 34.975f, 41.047f, 42.812f, 41.184f, 39.763f, 40.278f, 43.256f, 42.778f, - 43.204f, 43.168f, 44.311f, 44.382f, 41.000f, 32.931f, 31.139f, 30.547f, 29.323f, 27.152f, - 24.797f, 22.609f, 20.125f, 18.840f, 17.754f, 15.149f, 12.639f, 10.374f, 10.136f, 8.408f, - 6.960f, 6.100f, 4.223f, 1.233f, -3.363f, -6.499f, -9.549f, -9.890f,-10.862f,-12.699f, --15.501f,-21.616f,-25.702f,-38.362f,-36.087f,-34.686f,-36.669f,-42.986f,-45.442f,-55.379f, --58.834f,-51.247f,-50.577f,-51.406f,-52.340f,-51.653f,-51.321f,-50.518f,-49.941f,-49.485f, --48.738f,-47.719f,-46.804f,-45.872f,-44.701f,-43.838f,-42.056f,-41.646f,-40.611f,-37.976f, --34.364f,-29.408f,-26.892f,-25.625f,-24.262f,-24.677f,-24.547f,-24.224f,-24.187f,-26.173f, --23.567f,-22.325f,-22.760f,-23.464f,-22.571f,-22.792f,-24.551f,-23.426f,-22.284f,-21.030f, --19.486f,-20.236f,-16.441f,-10.835f, -8.344f, -7.986f, -8.059f, -3.459f, 0.335f, 0.661f, - 3.997f, 7.560f, 11.890f, 14.060f, 16.211f, 19.240f, 16.433f, 17.255f, 18.355f, 12.454f, - 7.888f, 13.500f, 19.318f, 19.967f, 20.329f, 20.402f, 19.213f, 18.566f, 18.202f, 15.829f, - 13.606f -},{ --29.534f,-28.692f,-26.277f,-24.316f,-22.737f,-22.719f,-23.879f,-25.673f,-26.313f,-23.362f, --21.036f,-19.628f,-17.808f,-16.569f,-13.346f, -5.041f, -1.162f, 1.471f, 4.021f, 7.186f, - 10.079f, 9.216f, 7.379f, 9.059f, 11.255f, 12.824f, 11.386f, 11.878f, 12.857f, 13.504f, - 14.765f, 14.927f, 14.603f, 13.808f, 15.627f, 14.157f, 12.319f, 12.228f, 10.336f, 9.969f, - 10.509f, 11.393f, 11.460f, 12.114f, 13.019f, 13.546f, 14.507f, 16.121f, 19.322f, 19.799f, - 18.592f, 17.235f, 17.644f, 17.882f, 19.764f, 20.908f, 22.359f, 22.800f, 23.826f, 25.283f, - 24.801f, 28.095f, 28.518f, 36.927f, 41.330f, 43.064f, 43.174f, 43.769f, 43.572f, 42.392f, - 43.169f, 44.059f, 45.042f, 42.720f, 31.677f, 27.297f, 28.831f, 31.129f, 29.829f, 26.514f, - 23.441f, 20.333f, 17.947f, 16.129f, 14.371f, 12.535f, 9.807f, 8.350f, 6.889f, 5.051f, - 3.378f, 1.808f, -0.146f, -3.252f, -6.014f, -4.548f, -7.880f,-11.551f,-12.615f,-14.897f, --16.594f,-23.257f,-29.506f,-39.973f,-36.596f,-36.897f,-39.281f,-44.461f,-42.476f,-62.241f, --62.227f,-51.252f,-51.049f,-51.920f,-51.809f,-50.944f,-50.222f,-49.136f,-48.462f,-47.996f, --46.792f,-45.960f,-45.149f,-44.076f,-43.486f,-42.181f,-40.878f,-40.214f,-39.737f,-37.951f, --34.336f,-28.126f,-26.276f,-24.416f,-23.539f,-23.708f,-23.634f,-21.932f,-22.297f,-23.657f, --23.501f,-21.204f,-20.139f,-22.185f,-21.085f,-20.500f,-20.808f,-19.618f,-19.305f,-17.913f, --16.880f,-17.851f,-13.022f, -8.640f, -4.428f, -6.275f, -4.957f, 1.297f, 1.995f, 0.754f, - 4.750f, 9.700f, 12.729f, 14.973f, 16.943f, 19.164f, 16.757f, 18.736f, 19.433f, 13.990f, - 8.835f, 12.272f, 19.166f, 19.959f, 20.583f, 20.594f, 19.533f, 18.799f, 18.324f, 15.834f, - 13.606f -},{ --29.534f,-28.648f,-26.268f,-24.212f,-22.599f,-22.443f,-24.024f,-25.718f,-25.907f,-22.896f, --20.918f,-19.399f,-17.230f,-16.710f,-14.256f, -6.427f, -1.029f, 2.317f, 5.567f, 9.763f, - 11.917f, 11.297f, 7.964f, 9.411f, 12.152f, 13.833f, 13.871f, 13.421f, 14.171f, 15.426f, - 15.823f, 16.024f, 15.093f, 13.245f, 14.310f, 13.538f, 11.918f, 12.333f, 11.143f, 10.815f, - 10.537f, 10.904f, 11.499f, 11.607f, 11.730f, 12.308f, 13.593f, 14.253f, 15.734f, 16.255f, - 16.347f, 15.859f, 16.057f, 17.432f, 18.696f, 20.215f, 22.826f, 25.473f, 25.296f, 25.039f, - 23.801f, 25.633f, 29.066f, 35.922f, 36.121f, 38.966f, 43.192f, 43.434f, 42.001f, 42.917f, - 43.597f, 43.292f, 41.421f, 36.123f, 24.888f, 26.508f, 29.353f, 29.194f, 26.998f, 24.436f, - 21.391f, 17.301f, 14.548f, 13.031f, 11.659f, 9.912f, 7.669f, 6.005f, 4.862f, 2.122f, - 0.443f, 1.153f, -1.367f, -6.318f, -6.781f, -8.402f, -6.216f,-10.463f,-14.433f,-18.330f, --22.521f,-26.063f,-33.884f,-40.277f,-37.206f,-37.740f,-40.739f,-45.229f,-41.688f,-60.947f, --64.611f,-52.113f,-51.537f,-51.783f,-51.497f,-50.637f,-49.940f,-48.700f,-47.625f,-46.960f, --45.704f,-44.824f,-43.412f,-42.202f,-41.678f,-40.329f,-39.151f,-38.541f,-37.766f,-36.638f, --33.813f,-30.041f,-25.396f,-24.900f,-23.342f,-22.650f,-21.945f,-20.934f,-20.796f,-20.041f, --22.518f,-19.865f,-18.496f,-19.235f,-20.017f,-17.478f,-16.955f,-16.432f,-15.759f,-14.825f, --13.087f,-13.422f, -9.334f, -5.760f, -2.366f, -5.160f, -0.638f, 6.181f, 3.427f, 3.618f, - 6.817f, 11.589f, 14.067f, 15.989f, 18.230f, 18.752f, 17.045f, 20.112f, 20.492f, 15.408f, - 9.987f, 11.525f, 18.825f, 19.966f, 20.847f, 20.766f, 19.904f, 19.042f, 18.439f, 15.836f, - 13.606f -},{ --29.534f,-28.606f,-26.267f,-24.133f,-22.578f,-22.416f,-24.348f,-25.848f,-25.482f,-22.680f, --20.763f,-18.871f,-16.912f,-17.038f,-15.045f, -8.713f, -1.342f, 2.619f, 6.757f, 10.698f, - 12.976f, 12.173f, 8.485f, 9.875f, 12.880f, 14.783f, 16.133f, 14.442f, 15.335f, 16.941f, - 16.620f, 16.791f, 15.958f, 14.292f, 13.186f, 12.251f, 10.988f, 12.620f, 12.392f, 12.306f, - 11.345f, 10.911f, 11.437f, 11.548f, 11.653f, 11.925f, 12.121f, 13.037f, 14.114f, 14.143f, - 14.687f, 14.413f, 15.546f, 17.173f, 18.039f, 19.665f, 21.803f, 25.167f, 26.677f, 26.579f, - 23.945f, 25.821f, 26.559f, 26.365f, 29.347f, 29.307f, 30.769f, 37.253f, 38.888f, 39.661f, - 41.768f, 39.149f, 37.528f, 24.885f, 22.161f, 26.042f, 28.379f, 26.835f, 22.973f, 20.896f, - 18.491f, 13.779f, 10.933f, 9.434f, 7.671f, 6.069f, 3.609f, 2.003f, 0.894f, -0.655f, - -2.263f, -1.309f, -4.061f, -6.957f, -7.578f, -8.739f, -7.294f,-11.854f,-17.918f,-23.030f, --28.268f,-29.860f,-35.898f,-36.670f,-37.385f,-39.787f,-42.138f,-45.195f,-45.061f,-55.453f, --62.910f,-51.842f,-51.870f,-52.343f,-51.908f,-51.108f,-50.025f,-48.765f,-47.342f,-46.078f, --44.846f,-43.287f,-36.970f,-39.560f,-39.510f,-38.623f,-37.712f,-36.781f,-35.835f,-35.697f, --33.864f,-30.636f,-26.644f,-23.290f,-23.373f,-21.990f,-20.162f,-20.432f,-19.950f,-18.923f, --22.686f,-18.655f,-17.349f,-17.608f,-18.441f,-16.154f,-14.742f,-13.340f,-11.956f,-11.016f, - -8.422f, -7.775f, -5.407f, -3.618f, -1.804f, -2.351f, 3.416f, 7.642f, 5.990f, 9.371f, - 10.390f, 13.675f, 15.596f, 17.129f, 19.680f, 18.246f, 17.480f, 21.296f, 21.582f, 16.817f, - 11.250f, 11.330f, 18.244f, 19.997f, 21.100f, 20.926f, 20.318f, 19.291f, 18.545f, 15.835f, - 13.606f -},{ --29.534f,-28.567f,-26.275f,-24.084f,-22.659f,-22.639f,-24.788f,-25.974f,-25.137f,-22.735f, --20.542f,-18.309f,-16.888f,-16.889f,-15.160f,-10.606f, -2.430f, 2.596f, 7.070f, 10.820f, - 13.233f, 11.016f, 9.205f, 10.557f, 13.783f, 15.330f, 17.350f, 14.870f, 15.141f, 17.274f, - 17.402f, 17.151f, 16.203f, 15.257f, 13.789f, 11.280f, 9.979f, 12.786f, 13.174f, 13.331f, - 12.073f, 11.270f, 11.377f, 11.333f, 11.923f, 11.909f, 11.396f, 12.718f, 13.293f, 13.580f, - 14.091f, 13.883f, 15.218f, 16.849f, 17.715f, 18.851f, 21.204f, 23.351f, 24.522f, 25.669f, - 25.597f, 24.422f, 24.078f, 24.739f, 26.572f, 26.651f, 26.556f, 24.723f, 27.491f, 29.388f, - 29.757f, 30.252f, 30.405f, 21.083f, 22.306f, 25.316f, 24.806f, 23.899f, 20.833f, 19.397f, - 15.913f, 12.030f, 10.018f, 7.034f, 3.120f, 0.157f, -1.706f, -1.729f, -2.179f, -3.385f, - -4.676f, -5.896f, -6.485f, -6.293f, -8.586f, -9.954f,-13.159f,-15.579f,-21.433f,-29.188f, --31.586f,-29.996f,-32.125f,-35.319f,-37.459f,-39.122f,-41.603f,-43.350f,-45.685f,-55.498f, --59.238f,-51.376f,-52.095f,-52.585f,-52.190f,-51.316f,-50.060f,-48.863f,-47.165f,-45.280f, --43.489f,-41.733f,-39.526f,-38.323f,-38.046f,-37.488f,-36.823f,-35.117f,-34.389f,-33.157f, --32.802f,-29.664f,-26.292f,-22.192f,-22.941f,-21.141f,-19.373f,-19.402f,-19.348f,-19.973f, --20.580f,-17.678f,-16.125f,-16.314f,-17.599f,-14.798f,-12.521f,-10.518f, -9.121f, -7.179f, - -4.864f, -2.945f, -0.931f, -1.488f, -1.412f, 1.061f, 6.444f, 7.310f, 9.118f, 13.256f, - 13.794f, 15.661f, 16.976f, 19.336f, 20.570f, 17.600f, 18.046f, 22.229f, 22.695f, 18.250f, - 12.592f, 11.670f, 17.494f, 20.042f, 21.326f, 21.081f, 20.763f, 19.537f, 18.638f, 15.833f, - 13.606f -},{ --29.534f,-28.530f,-26.289f,-24.067f,-22.822f,-23.074f,-25.243f,-26.004f,-24.954f,-22.968f, --20.329f,-18.010f,-16.983f,-16.080f,-14.354f,-11.074f, -4.372f, 1.518f, 5.604f, 9.984f, - 11.130f, 9.221f, 9.324f, 11.783f, 15.313f, 16.393f, 17.994f, 15.460f, 14.392f, 17.931f, - 17.766f, 17.798f, 17.050f, 16.186f, 14.665f, 11.515f, 9.384f, 12.415f, 13.696f, 13.271f, - 12.962f, 11.571f, 11.293f, 11.556f, 11.560f, 11.252f, 11.387f, 11.924f, 12.642f, 12.695f, - 13.248f, 13.815f, 15.776f, 16.561f, 17.676f, 18.153f, 19.402f, 20.306f, 21.609f, 21.710f, - 22.552f, 23.592f, 23.874f, 24.158f, 25.487f, 25.650f, 23.895f, 23.543f, 23.224f, 22.405f, - 23.164f, 21.987f, 21.613f, 22.600f, 23.897f, 22.409f, 21.131f, 20.606f, 19.409f, 17.875f, - 14.459f, 10.986f, 8.117f, 4.341f, 0.799f, -3.252f, -5.498f, -4.423f, -4.920f, -5.905f, - -6.858f, -7.891f, -8.608f,-10.162f,-11.773f,-15.171f,-17.218f,-20.913f,-24.764f,-33.321f, --40.218f,-32.558f,-37.926f,-38.209f,-37.749f,-39.674f,-41.374f,-41.771f,-42.948f,-60.784f, --57.270f,-50.777f,-51.615f,-52.626f,-52.651f,-51.871f,-50.845f,-49.465f,-47.085f,-44.666f, --42.338f,-40.468f,-38.564f,-37.549f,-36.677f,-36.140f,-35.448f,-33.586f,-32.200f,-32.105f, --31.325f,-28.603f,-26.253f,-21.537f,-21.334f,-19.552f,-18.210f,-18.059f,-17.878f,-19.545f, --19.043f,-16.537f,-14.713f,-15.086f,-16.179f,-13.377f,-10.872f, -9.945f, -7.780f, -4.723f, - -1.720f, -0.118f, 2.316f, 2.019f, 0.900f, 2.885f, 7.608f, 8.245f, 11.916f, 14.700f, - 16.262f, 17.389f, 18.572f, 22.307f, 20.306f, 16.928f, 18.661f, 22.917f, 23.777f, 19.619f, - 14.001f, 12.457f, 16.732f, 20.081f, 21.518f, 21.237f, 21.216f, 19.774f, 18.716f, 15.829f, - 13.606f -},{ --29.534f,-28.496f,-26.311f,-24.085f,-23.039f,-23.649f,-25.603f,-25.875f,-24.956f,-23.254f, --20.240f,-18.050f,-16.978f,-15.101f,-13.134f,-10.398f, -6.265f, -1.004f, 2.747f, 7.641f, - 7.672f, 8.032f, 8.583f, 11.933f, 15.642f, 17.580f, 18.427f, 17.008f, 14.181f, 18.376f, - 18.400f, 18.596f, 18.423f, 16.737f, 15.861f, 13.041f, 10.268f, 12.092f, 13.865f, 11.770f, - 12.893f, 11.437f, 11.080f, 11.408f, 11.037f, 11.030f, 11.070f, 11.498f, 12.303f, 12.695f, - 13.045f, 14.071f, 15.137f, 16.258f, 17.535f, 17.756f, 18.144f, 18.842f, 19.536f, 19.591f, - 21.223f, 22.161f, 23.221f, 23.766f, 24.648f, 25.294f, 23.942f, 22.578f, 21.411f, 22.815f, - 23.578f, 23.056f, 21.602f, 22.273f, 22.418f, 19.983f, 18.807f, 18.690f, 18.370f, 14.753f, - 11.129f, 7.724f, 4.420f, 1.221f, -1.586f, -4.368f, -5.696f, -7.226f, -7.397f, -7.530f, - -8.360f, -9.232f,-10.063f,-12.689f,-14.322f,-13.388f,-16.488f,-23.619f,-26.905f,-35.211f, --45.096f,-38.578f,-38.030f,-41.799f,-41.252f,-42.056f,-41.163f,-40.995f,-49.142f,-62.033f, --52.976f,-50.517f,-51.085f,-52.189f,-52.322f,-51.793f,-50.874f,-49.377f,-46.861f,-44.355f, --41.707f,-39.558f,-37.366f,-36.328f,-35.238f,-34.277f,-33.477f,-32.017f,-30.488f,-30.515f, --29.890f,-28.269f,-26.344f,-20.962f,-19.435f,-18.198f,-16.869f,-17.173f,-16.749f,-17.795f, --17.905f,-15.208f,-12.814f,-13.859f,-14.652f,-12.245f, -9.960f, -8.975f, -6.982f, -1.421f, - 1.241f, 2.905f, 6.036f, 6.855f, 6.745f, 6.037f, 8.528f, 11.162f, 14.446f, 16.286f, - 18.736f, 19.477f, 20.672f, 23.697f, 19.068f, 16.791f, 19.307f, 23.394f, 24.757f, 20.810f, - 15.466f, 13.563f, 16.126f, 20.104f, 21.687f, 21.397f, 21.653f, 19.993f, 18.778f, 15.822f, - 13.606f -},{ --29.534f,-28.464f,-26.339f,-24.140f,-23.286f,-24.267f,-25.768f,-25.562f,-25.096f,-23.525f, --20.355f,-18.257f,-16.763f,-14.533f,-12.359f, -9.756f, -7.149f, -3.493f, 0.590f, 5.289f, - 5.797f, 7.286f, 8.478f, 11.428f, 15.094f, 17.672f, 19.405f, 19.377f, 15.067f, 17.894f, - 19.026f, 19.604f, 19.051f, 17.810f, 16.770f, 15.209f, 10.938f, 11.289f, 13.526f, 12.204f, - 12.710f, 11.302f, 11.000f, 11.373f, 10.266f, 10.798f, 11.095f, 11.734f, 12.425f, 13.462f, - 13.519f, 13.422f, 14.370f, 16.598f, 16.991f, 17.320f, 17.264f, 17.511f, 17.860f, 17.937f, - 19.125f, 20.146f, 21.333f, 22.292f, 22.900f, 23.255f, 22.887f, 21.079f, 20.519f, 20.963f, - 22.116f, 21.506f, 21.856f, 21.642f, 21.071f, 19.117f, 17.640f, 17.040f, 15.249f, 11.055f, - 7.234f, 4.106f, 1.316f, -1.643f, -4.513f, -5.922f, -6.824f, -9.328f, -9.462f, -9.076f, - -9.969f,-11.327f,-11.925f,-14.430f,-15.493f,-14.123f,-18.842f,-25.891f,-28.803f,-34.196f, --42.514f,-41.798f,-42.985f,-38.744f,-39.031f,-40.270f,-42.406f,-55.832f,-61.905f,-57.375f, --49.849f,-49.740f,-50.228f,-51.183f,-51.476f,-50.726f,-49.790f,-48.701f,-46.402f,-43.955f, --41.213f,-38.930f,-36.537f,-35.175f,-34.274f,-32.535f,-31.382f,-30.620f,-28.407f,-27.424f, --28.505f,-27.223f,-25.892f,-20.950f,-18.036f,-17.432f,-14.592f,-15.041f,-15.639f,-16.150f, --15.661f,-13.137f,-10.046f,-10.465f,-12.864f,-10.759f, -9.082f, -6.818f, -2.774f, 2.748f, - 3.512f, 6.180f, 9.512f, 10.087f, 11.569f, 11.805f, 12.763f, 15.159f, 16.569f, 18.127f, - 21.210f, 22.026f, 22.842f, 22.319f, 17.971f, 17.579f, 19.965f, 23.702f, 25.597f, 21.821f, - 16.966f, 14.853f, 15.789f, 20.111f, 21.852f, 21.556f, 22.045f, 20.186f, 18.822f, 15.814f, - 13.606f -},{ --29.534f,-28.434f,-26.371f,-24.232f,-23.537f,-24.828f,-25.680f,-25.076f,-25.285f,-23.785f, --20.663f,-18.416f,-16.409f,-14.427f,-12.341f, -9.797f, -7.250f, -4.436f, -0.111f, 3.891f, - 5.219f, 6.519f, 8.632f, 11.376f, 14.811f, 18.101f, 20.685f, 20.743f, 17.722f, 16.616f, - 20.199f, 19.239f, 19.550f, 18.850f, 17.776f, 16.815f, 10.228f, 10.560f, 11.863f, 12.848f, - 12.383f, 10.814f, 9.990f, 9.467f, 8.724f, 8.724f, 9.861f, 11.498f, 12.209f, 12.620f, - 13.555f, 12.307f, 14.617f, 16.878f, 16.837f, 17.324f, 17.106f, 16.968f, 16.834f, 17.082f, - 17.789f, 18.655f, 19.847f, 20.510f, 21.241f, 21.055f, 20.271f, 19.473f, 20.184f, 20.900f, - 19.708f, 18.897f, 20.660f, 19.098f, 17.031f, 16.401f, 14.906f, 13.394f, 10.845f, 6.779f, - 3.321f, 0.947f, -1.339f, -3.585f, -6.176f, -7.632f, -7.818f,-11.888f,-12.022f,-11.809f, --12.627f,-14.435f,-15.525f,-17.488f,-18.296f,-18.916f,-22.718f,-27.301f,-29.505f,-33.221f, --41.849f,-46.452f,-49.391f,-48.076f,-46.629f,-55.380f,-61.322f,-62.025f,-57.849f,-51.697f, --47.213f,-48.882f,-49.747f,-50.355f,-50.164f,-49.447f,-48.606f,-47.684f,-45.631f,-42.905f, --40.795f,-38.646f,-36.520f,-34.764f,-33.319f,-31.304f,-30.299f,-28.497f,-27.554f,-26.889f, --26.955f,-25.678f,-24.451f,-20.026f,-14.615f,-15.398f,-13.244f,-13.535f,-14.214f,-13.761f, --12.755f,-10.279f, -7.756f, -6.961f, -9.152f, -8.263f, -6.280f, -1.238f, 3.266f, 4.905f, - 4.817f, 7.709f, 9.260f, 10.859f, 13.594f, 16.237f, 17.391f, 17.733f, 19.044f, 20.710f, - 22.996f, 24.228f, 24.553f, 20.224f, 18.133f, 18.941f, 20.621f, 23.946f, 26.330f, 22.763f, - 18.462f, 16.202f, 15.746f, 20.117f, 22.038f, 21.704f, 22.365f, 20.348f, 18.847f, 15.803f, - 13.606f -},{ --29.534f,-28.407f,-26.408f,-24.360f,-23.776f,-25.245f,-25.335f,-24.458f,-25.430f,-24.072f, --21.072f,-18.451f,-16.111f,-14.376f,-12.619f,-10.074f, -7.426f, -4.378f, -0.526f, 2.773f, - 4.359f, 6.146f, 8.428f, 11.226f, 14.202f, 18.429f, 21.061f, 21.634f, 20.660f, 15.639f, - 21.014f, 19.090f, 19.860f, 19.687f, 18.332f, 16.897f, 10.109f, 10.507f, 11.660f, 12.555f, - 11.900f, 10.266f, 8.441f, 6.789f, 5.423f, 4.965f, 6.350f, 9.003f, 11.606f, 12.388f, - 13.253f, 12.655f, 14.948f, 16.351f, 17.226f, 16.706f, 16.908f, 17.536f, 17.037f, 16.814f, - 17.135f, 17.325f, 18.243f, 18.919f, 19.113f, 19.083f, 18.424f, 17.817f, 17.745f, 18.210f, - 17.703f, 17.332f, 15.891f, 14.393f, 13.262f, 12.632f, 12.283f, 11.519f, 9.143f, 2.284f, - -0.813f, -2.526f, -4.134f, -6.177f, -8.757f,-10.613f, -9.710f,-14.652f,-15.147f,-15.125f, --15.817f,-16.977f,-18.970f,-20.265f,-22.017f,-23.649f,-26.133f,-28.582f,-31.021f,-35.691f, --41.013f,-44.963f,-49.045f,-48.433f,-53.415f,-55.591f,-54.690f,-52.918f,-50.897f,-48.248f, --46.111f,-47.174f,-48.756f,-49.020f,-48.833f,-48.238f,-47.359f,-46.242f,-44.315f,-41.732f, --39.582f,-37.660f,-35.792f,-33.823f,-32.046f,-30.433f,-28.682f,-27.504f,-26.697f,-25.494f, --24.943f,-23.848f,-22.915f,-19.752f,-12.825f,-12.812f,-11.602f,-11.001f, -8.642f, -9.638f, - -9.796f, -7.582f, -4.917f, -3.084f, -5.067f, -4.465f, -0.241f, 4.007f, 4.717f, 5.275f, - 6.908f, 9.235f, 10.175f, 12.072f, 14.919f, 17.583f, 19.477f, 19.391f, 22.299f, 23.868f, - 24.360f, 25.599f, 25.519f, 19.847f, 19.522f, 20.206f, 21.378f, 24.295f, 27.027f, 23.739f, - 19.893f, 17.515f, 15.946f, 20.146f, 22.268f, 21.826f, 22.591f, 20.473f, 18.851f, 15.791f, - 13.606f -},{ --29.534f,-28.383f,-26.446f,-24.521f,-23.994f,-25.465f,-24.786f,-23.764f,-25.472f,-24.389f, --21.451f,-18.433f,-16.028f,-14.110f,-12.621f, -9.987f, -7.736f, -4.475f, -1.000f, 1.932f, - 3.803f, 6.534f, 9.053f, 11.522f, 14.407f, 18.100f, 21.328f, 22.850f, 21.906f, 15.404f, - 20.660f, 19.967f, 20.264f, 19.632f, 18.874f, 17.958f, 10.312f, 10.478f, 11.746f, 12.657f, - 11.193f, 9.565f, 6.619f, 5.553f, 4.378f, 2.918f, 5.584f, 5.595f, 9.730f, 11.145f, - 12.948f, 13.080f, 14.912f, 15.302f, 17.038f, 15.920f, 16.511f, 17.484f, 17.074f, 16.102f, - 15.326f, 15.691f, 16.482f, 16.949f, 16.812f, 16.935f, 16.138f, 15.907f, 15.544f, 15.883f, - 16.492f, 15.735f, 13.272f, 10.411f, 8.639f, 7.977f, 10.168f, 11.066f, 8.129f, -1.908f, - -4.002f, -5.353f, -7.487f, -9.437f,-11.423f,-13.434f,-11.938f,-14.737f,-16.386f,-17.868f, --18.872f,-20.275f,-21.702f,-22.937f,-24.387f,-25.442f,-27.373f,-29.634f,-32.742f,-39.915f, --41.915f,-44.798f,-45.443f,-46.111f,-48.688f,-49.108f,-49.441f,-49.118f,-48.410f,-48.085f, --45.447f,-45.092f,-46.986f,-47.494f,-47.389f,-47.079f,-45.815f,-44.660f,-42.654f,-40.208f, --38.043f,-36.183f,-34.993f,-31.904f,-30.090f,-29.435f,-27.275f,-25.353f,-24.452f,-23.653f, --22.890f,-21.494f,-20.011f,-18.050f,-12.301f,-10.243f, -9.475f, -7.803f, -4.234f, -3.343f, - -5.082f, -4.925f, -1.147f, -0.265f, -1.217f, -0.997f, 5.314f, 5.630f, 6.309f, 7.277f, - 9.256f, 10.948f, 12.388f, 14.050f, 16.309f, 18.725f, 20.608f, 21.406f, 24.482f, 25.395f, - 25.777f, 26.442f, 25.639f, 21.004f, 21.155f, 21.156f, 22.427f, 24.872f, 27.718f, 24.737f, - 21.184f, 18.724f, 16.301f, 20.214f, 22.547f, 21.903f, 22.707f, 20.558f, 18.836f, 15.777f, - 13.606f -},{ --29.534f,-28.360f,-26.486f,-24.712f,-24.191f,-25.477f,-24.130f,-23.048f,-25.408f,-24.685f, --21.699f,-18.444f,-16.113f,-13.801f,-12.309f, -9.675f, -7.589f, -4.570f, -1.001f, 1.475f, - 3.523f, 6.761f, 9.857f, 12.372f, 15.444f, 18.084f, 21.431f, 23.632f, 22.234f, 16.447f, - 20.426f, 20.668f, 20.353f, 19.843f, 18.436f, 18.344f, 9.014f, 9.750f, 12.079f, 11.999f, - 10.503f, 8.653f, 4.975f, 3.781f, 2.246f, 1.645f, 2.415f, 3.502f, 5.790f, 9.444f, - 12.206f, 12.606f, 13.223f, 14.382f, 15.286f, 15.192f, 16.309f, 16.976f, 16.372f, 14.960f, - 13.996f, 13.772f, 13.965f, 14.612f, 14.297f, 13.305f, 12.679f, 13.017f, 14.108f, 13.861f, - 13.895f, 12.488f, 9.925f, 7.125f, 4.912f, 3.173f, 4.095f, 4.692f, 2.022f, -4.416f, - -3.940f, -7.695f,-10.443f,-12.303f,-13.664f,-15.777f,-16.489f,-14.881f,-17.194f,-20.209f, --21.303f,-23.003f,-24.060f,-25.607f,-26.886f,-27.337f,-28.235f,-30.513f,-35.046f,-40.224f, --44.354f,-47.397f,-48.004f,-47.447f,-48.250f,-49.513f,-46.050f,-49.355f,-47.013f,-47.377f, --46.130f,-44.366f,-45.322f,-45.958f,-45.797f,-45.147f,-43.894f,-42.784f,-40.736f,-38.351f, --36.460f,-34.880f,-33.563f,-30.907f,-29.118f,-27.237f,-25.859f,-23.613f,-22.436f,-21.652f, --20.761f,-19.133f,-16.691f,-13.933f,-10.826f, -6.615f, -5.876f, -3.928f, -1.501f, 1.619f, - 0.644f, -1.769f, 1.828f, 3.632f, 2.021f, 3.325f, 6.336f, 7.864f, 8.589f, 9.926f, - 11.257f, 13.325f, 14.705f, 16.150f, 18.747f, 20.498f, 21.681f, 22.930f, 25.184f, 26.111f, - 27.078f, 27.288f, 25.416f, 22.193f, 22.420f, 22.084f, 23.818f, 25.651f, 28.363f, 25.642f, - 22.289f, 19.791f, 16.725f, 20.326f, 22.869f, 21.920f, 22.706f, 20.602f, 18.801f, 15.762f, - 13.606f -},{ --29.534f,-28.340f,-26.525f,-24.925f,-24.374f,-25.315f,-23.486f,-22.358f,-25.267f,-24.891f, --21.792f,-18.481f,-16.134f,-13.731f,-12.030f, -9.565f, -6.988f, -4.130f, -0.857f, 0.665f, - 2.282f, 5.983f, 9.333f, 12.602f, 16.203f, 18.830f, 21.515f, 23.954f, 22.331f, 20.504f, - 20.183f, 20.654f, 20.012f, 19.899f, 17.482f, 16.638f, 7.479f, 8.184f, 11.427f, 10.762f, - 9.197f, 7.200f, 3.749f, 1.598f, 0.404f, 0.303f, 0.909f, 1.372f, 2.333f, 5.162f, - 9.582f, 10.733f, 11.023f, 12.219f, 12.741f, 13.508f, 15.564f, 15.850f, 15.465f, 14.532f, - 12.757f, 11.251f, 11.005f, 11.311f, 10.572f, 9.649f, 8.775f, 9.090f, 9.253f, 9.141f, - 8.976f, 8.064f, 5.950f, 3.976f, 1.893f, -0.150f, -1.536f, -2.332f, -4.608f, -8.972f, - -7.075f,-10.445f,-13.513f,-15.656f,-16.756f,-18.469f,-19.917f,-18.278f,-18.681f,-21.158f, --23.068f,-24.939f,-25.949f,-28.060f,-30.992f,-32.582f,-31.621f,-31.721f,-36.836f,-42.286f, --45.819f,-47.163f,-46.971f,-46.342f,-47.714f,-49.379f,-46.043f,-48.015f,-45.491f,-45.293f, --45.018f,-43.774f,-43.859f,-44.025f,-43.866f,-43.113f,-41.843f,-40.821f,-38.730f,-36.561f, --34.719f,-33.046f,-31.231f,-29.284f,-27.727f,-25.545f,-23.449f,-21.748f,-20.152f,-19.353f, --18.212f,-16.126f,-12.998f, -9.824f, -8.525f, -3.908f, -1.681f, -0.165f, 1.911f, 4.614f, - 4.160f, 3.050f, 4.064f, 6.808f, 6.086f, 7.922f, 7.859f, 10.619f, 11.212f, 12.553f, - 13.844f, 15.825f, 17.506f, 18.157f, 20.795f, 22.436f, 24.306f, 24.644f, 25.488f, 27.180f, - 27.821f, 28.285f, 25.728f, 23.068f, 23.616f, 23.293f, 25.360f, 26.509f, 28.904f, 26.360f, - 23.221f, 20.705f, 17.158f, 20.472f, 23.211f, 21.868f, 22.593f, 20.607f, 18.748f, 15.745f, - 13.606f -},{ --29.534f,-28.323f,-26.562f,-25.153f,-24.559f,-25.049f,-22.961f,-21.728f,-25.079f,-24.980f, --21.779f,-18.484f,-15.923f,-13.872f,-11.988f, -9.555f, -6.503f, -3.460f, -0.955f, -0.434f, - 0.556f, 4.590f, 7.992f, 11.581f, 15.913f, 18.859f, 21.822f, 23.423f, 22.600f, 23.171f, - 20.408f, 20.447f, 19.787f, 18.797f, 18.335f, 14.916f, 6.894f, 6.397f, 10.129f, 9.795f, - 7.817f, 5.529f, 2.182f, 0.119f, -0.241f, 0.109f, 0.584f, 0.501f, 0.903f, 2.104f, - 5.104f, 7.669f, 8.589f, 9.823f, 11.306f, 12.530f, 14.625f, 14.879f, 14.450f, 13.633f, - 11.223f, 9.681f, 8.609f, 7.592f, 7.036f, 6.088f, 5.461f, 4.753f, 4.336f, 4.241f, - 3.829f, 3.621f, 2.030f, 0.824f, -0.181f, -1.958f, -4.199f, -4.985f, -7.527f,-10.094f, --10.236f,-13.189f,-16.340f,-18.297f,-19.283f,-20.161f,-20.145f,-17.871f,-22.341f,-23.581f, --24.915f,-26.435f,-27.652f,-29.410f,-32.593f,-34.083f,-32.110f,-32.764f,-38.300f,-43.846f, --44.928f,-45.839f,-45.952f,-45.561f,-47.401f,-48.842f,-47.286f,-46.678f,-43.993f,-42.795f, --42.581f,-42.499f,-41.975f,-41.681f,-41.460f,-40.880f,-39.419f,-38.216f,-36.282f,-34.362f, --32.558f,-30.700f,-28.955f,-27.211f,-25.209f,-23.057f,-20.984f,-19.480f,-17.852f,-16.257f, --15.080f,-12.938f,-10.316f, -8.298f, -6.622f, -1.695f, 1.467f, 3.299f, 5.254f, 6.972f, - 8.089f, 8.817f, 8.859f, 10.225f, 10.630f, 12.506f, 11.241f, 13.097f, 13.919f, 14.631f, - 16.514f, 18.568f, 19.687f, 20.247f, 22.495f, 25.775f, 27.264f, 25.947f, 25.211f, 26.358f, - 27.861f, 28.837f, 26.779f, 24.314f, 25.168f, 24.827f, 26.805f, 27.356f, 29.337f, 26.897f, - 24.063f, 21.479f, 17.570f, 20.634f, 23.544f, 21.747f, 22.382f, 20.576f, 18.677f, 15.727f, - 13.606f -},{ --29.534f,-28.307f,-26.595f,-25.386f,-24.759f,-24.766f,-22.630f,-21.187f,-24.852f,-24.978f, --21.721f,-18.424f,-15.599f,-13.958f,-12.060f, -9.273f, -6.221f, -2.951f, -0.922f, -1.137f, - -0.525f, 3.391f, 6.813f, 9.807f, 14.136f, 16.398f, 20.133f, 22.319f, 22.981f, 23.618f, - 20.622f, 20.384f, 19.802f, 18.224f, 18.118f, 13.595f, 8.774f, 5.026f, 9.085f, 9.604f, - 6.172f, 3.091f, 0.857f, -0.773f, -0.700f, -0.390f, -0.086f, 0.009f, 0.049f, 0.646f, - 1.783f, 3.483f, 4.260f, 8.055f, 9.174f, 10.329f, 12.785f, 13.191f, 12.770f, 12.726f, - 9.533f, 9.073f, 7.934f, 5.925f, 4.877f, 4.174f, 2.453f, -0.060f, -0.562f, -0.721f, - -1.083f, -1.502f, -1.105f, -1.288f, -2.209f, -4.359f, -6.269f, -8.014f, -9.556f,-10.425f, --11.526f,-14.884f,-18.042f,-19.747f,-20.649f,-20.933f,-20.016f,-18.540f,-21.642f,-24.084f, --25.554f,-27.553f,-29.007f,-30.444f,-32.627f,-33.322f,-31.783f,-33.222f,-37.410f,-42.178f, --44.943f,-45.380f,-44.930f,-44.724f,-45.952f,-47.015f,-46.129f,-44.039f,-41.785f,-41.476f, --40.988f,-40.770f,-40.204f,-39.314f,-38.631f,-37.986f,-36.508f,-35.289f,-33.678f,-32.003f, --30.126f,-28.267f,-26.452f,-24.709f,-22.361f,-20.281f,-18.176f,-16.437f,-14.768f,-13.310f, --11.757f, -9.847f, -8.144f, -6.617f, -3.094f, 3.321f, 4.400f, 6.475f, 7.926f, 9.488f, - 10.944f, 11.332f, 12.135f, 12.578f, 13.927f, 15.054f, 14.218f, 15.729f, 16.775f, 17.526f, - 19.083f, 20.742f, 21.892f, 22.070f, 25.512f, 27.877f, 28.289f, 26.441f, 25.298f, 23.893f, - 27.319f, 28.336f, 28.198f, 26.265f, 26.961f, 26.565f, 28.030f, 28.185f, 29.701f, 27.333f, - 24.904f, 22.148f, 17.951f, 20.797f, 23.842f, 21.570f, 22.095f, 20.515f, 18.592f, 15.708f, - 13.606f -},{ --29.534f,-28.293f,-26.622f,-25.614f,-24.987f,-24.554f,-22.515f,-20.761f,-24.562f,-24.936f, --21.620f,-18.324f,-15.461f,-13.896f,-12.037f, -8.827f, -5.786f, -2.471f, -0.790f, -1.503f, - -0.961f, 2.922f, 6.239f, 8.821f, 12.979f, 14.635f, 17.858f, 21.563f, 21.930f, 23.508f, - 21.269f, 20.477f, 19.696f, 19.168f, 17.126f, 14.163f, 11.788f, 5.062f, 7.674f, 8.541f, - 4.380f, 0.653f, -0.027f, -1.486f, -1.647f, -1.471f, -1.008f, -0.884f, -0.609f, -0.264f, - 0.385f, 1.329f, 2.062f, 4.181f, 7.140f, 8.827f, 9.601f, 11.002f, 10.766f, 11.135f, - 8.577f, 8.330f, 7.841f, 5.310f, 4.174f, 2.808f, 0.820f, -1.792f, -2.844f, -3.977f, - -5.400f, -4.946f, -3.386f, -3.311f, -4.284f, -5.000f, -7.599f, -8.469f, -9.436f,-10.789f, --12.420f,-15.590f,-19.064f,-20.542f,-21.296f,-21.588f,-21.195f,-20.119f,-21.686f,-23.285f, --24.762f,-27.578f,-29.336f,-30.396f,-32.167f,-33.711f,-32.627f,-34.324f,-38.835f,-43.913f, --44.976f,-45.302f,-44.709f,-44.240f,-44.368f,-44.495f,-44.210f,-42.101f,-40.665f,-40.495f, --40.001f,-38.726f,-38.237f,-36.855f,-36.330f,-35.496f,-33.596f,-32.572f,-31.137f,-29.093f, --27.592f,-25.804f,-23.791f,-21.602f,-19.551f,-17.518f,-15.655f,-13.083f,-11.122f,-10.176f, - -8.891f, -7.311f, -5.723f, -2.479f, 2.603f, 6.164f, 7.456f, 8.498f, 9.465f, 12.220f, - 12.907f, 13.646f, 14.559f, 15.401f, 15.644f, 15.977f, 16.970f, 18.433f, 19.177f, 20.583f, - 21.683f, 23.070f, 23.352f, 24.755f, 27.946f, 27.195f, 29.648f, 28.063f, 26.408f, 22.776f, - 26.390f, 27.509f, 29.934f, 28.550f, 28.658f, 28.303f, 29.025f, 28.993f, 30.020f, 27.742f, - 25.774f, 22.761f, 18.301f, 20.959f, 24.094f, 21.358f, 21.763f, 20.431f, 18.494f, 15.688f, - 13.606f -},{ --29.534f,-28.282f,-26.642f,-25.827f,-25.249f,-24.475f,-22.587f,-20.475f,-24.190f,-24.867f, --21.385f,-18.181f,-15.624f,-13.872f,-11.846f, -8.631f, -5.248f, -1.991f, -0.949f, -1.640f, - -0.827f, 3.132f, 6.236f, 8.701f, 12.512f, 14.533f, 16.655f, 20.855f, 20.788f, 22.296f, - 21.305f, 20.201f, 19.292f, 18.956f, 17.226f, 14.594f, 13.436f, 5.751f, 6.644f, 7.083f, - 3.436f, -0.311f, -0.955f, -2.237f, -2.610f, -2.407f, -2.051f, -1.758f, -1.342f, -0.987f, - -0.399f, -0.179f, 0.834f, 2.316f, 4.134f, 7.689f, 8.433f, 7.828f, 8.190f, 8.244f, - 6.125f, 6.973f, 6.946f, 6.505f, 4.848f, 2.453f, -0.996f, -2.656f, -4.397f, -5.797f, - -6.555f, -6.569f, -6.106f, -4.485f, -4.937f, -5.937f, -8.796f, -8.344f,-10.683f,-12.027f, --12.752f,-16.214f,-19.439f,-20.913f,-21.514f,-21.859f,-22.091f,-22.276f,-22.717f,-23.579f, --24.158f,-26.516f,-28.659f,-30.447f,-32.521f,-34.264f,-33.098f,-39.220f,-43.167f,-43.856f, --44.800f,-44.983f,-44.197f,-43.731f,-43.209f,-42.845f,-42.021f,-40.721f,-39.372f,-38.779f, --37.900f,-36.333f,-35.683f,-34.246f,-33.720f,-32.627f,-30.706f,-29.525f,-28.021f,-26.299f, --24.581f,-22.825f,-20.876f,-18.355f,-16.199f,-14.718f,-11.314f,-10.211f, -7.959f, -6.733f, - -5.796f, -4.227f, -1.032f, 3.678f, 8.258f, 9.743f, 10.261f, 11.194f, 12.947f, 15.496f, - 16.458f, 16.362f, 17.394f, 18.783f, 17.655f, 18.422f, 19.536f, 20.824f, 22.085f, 23.143f, - 24.357f, 25.318f, 25.262f, 28.261f, 28.382f, 27.312f, 31.441f, 29.960f, 27.378f, 23.593f, - 25.997f, 27.890f, 31.962f, 30.633f, 30.181f, 29.798f, 29.830f, 29.718f, 30.279f, 28.148f, - 26.623f, 23.367f, 18.629f, 21.135f, 24.300f, 21.139f, 21.417f, 20.331f, 18.386f, 15.667f, - 13.606f -},{ --29.534f,-28.272f,-26.653f,-26.012f,-25.540f,-24.553f,-22.770f,-20.350f,-23.759f,-24.724f, --20.888f,-17.915f,-15.820f,-14.027f,-11.561f, -8.656f, -4.943f, -1.722f, -1.094f, -1.446f, - -0.229f, 3.584f, 6.511f, 8.641f, 11.696f, 13.643f, 15.404f, 20.003f, 20.184f, 21.343f, - 20.022f, 20.294f, 19.071f, 18.077f, 17.314f, 14.671f, 11.769f, 6.811f, 6.198f, 6.000f, - 3.157f, -0.714f, -1.642f, -2.932f, -3.326f, -2.775f, -2.261f, -2.167f, -2.026f, -1.722f, - -1.641f, -1.560f, -1.095f, -0.365f, 1.495f, 3.169f, 5.927f, 7.296f, 5.830f, 5.750f, - 4.245f, 6.211f, 6.396f, 5.892f, 4.913f, 3.017f, -0.006f, -4.412f, -5.691f, -6.880f, - -8.022f, -8.415f, -7.943f, -6.513f, -6.078f, -7.231f, -9.534f,-11.124f,-13.996f,-15.596f, --14.751f,-17.445f,-20.083f,-21.290f,-21.931f,-22.295f,-22.536f,-22.173f,-23.051f,-23.019f, --23.655f,-25.561f,-28.391f,-30.855f,-33.639f,-33.698f,-35.616f,-39.996f,-42.968f,-43.138f, --44.051f,-43.903f,-43.356f,-42.788f,-41.867f,-40.846f,-39.910f,-38.802f,-37.599f,-36.998f, --35.505f,-34.013f,-33.506f,-31.353f,-30.697f,-29.254f,-27.658f,-26.335f,-24.638f,-22.920f, --21.042f,-19.450f,-17.722f,-15.509f,-13.274f,-11.287f, -8.784f, -6.815f, -4.985f, -3.320f, - -2.073f, -0.858f, 3.589f, 9.570f, 11.945f, 14.045f, 13.752f, 14.709f, 16.672f, 21.733f, - 22.083f, 20.108f, 20.634f, 20.752f, 21.098f, 21.899f, 22.735f, 23.510f, 24.604f, 25.271f, - 26.784f, 27.169f, 28.940f, 30.034f, 29.388f, 29.372f, 32.417f, 31.408f, 29.002f, 25.739f, - 27.302f, 29.794f, 33.744f, 32.387f, 31.585f, 30.900f, 30.526f, 30.260f, 30.470f, 28.566f, - 27.367f, 24.002f, 18.959f, 21.349f, 24.475f, 20.943f, 21.087f, 20.224f, 18.272f, 15.646f, - 13.606f -},{ --29.534f,-28.263f,-26.653f,-26.159f,-25.843f,-24.765f,-22.968f,-20.391f,-23.348f,-24.438f, --20.073f,-17.417f,-15.658f,-14.194f,-11.280f, -8.517f, -4.805f, -1.575f, -0.905f, -1.260f, - 0.278f, 4.057f, 6.916f, 8.822f, 11.336f, 12.973f, 15.430f, 19.545f, 20.167f, 20.790f, - 19.614f, 19.895f, 19.200f, 18.040f, 17.916f, 14.834f, 11.451f, 5.535f, 5.743f, 5.537f, - 2.474f, -0.640f, -1.959f, -3.603f, -3.663f, -3.122f, -2.337f, -2.318f, -2.734f, -2.671f, - -2.633f, -2.698f, -2.480f, -2.203f, -1.459f, -0.245f, 2.140f, 4.474f, 4.527f, 4.393f, - 2.771f, 4.303f, 5.898f, 4.045f, 3.854f, 4.111f, -0.131f, -5.005f, -6.197f, -7.124f, - -8.115f, -8.328f, -9.057f, -9.112f, -8.244f, -9.230f, -9.562f,-12.152f,-16.348f,-18.501f, --18.860f,-20.533f,-21.769f,-22.124f,-22.878f,-23.737f,-24.189f,-23.806f,-23.941f,-24.958f, --25.693f,-26.828f,-28.634f,-30.567f,-32.293f,-36.260f,-38.493f,-40.314f,-42.047f,-42.403f, --42.806f,-42.547f,-42.499f,-41.398f,-40.544f,-38.256f,-37.762f,-36.087f,-35.396f,-34.331f, --32.982f,-31.264f,-30.634f,-28.820f,-27.700f,-26.168f,-24.327f,-22.898f,-21.004f,-19.342f, --17.633f,-15.731f,-14.074f,-12.089f, -9.715f, -7.512f, -5.421f, -3.706f, -2.034f, -0.374f, - 1.179f, 3.419f, 5.205f, 13.012f, 15.565f, 17.046f, 17.574f, 17.416f, 20.574f, 23.794f, - 24.159f, 23.632f, 22.247f, 22.806f, 23.644f, 25.065f, 25.718f, 26.526f, 26.942f, 27.951f, - 28.522f, 29.294f, 31.305f, 32.328f, 32.519f, 32.779f, 33.877f, 33.422f, 31.841f, 28.667f, - 29.860f, 32.108f, 34.932f, 34.082f, 32.760f, 31.651f, 31.171f, 30.564f, 30.640f, 29.038f, - 27.971f, 24.682f, 19.333f, 21.627f, 24.639f, 20.796f, 20.801f, 20.118f, 18.153f, 15.624f, - 13.606f -},{ --29.534f,-28.256f,-26.642f,-26.259f,-26.133f,-25.045f,-23.088f,-20.574f,-23.078f,-23.987f, --19.045f,-16.662f,-15.058f,-14.084f,-11.018f, -8.156f, -4.579f, -1.359f, -0.807f, -1.197f, - 0.590f, 4.418f, 7.168f, 8.956f, 11.037f, 13.241f, 16.300f, 19.093f, 20.293f, 20.826f, - 19.266f, 20.206f, 19.210f, 18.121f, 17.901f, 15.591f, 10.900f, 3.606f, 5.572f, 5.797f, - 2.227f, -0.702f, -2.308f, -3.900f, -4.122f, -3.331f, -2.559f, -2.622f, -2.987f, -3.313f, - -3.549f, -3.538f, -3.384f, -3.283f, -3.391f, -3.058f, -1.129f, -0.291f, -0.997f, 0.928f, - 3.222f, 1.999f, 1.615f, 0.776f, 2.013f, 1.577f, -1.021f, -4.808f, -6.506f, -7.122f, - -8.053f,-10.772f,-13.258f,-11.781f,-10.629f,-11.526f,-10.635f,-11.741f,-14.045f,-17.111f, --19.403f,-22.076f,-23.277f,-22.811f,-23.608f,-24.569f,-25.425f,-24.954f,-24.536f,-25.035f, --26.783f,-28.145f,-29.402f,-29.285f,-29.491f,-35.000f,-38.238f,-40.251f,-41.526f,-41.158f, --41.154f,-41.139f,-41.012f,-39.660f,-38.226f,-35.567f,-34.479f,-33.613f,-32.651f,-31.682f, --30.161f,-28.592f,-27.278f,-25.763f,-24.512f,-22.480f,-20.921f,-19.331f,-17.529f,-15.720f, --13.944f,-12.196f,-10.294f, -8.541f, -6.086f, -4.212f, -2.944f, -0.882f, 0.906f, 2.495f, - 4.479f, 6.530f, 9.463f, 16.154f, 16.939f, 19.469f, 20.133f, 20.523f, 25.154f, 22.200f, - 22.967f, 24.226f, 23.558f, 25.362f, 26.754f, 27.942f, 28.379f, 29.298f, 29.659f, 30.561f, - 30.422f, 30.952f, 33.432f, 36.870f, 36.246f, 36.792f, 36.234f, 35.818f, 34.233f, 31.371f, - 32.384f, 33.988f, 35.832f, 35.695f, 33.562f, 32.213f, 31.708f, 30.678f, 30.872f, 29.608f, - 28.485f, 25.403f, 19.809f, 21.980f, 24.807f, 20.713f, 20.577f, 20.020f, 18.034f, 15.602f, - 13.606f -},{ --29.534f,-28.250f,-26.617f,-26.304f,-26.375f,-25.296f,-23.058f,-20.838f,-23.040f,-23.435f, --18.047f,-15.786f,-14.363f,-13.658f,-10.686f, -7.833f, -4.338f, -1.255f, -1.064f, -0.951f, - 0.919f, 4.547f, 7.230f, 8.905f, 11.185f, 14.140f, 16.395f, 18.806f, 19.547f, 20.854f, - 18.024f, 20.431f, 19.629f, 18.685f, 17.670f, 15.851f, 12.050f, 5.564f, 5.138f, 5.938f, - 2.379f, -0.884f, -2.762f, -3.962f, -4.062f, -3.709f, -2.761f, -2.792f, -3.224f, -3.872f, - -4.418f, -4.363f, -3.891f, -4.131f, -4.522f, -5.039f, -3.419f, -2.653f, -2.668f, -3.127f, - 0.819f, 1.266f, 1.238f, 0.399f, -0.106f, -1.420f, -3.140f, -5.195f, -6.299f, -7.063f, - -9.089f,-11.087f,-13.172f,-12.496f,-12.625f,-13.543f,-14.600f,-15.855f,-15.390f,-15.738f, --18.862f,-21.278f,-22.955f,-23.608f,-24.334f,-24.843f,-24.685f,-26.061f,-25.205f,-25.323f, --26.444f,-27.257f,-28.446f,-28.979f,-30.149f,-34.620f,-37.568f,-39.070f,-39.960f,-39.300f, --39.489f,-39.383f,-38.420f,-36.962f,-35.304f,-32.953f,-32.026f,-31.008f,-29.837f,-28.639f, --26.902f,-25.580f,-24.024f,-22.280f,-20.846f,-18.932f,-17.083f,-15.407f,-13.845f,-12.010f, --10.187f, -8.432f, -6.732f, -4.720f, -2.708f, -0.658f, 0.245f, 2.016f, 3.754f, 5.100f, - 6.963f, 9.329f, 11.785f, 17.415f, 17.827f, 20.909f, 23.713f, 25.060f, 27.226f, 23.321f, - 23.476f, 24.693f, 26.311f, 28.283f, 29.673f, 30.635f, 31.088f, 31.974f, 32.483f, 33.577f, - 32.792f, 33.424f, 37.363f, 41.199f, 39.911f, 40.070f, 39.109f, 38.617f, 36.012f, 33.721f, - 34.567f, 35.510f, 36.671f, 36.683f, 34.117f, 32.760f, 32.038f, 30.772f, 31.209f, 30.266f, - 29.014f, 26.150f, 20.446f, 22.401f, 24.979f, 20.701f, 20.428f, 19.935f, 17.917f, 15.581f, - 13.606f -},{ --29.534f,-28.246f,-26.580f,-26.289f,-26.532f,-25.409f,-22.845f,-21.094f,-23.235f,-22.893f, --17.339f,-15.041f,-13.997f,-13.152f,-10.213f, -7.564f, -4.204f, -1.453f, -1.358f, -0.674f, - 1.174f, 4.501f, 7.208f, 8.955f, 11.809f, 14.731f, 16.520f, 18.815f, 20.854f, 23.434f, - 18.817f, 20.713f, 20.074f, 18.905f, 17.502f, 15.646f, 13.723f, 7.760f, 4.432f, 5.397f, - 2.244f, -0.927f, -2.886f, -3.938f, -3.716f, -3.776f, -3.144f, -3.111f, -3.646f, -4.572f, - -5.101f, -4.878f, -4.563f, -4.772f, -5.261f, -5.835f, -4.858f, -4.091f, -3.797f, -5.182f, - -3.905f, -3.009f, -1.594f, -2.679f, -2.465f, -1.567f, -2.466f, -3.986f, -5.118f, -5.575f, - -7.870f, -9.134f,-11.478f,-12.859f,-13.222f,-15.030f,-16.752f,-17.952f,-16.929f,-16.499f, --18.510f,-20.688f,-23.055f,-24.423f,-25.519f,-26.300f,-26.418f,-26.432f,-24.877f,-25.388f, --26.060f,-26.085f,-29.960f,-30.764f,-31.201f,-33.904f,-36.179f,-37.537f,-37.385f,-37.010f, --37.320f,-37.399f,-35.243f,-33.702f,-32.043f,-30.662f,-28.905f,-27.907f,-26.815f,-25.131f, --23.982f,-22.411f,-20.631f,-18.862f,-17.198f,-15.014f,-13.466f,-11.646f,-10.086f, -8.078f, - -6.433f, -4.579f, -3.179f, -1.095f, 0.755f, 2.147f, 3.928f, 5.288f, 6.702f, 7.742f, - 10.150f, 11.862f, 15.248f, 18.555f, 20.494f, 23.481f, 26.235f, 27.799f, 28.971f, 26.266f, - 26.092f, 27.164f, 29.082f, 31.343f, 32.320f, 33.849f, 33.897f, 34.025f, 35.043f, 36.324f, - 35.964f, 35.925f, 41.538f, 44.442f, 43.236f, 42.997f, 41.712f, 41.185f, 37.930f, 35.956f, - 36.487f, 36.862f, 37.299f, 36.850f, 34.705f, 33.417f, 32.231f, 31.071f, 31.627f, 30.935f, - 29.639f, 26.916f, 21.285f, 22.867f, 25.144f, 20.757f, 20.356f, 19.868f, 17.805f, 15.560f, - 13.606f -},{ --29.534f,-28.242f,-26.529f,-26.211f,-26.567f,-25.287f,-22.453f,-21.242f,-23.531f,-22.443f, --17.057f,-14.659f,-14.079f,-12.782f, -9.683f, -7.125f, -4.051f, -1.746f, -1.504f, -0.601f, - 1.415f, 4.354f, 7.010f, 9.087f, 12.062f, 14.344f, 16.733f, 18.622f, 22.414f, 25.395f, - 17.324f, 20.967f, 20.212f, 18.446f, 17.052f, 15.592f, 14.008f, 6.490f, 4.091f, 5.898f, - 2.274f, -0.595f, -2.809f, -3.783f, -3.561f, -3.634f, -3.351f, -3.574f, -4.462f, -5.411f, - -5.787f, -5.376f, -5.141f, -5.317f, -5.660f, -6.065f, -5.607f, -5.039f, -4.923f, -6.136f, - -6.361f, -6.316f, -6.291f, -7.050f, -5.754f, -3.362f, -3.375f, -2.179f, -2.832f, -5.439f, - -8.122f, -9.211f,-11.608f,-14.624f,-13.887f,-13.644f,-14.055f,-14.031f,-15.588f,-16.208f, --17.214f,-19.887f,-23.170f,-24.563f,-25.385f,-26.404f,-27.480f,-26.624f,-25.708f,-23.806f, --24.872f,-26.482f,-31.513f,-30.656f,-31.795f,-32.880f,-34.485f,-35.051f,-34.629f,-34.909f, --34.948f,-34.770f,-32.030f,-30.653f,-28.993f,-28.057f,-26.637f,-25.342f,-24.029f,-22.536f, --20.668f,-18.864f,-17.224f,-15.650f,-13.490f,-11.367f, -9.574f, -8.187f, -6.173f, -4.177f, - -2.524f, -0.843f, 0.591f, 2.565f, 4.336f, 5.926f, 7.351f, 8.545f, 9.396f, 11.124f, - 13.491f, 15.579f, 18.091f, 20.451f, 23.436f, 26.258f, 29.085f, 31.982f, 31.575f, 29.104f, - 29.242f, 30.649f, 31.850f, 33.923f, 35.358f, 36.569f, 36.589f, 36.682f, 37.666f, 37.750f, - 39.190f, 37.863f, 45.059f, 47.180f, 46.319f, 45.749f, 43.608f, 42.885f, 39.923f, 37.855f, - 38.034f, 37.981f, 37.814f, 36.818f, 35.394f, 34.200f, 32.550f, 31.700f, 32.072f, 31.538f, - 30.365f, 27.705f, 22.335f, 23.347f, 25.278f, 20.867f, 20.355f, 19.821f, 17.700f, 15.539f, - 13.606f -},{ --29.534f,-28.239f,-26.464f,-26.071f,-26.452f,-24.869f,-21.918f,-21.204f,-23.710f,-22.079f, --17.151f,-14.730f,-14.411f,-12.540f, -9.247f, -6.561f, -3.853f, -1.975f, -1.575f, -0.467f, - 1.717f, 4.218f, 6.859f, 9.469f, 12.251f, 13.972f, 16.793f, 18.772f, 22.803f, 25.916f, - 16.085f, 20.824f, 19.862f, 18.565f, 17.132f, 15.725f, 13.657f, 4.309f, 4.715f, 6.285f, - 3.189f, 0.018f, -2.113f, -3.143f, -3.307f, -3.480f, -3.805f, -4.364f, -5.423f, -6.179f, - -6.434f, -6.055f, -5.731f, -5.728f, -5.983f, -6.282f, -5.989f, -6.105f, -6.230f, -7.895f, - -7.315f, -8.015f, -7.855f, -8.138f, -9.589f, -5.665f, -4.489f, -3.181f, -2.733f, -4.289f, - -6.951f,-10.452f,-12.102f,-14.588f,-14.055f,-12.755f,-12.681f,-12.817f,-15.773f,-17.097f, --16.003f,-18.909f,-22.621f,-23.825f,-23.819f,-25.313f,-26.465f,-26.553f,-26.351f,-22.262f, --23.154f,-28.256f,-29.277f,-28.685f,-29.672f,-31.179f,-32.439f,-32.478f,-32.148f,-32.537f, --32.354f,-30.790f,-29.042f,-27.148f,-25.734f,-25.770f,-25.234f,-24.217f,-22.639f,-20.673f, --18.396f,-16.451f,-14.359f,-12.354f,-11.376f, -8.325f, -6.148f, -3.844f, -2.087f, -0.493f, - 1.281f, 2.957f, 4.435f, 6.479f, 7.850f, 9.343f, 10.692f, 11.747f, 12.607f, 13.863f, - 16.119f, 18.567f, 20.741f, 22.972f, 25.370f, 27.854f, 29.490f, 35.015f, 34.888f, 32.864f, - 32.376f, 33.501f, 34.146f, 36.334f, 37.761f, 38.770f, 39.091f, 39.341f, 40.221f, 39.729f, - 41.214f, 42.487f, 47.700f, 49.366f, 48.852f, 47.873f, 45.463f, 44.498f, 41.852f, 39.427f, - 39.311f, 38.881f, 38.556f, 37.228f, 36.046f, 34.965f, 33.166f, 32.558f, 32.517f, 32.070f, - 31.126f, 28.539f, 23.559f, 23.820f, 25.361f, 21.016f, 20.412f, 19.795f, 17.606f, 15.518f, - 13.606f -},{ --29.534f,-28.237f,-26.386f,-25.871f,-26.174f,-24.139f,-21.295f,-20.946f,-23.558f,-21.715f, --17.443f,-15.161f,-14.750f,-12.341f, -8.932f, -6.121f, -3.784f, -2.347f, -1.585f, -0.189f, - 1.912f, 4.171f, 6.815f, 9.826f, 12.148f, 13.995f, 16.796f, 18.458f, 22.500f, 25.721f, - 15.910f, 19.986f, 19.763f, 18.436f, 17.292f, 15.631f, 13.487f, 4.101f, 5.010f, 7.583f, - 4.527f, 0.678f, -1.333f, -2.557f, -3.547f, -3.644f, -4.667f, -5.425f, -6.457f, -7.085f, - -6.970f, -6.696f, -6.402f, -6.215f, -6.482f, -6.959f, -6.724f, -6.993f, -7.559f, -8.027f, - -7.765f, -8.684f,-10.449f,-10.558f,-10.922f,-10.188f, -6.162f, -4.054f, -3.886f, -3.804f, - -6.280f, -9.680f,-10.965f,-12.365f,-12.864f,-13.234f,-13.124f,-14.264f,-16.022f,-17.016f, --14.816f,-17.716f,-21.737f,-23.111f,-22.620f,-23.000f,-23.425f,-23.525f,-22.296f,-22.190f, --24.792f,-26.740f,-26.675f,-26.888f,-28.177f,-28.554f,-29.603f,-29.952f,-29.795f,-29.550f, --28.963f,-27.480f,-25.942f,-25.165f,-24.621f,-24.503f,-23.624f,-22.492f,-20.738f,-19.030f, --17.043f,-14.920f,-12.920f,-10.803f, -8.570f, -6.513f, -3.643f, -0.821f, 1.698f, 3.637f, - 5.132f, 6.747f, 8.366f, 10.168f, 11.341f, 12.749f, 14.022f, 15.538f, 16.039f, 16.843f, - 19.352f, 21.309f, 23.528f, 25.774f, 27.553f, 29.688f, 30.962f, 35.528f, 35.863f, 35.086f, - 35.272f, 36.326f, 36.484f, 38.845f, 39.977f, 40.858f, 41.317f, 41.512f, 41.647f, 43.277f, - 43.654f, 46.079f, 49.067f, 50.233f, 50.119f, 49.201f, 47.251f, 46.048f, 43.444f, 40.699f, - 40.460f, 39.743f, 39.417f, 38.081f, 36.613f, 35.530f, 33.985f, 33.395f, 32.957f, 32.596f, - 31.843f, 29.441f, 24.887f, 24.279f, 25.379f, 21.191f, 20.513f, 19.790f, 17.524f, 15.499f, - 13.606f -},{ --29.534f,-28.235f,-26.296f,-25.619f,-25.730f,-23.135f,-20.640f,-20.497f,-22.980f,-21.267f, --17.747f,-15.715f,-14.983f,-12.203f, -8.650f, -5.786f, -3.811f, -2.943f, -1.617f, 0.016f, - 2.130f, 4.151f, 6.749f, 9.797f, 12.000f, 14.297f, 16.533f, 18.242f, 21.795f, 24.433f, - 17.711f, 19.643f, 19.555f, 18.030f, 17.252f, 15.514f, 14.061f, 5.735f, 5.291f, 8.766f, - 6.024f, 1.373f, -1.126f, -2.784f, -4.238f, -4.375f, -5.360f, -6.311f, -7.216f, -7.620f, - -7.428f, -7.097f, -6.828f, -6.732f, -6.830f, -7.309f, -7.198f, -7.614f, -7.588f, -7.943f, - -8.247f, -9.085f,-10.331f,-10.229f,-10.520f,-11.619f, -7.944f, -5.636f, -4.632f, -5.215f, - -9.677f,-11.310f,-10.541f,-12.227f,-11.957f,-12.789f,-13.133f,-15.671f,-15.690f,-16.479f, --16.776f,-15.643f,-19.194f,-21.327f,-21.506f,-21.562f,-21.058f,-22.151f,-20.269f,-22.839f, --24.768f,-24.501f,-24.361f,-24.860f,-25.613f,-26.463f,-27.052f,-27.576f,-27.986f,-26.185f, --25.612f,-24.752f,-23.678f,-23.741f,-23.085f,-23.140f,-21.856f,-21.033f,-19.288f,-17.432f, --15.206f,-13.427f,-11.398f, -9.356f, -6.667f, -4.127f, -1.591f, 0.875f, 3.990f, 6.859f, - 8.848f, 10.561f, 12.048f, 13.671f, 14.842f, 16.231f, 17.691f, 19.182f, 19.725f, 20.456f, - 22.523f, 24.360f, 26.287f, 28.560f, 30.173f, 31.925f, 33.487f, 35.147f, 36.419f, 37.177f, - 37.886f, 38.631f, 39.185f, 41.320f, 42.349f, 43.068f, 43.357f, 43.781f, 43.428f, 45.357f, - 45.497f, 45.544f, 46.690f, 47.998f, 50.219f, 49.146f, 48.111f, 47.075f, 44.766f, 41.927f, - 41.720f, 40.710f, 40.066f, 39.103f, 37.143f, 35.908f, 34.824f, 34.053f, 33.376f, 33.162f, - 32.469f, 30.416f, 26.224f, 24.737f, 25.337f, 21.382f, 20.641f, 19.802f, 17.454f, 15.480f, - 13.606f -},{ --29.534f,-28.234f,-26.195f,-25.322f,-25.139f,-21.944f,-20.002f,-19.934f,-22.060f,-20.732f, --17.947f,-16.127f,-15.058f,-12.180f, -8.393f, -5.335f, -3.764f, -3.487f, -1.772f, 0.166f, - 2.448f, 4.235f, 6.915f, 9.606f, 11.924f, 14.330f, 16.355f, 18.364f, 20.763f, 21.074f, - 20.167f, 19.319f, 19.329f, 18.021f, 17.373f, 15.882f, 15.932f, 6.040f, 5.183f, 7.850f, - 6.377f, 1.787f, -1.132f, -3.317f, -4.572f, -4.857f, -5.972f, -6.936f, -7.706f, -7.840f, - -7.506f, -7.262f, -7.085f, -7.171f, -7.222f, -7.619f, -7.601f, -7.633f, -7.381f, -8.092f, - -9.116f, -9.217f,-10.772f,-10.143f,-10.243f,-11.278f, -8.752f, -5.855f, -5.222f, -5.796f, - -6.315f,-10.842f,-10.134f,-11.396f,-10.803f,-10.640f,-13.562f,-12.706f,-13.136f,-15.813f, --16.529f,-14.491f,-16.170f,-18.431f,-18.954f,-19.274f,-19.115f,-20.369f,-19.035f,-21.751f, --23.138f,-22.110f,-21.956f,-22.856f,-22.990f,-23.733f,-24.148f,-24.720f,-24.853f,-22.907f, --22.298f,-22.422f,-22.247f,-22.164f,-21.433f,-21.365f,-20.237f,-19.051f,-17.666f,-15.631f, --13.767f,-11.951f, -9.744f, -7.756f, -4.935f, -2.132f, 0.724f, 3.367f, 5.901f, 9.017f, - 12.025f, 14.476f, 15.778f, 17.139f, 18.430f, 19.850f, 21.511f, 22.761f, 23.311f, 23.789f, - 25.564f, 27.323f, 29.160f, 31.422f, 32.986f, 34.126f, 35.322f, 36.091f, 37.454f, 39.425f, - 40.031f, 40.794f, 41.686f, 43.523f, 44.330f, 45.167f, 45.417f, 45.545f, 45.326f, 46.365f, - 47.544f, 48.108f, 46.762f, 45.931f, 48.001f, 47.725f, 47.701f, 47.573f, 46.036f, 43.598f, - 43.177f, 41.863f, 40.741f, 40.118f, 37.567f, 36.314f, 35.664f, 34.597f, 33.746f, 33.737f, - 33.002f, 31.436f, 27.475f, 25.216f, 25.261f, 21.586f, 20.780f, 19.828f, 17.400f, 15.463f, - 13.606f -},{ --29.534f,-28.232f,-26.085f,-24.991f,-24.431f,-20.686f,-19.413f,-19.356f,-21.031f,-20.206f, --18.002f,-16.239f,-14.918f,-12.210f, -8.239f, -4.777f, -3.735f, -3.833f, -1.895f, 0.323f, - 2.542f, 4.470f, 7.181f, 9.426f, 11.585f, 14.193f, 16.313f, 17.855f, 18.997f, 18.180f, - 21.260f, 19.572f, 19.164f, 18.514f, 17.783f, 16.536f, 15.852f, 3.919f, 4.965f, 6.514f, - 5.719f, 1.502f, -0.714f, -3.382f, -4.773f, -5.025f, -6.369f, -7.197f, -7.615f, -7.646f, - -7.389f, -7.184f, -6.901f, -7.081f, -7.324f, -7.336f, -7.378f, -7.773f, -8.016f, -8.956f, - -9.586f, -9.460f,-11.036f,-11.012f,-11.067f,-11.777f,-10.339f, -6.358f, -6.042f, -5.981f, - -5.628f, -8.638f,-10.133f,-10.227f, -9.453f, -9.954f,-11.951f,-11.997f,-11.979f,-12.667f, --14.236f,-13.751f,-12.539f,-14.054f,-14.741f,-15.417f,-14.934f,-15.815f,-16.894f,-19.791f, --20.176f,-19.889f,-19.803f,-20.553f,-20.610f,-21.127f,-21.553f,-21.847f,-21.276f,-19.591f, --18.702f,-20.224f,-20.464f,-20.216f,-19.952f,-19.168f,-18.158f,-16.967f,-15.613f,-13.800f, --12.023f,-10.243f, -8.180f, -5.781f, -3.360f, -0.470f, 2.325f, 5.314f, 8.007f, 11.125f, - 14.226f, 17.551f, 19.869f, 20.921f, 22.014f, 23.419f, 24.754f, 26.302f, 26.951f, 27.013f, - 28.817f, 30.362f, 32.166f, 34.003f, 35.070f, 37.195f, 37.736f, 38.285f, 39.735f, 41.483f, - 42.206f, 42.989f, 44.583f, 45.434f, 46.533f, 47.361f, 47.494f, 47.220f, 47.107f, 47.392f, - 48.009f, 48.978f, 49.703f, 47.648f, 45.436f, 45.461f, 47.545f, 47.887f, 47.008f, 45.263f, - 44.430f, 43.282f, 41.832f, 40.972f, 37.820f, 36.883f, 36.587f, 35.198f, 34.074f, 34.233f, - 33.461f, 32.430f, 28.568f, 25.738f, 25.188f, 21.806f, 20.918f, 19.865f, 17.359f, 15.446f, - 13.606f -},{ --29.534f,-28.231f,-25.968f,-24.638f,-23.650f,-19.492f,-18.894f,-18.847f,-20.172f,-19.825f, --17.899f,-16.061f,-14.598f,-12.184f, -8.151f, -4.303f, -3.845f, -4.147f, -1.838f, 0.396f, - 2.515f, 4.598f, 7.223f, 9.251f, 11.502f, 14.226f, 15.987f, 18.142f, 18.648f, 19.510f, - 21.863f, 20.077f, 19.511f, 19.041f, 18.321f, 16.306f, 15.305f, 2.789f, 5.806f, 6.041f, - 3.419f, 1.319f, -0.322f, -2.764f, -4.185f, -4.836f, -6.251f, -6.906f, -7.162f, -7.103f, - -6.836f, -6.638f, -6.668f, -6.872f, -6.883f, -7.169f, -7.429f, -7.553f, -7.481f, -8.041f, - -8.687f, -8.639f,-10.767f,-11.527f,-10.884f,-11.301f,-11.585f,-10.598f, -7.652f, -7.925f, - -6.679f, -7.658f, -9.021f, -9.264f, -9.472f,-10.895f,-10.269f,-10.850f,-11.571f,-11.758f, --11.872f,-12.139f,-11.072f,-11.337f,-11.843f,-12.337f,-13.172f,-13.081f,-15.757f,-17.866f, --18.568f,-17.689f,-17.400f,-17.940f,-18.087f,-18.399f,-18.855f,-18.837f,-18.378f,-16.404f, --16.334f,-18.448f,-18.871f,-18.334f,-17.680f,-16.927f,-15.901f,-14.950f,-13.661f,-11.992f, --10.238f, -8.247f, -6.250f, -4.167f, -1.506f, 1.126f, 3.841f, 6.802f, 9.742f, 12.997f, - 16.299f, 19.552f, 22.836f, 25.129f, 25.762f, 26.727f, 27.918f, 29.197f, 30.501f, 30.367f, - 32.340f, 33.583f, 35.028f, 36.619f, 37.692f, 39.194f, 40.294f, 41.208f, 42.073f, 43.430f, - 44.505f, 45.410f, 47.059f, 47.417f, 48.843f, 49.575f, 49.456f, 48.909f, 48.768f, 48.694f, - 48.765f, 48.657f, 49.850f, 49.628f, 46.650f, 44.363f, 48.339f, 48.558f, 47.891f, 46.528f, - 45.572f, 44.846f, 43.093f, 41.642f, 38.090f, 37.476f, 37.543f, 35.921f, 34.423f, 34.597f, - 33.872f, 33.305f, 29.464f, 26.308f, 25.160f, 22.048f, 21.045f, 19.908f, 17.334f, 15.431f, - 13.606f -},{ --29.534f,-28.230f,-25.845f,-24.275f,-22.844f,-18.485f,-18.454f,-18.448f,-19.664f,-19.669f, --17.645f,-15.731f,-14.269f,-12.122f, -7.987f, -3.930f, -3.873f, -4.466f, -1.717f, 0.453f, - 2.681f, 4.545f, 7.195f, 9.058f, 11.637f, 14.175f, 15.702f, 18.410f, 19.246f, 19.971f, - 21.183f, 20.511f, 19.907f, 19.617f, 18.527f, 16.529f, 17.216f, 2.903f, 6.682f, 6.271f, - 2.807f, 1.338f, -0.212f, -2.471f, -3.726f, -4.423f, -5.700f, -6.309f, -6.400f, -6.181f, - -6.027f, -6.324f, -6.548f, -6.578f, -6.749f, -7.026f, -7.092f, -7.100f, -7.131f, -7.055f, - -7.201f, -7.660f, -9.863f, -9.465f,-10.984f,-10.525f,-10.548f,-10.804f,-10.395f,-11.423f, --10.129f, -6.615f, -7.560f, -8.280f, -8.477f, -8.423f, -9.221f,-11.125f,-11.783f,-13.412f, --12.348f,-10.895f, -9.917f,-10.472f,-10.619f, -9.647f, -9.543f,-10.781f,-15.850f,-16.009f, --16.488f,-15.287f,-15.162f,-15.244f,-15.295f,-15.694f,-16.320f,-15.951f,-14.832f,-14.455f, --14.683f,-16.719f,-16.774f,-16.577f,-15.787f,-14.748f,-13.598f,-12.730f,-11.566f,-10.011f, - -8.318f, -6.403f, -4.261f, -2.268f, 0.147f, 3.027f, 5.792f, 8.409f, 11.434f, 14.855f, - 18.289f, 21.613f, 24.601f, 28.048f, 29.324f, 30.407f, 31.211f, 32.518f, 33.541f, 33.324f, - 35.134f, 36.708f, 38.450f, 39.837f, 40.445f, 41.680f, 42.328f, 43.604f, 44.086f, 45.235f, - 47.054f, 47.770f, 48.685f, 49.661f, 51.146f, 51.821f, 51.504f, 50.971f, 50.542f, 50.078f, - 49.599f, 49.709f, 50.119f, 50.213f, 49.921f, 45.926f, 48.629f, 50.070f, 49.302f, 48.016f, - 47.015f, 46.268f, 44.266f, 42.400f, 38.684f, 37.907f, 38.378f, 36.709f, 34.868f, 34.869f, - 34.268f, 33.973f, 30.162f, 26.910f, 25.207f, 22.317f, 21.159f, 19.952f, 17.323f, 15.418f, - 13.606f -},{ --29.534f,-28.229f,-25.719f,-23.915f,-22.063f,-17.754f,-18.104f,-18.148f,-19.507f,-19.699f, --17.302f,-15.377f,-14.040f,-12.133f, -7.748f, -3.549f, -3.643f, -4.612f, -1.621f, 0.616f, - 2.756f, 4.566f, 7.163f, 8.888f, 11.545f, 14.144f, 15.622f, 17.722f, 19.987f, 21.164f, - 20.366f, 20.392f, 19.879f, 19.620f, 18.887f, 18.919f, 18.483f, 5.384f, 7.988f, 6.523f, - 3.260f, 1.822f, 0.164f, -2.262f, -3.252f, -3.967f, -5.272f, -5.506f, -5.289f, -5.212f, - -5.186f, -5.862f, -6.049f, -6.119f, -6.336f, -6.335f, -5.957f, -6.444f, -6.376f, -5.405f, - -6.046f, -7.942f, -8.956f, -9.158f, -9.815f, -9.235f, -9.655f, -9.718f,-10.023f, -8.858f, - -7.230f, -7.677f, -5.901f,-12.013f, -9.334f,-13.252f,-11.657f,-11.104f,-10.659f,-11.568f, --10.583f, -9.383f, -7.931f, -8.630f, -7.548f, -8.010f, -8.477f,-11.023f,-12.906f,-14.071f, --14.357f,-12.824f,-12.692f,-12.391f,-12.563f,-12.835f,-13.094f,-12.758f,-12.050f,-12.329f, --12.718f,-14.868f,-14.779f,-14.778f,-13.805f,-12.660f,-11.252f,-10.073f, -9.299f, -7.795f, - -6.237f, -4.239f, -2.252f, -0.524f, 1.672f, 4.687f, 7.447f, 10.166f, 13.253f, 16.392f, - 20.196f, 23.534f, 26.713f, 29.889f, 32.453f, 33.752f, 34.466f, 35.521f, 36.535f, 36.381f, - 38.105f, 39.716f, 41.618f, 42.698f, 43.511f, 44.206f, 44.815f, 45.575f, 46.325f, 47.304f, - 49.277f, 50.036f, 50.473f, 51.399f, 53.401f, 53.988f, 53.801f, 53.029f, 52.439f, 51.534f, - 50.807f, 50.758f, 50.909f, 50.849f, 52.085f, 48.357f, 49.125f, 52.646f, 51.305f, 49.707f, - 48.372f, 47.498f, 45.642f, 43.491f, 39.708f, 38.291f, 39.062f, 37.528f, 35.422f, 35.139f, - 34.700f, 34.385f, 30.688f, 27.512f, 25.341f, 22.611f, 21.257f, 19.994f, 17.327f, 15.406f, - 13.606f -},{ --29.534f,-28.227f,-25.594f,-23.569f,-21.349f,-17.342f,-17.852f,-17.906f,-19.530f,-19.779f, --17.026f,-15.045f,-13.694f,-12.171f, -7.617f, -3.166f, -3.335f, -4.541f, -1.496f, 0.763f, - 2.590f, 4.650f, 7.128f, 8.721f, 11.168f, 13.961f, 15.437f, 17.259f, 20.194f, 21.556f, - 20.622f, 20.806f, 20.235f, 20.210f, 19.219f, 21.351f, 18.282f, 9.784f, 10.296f, 7.437f, - 3.954f, 2.662f, 0.756f, -1.823f, -2.740f, -3.346f, -4.413f, -4.503f, -4.334f, -4.339f, - -4.393f, -4.858f, -5.096f, -5.311f, -5.462f, -5.167f, -5.232f, -5.144f, -4.558f, -3.737f, - -4.056f, -6.179f, -6.953f, -7.912f, -8.647f, -8.593f, -9.200f, -9.479f, -9.643f, -9.817f, - -8.906f,-10.926f,-10.773f,-10.103f,-13.978f,-13.717f,-12.888f,-12.317f,-12.320f,-10.316f, - -9.060f, -7.585f, -6.313f, -6.081f, -6.511f, -7.169f, -9.459f,-10.790f,-12.360f,-12.135f, --12.448f,-10.507f, -9.909f, -9.544f, -9.676f, -9.846f, -9.894f, -9.525f, -9.796f,-10.221f, --11.022f,-12.556f,-12.841f,-12.883f,-11.493f,-10.239f, -8.370f, -7.024f, -6.354f, -5.172f, - -3.668f, -1.822f, 0.030f, 1.643f, 3.341f, 6.194f, 9.295f, 12.007f, 14.928f, 18.269f, - 21.882f, 25.062f, 28.350f, 31.653f, 35.103f, 36.892f, 37.694f, 38.422f, 39.135f, 39.186f, - 40.819f, 42.171f, 43.978f, 45.005f, 45.905f, 46.337f, 46.909f, 47.662f, 48.865f, 49.555f, - 51.136f, 51.791f, 52.309f, 53.627f, 55.395f, 56.048f, 55.906f, 55.312f, 54.377f, 53.246f, - 52.332f, 52.192f, 51.711f, 51.522f, 53.348f, 51.239f, 51.005f, 55.134f, 53.646f, 51.354f, - 49.691f, 48.625f, 47.098f, 44.851f, 41.043f, 38.966f, 39.748f, 38.406f, 36.017f, 35.469f, - 35.219f, 34.548f, 31.083f, 28.075f, 25.553f, 22.925f, 21.342f, 20.031f, 17.342f, 15.395f, - 13.606f -},{ --29.534f,-28.225f,-25.471f,-23.246f,-20.737f,-17.241f,-17.711f,-17.679f,-19.484f,-19.748f, --17.024f,-14.737f,-12.824f,-12.017f, -7.661f, -2.837f, -2.993f, -4.327f, -1.360f, 0.762f, - 2.472f, 4.515f, 7.138f, 8.590f, 10.988f, 13.595f, 15.121f, 17.305f, 20.430f, 20.650f, - 21.848f, 21.428f, 21.005f, 20.509f, 19.407f, 22.755f, 16.624f, 11.034f, 10.728f, 7.589f, - 5.227f, 3.099f, 1.515f, -1.077f, -2.112f, -2.787f, -3.165f, -3.334f, -3.234f, -3.358f, - -3.173f, -3.794f, -4.114f, -4.195f, -4.140f, -4.046f, -3.885f, -3.159f, -1.846f, -0.704f, - -1.330f, -4.440f, -5.533f, -6.635f, -7.286f, -7.718f, -8.565f, -8.506f, -9.523f, -8.103f, - -7.185f, -9.321f, -6.678f, -9.905f,-11.315f,-11.942f,-12.471f,-12.528f,-12.517f,-10.401f, - -9.376f, -7.078f, -5.317f, -3.997f, -5.013f, -6.318f, -7.717f,-10.049f,-11.360f, -9.598f, --10.476f, -8.149f, -7.738f, -6.815f, -6.819f, -6.820f, -6.789f, -6.945f, -7.390f, -8.066f, - -9.051f,-10.509f,-10.870f,-10.790f, -9.170f, -7.842f, -5.400f, -4.091f, -3.391f, -2.279f, - -1.007f, 1.078f, 2.719f, 3.894f, 5.320f, 7.802f, 10.776f, 13.716f, 16.766f, 20.100f, - 23.403f, 26.747f, 29.897f, 33.020f, 36.400f, 39.180f, 40.912f, 41.722f, 41.791f, 42.519f, - 43.432f, 44.616f, 46.041f, 47.290f, 48.403f, 48.990f, 49.280f, 50.016f, 50.724f, 51.613f, - 52.775f, 53.298f, 53.935f, 56.086f, 57.894f, 58.232f, 58.254f, 57.264f, 56.270f, 55.244f, - 54.099f, 53.335f, 52.781f, 52.240f, 53.724f, 54.430f, 53.028f, 56.307f, 55.771f, 53.358f, - 51.632f, 49.681f, 48.021f, 46.257f, 42.414f, 40.012f, 40.532f, 39.338f, 36.587f, 35.841f, - 35.841f, 34.530f, 31.383f, 28.566f, 25.813f, 23.243f, 21.416f, 20.060f, 17.370f, 15.386f, - 13.606f -},{ --29.534f,-28.222f,-25.352f,-22.955f,-20.245f,-17.398f,-17.688f,-17.454f,-19.186f,-19.497f, --17.408f,-14.515f,-11.325f,-11.587f, -7.703f, -2.517f, -2.347f, -3.948f, -1.246f, 0.750f, - 2.309f, 4.158f, 6.992f, 8.636f, 10.991f, 12.933f, 14.804f, 17.328f, 19.828f, 21.797f, - 22.674f, 21.953f, 21.392f, 20.887f, 20.179f, 21.478f, 11.834f, 12.219f, 10.475f, 8.091f, - 5.664f, 4.138f, 2.371f, 0.075f, -1.307f, -1.616f, -1.819f, -2.047f, -1.932f, -2.333f, - -2.210f, -2.715f, -3.010f, -2.449f, -2.840f, -2.707f, -2.673f, -1.945f, -0.761f, 1.224f, - -0.144f, -3.198f, -4.081f, -5.287f, -6.019f, -7.178f, -7.912f, -7.885f, -8.704f, -5.676f, - -8.310f, -8.307f, -8.885f, -8.986f, -9.136f,-10.630f,-11.238f,-11.602f,-12.089f,-11.610f, --11.554f, -7.574f, -5.270f, -4.421f, -5.390f, -6.529f, -8.171f, -8.818f, -9.532f, -7.607f, - -8.434f, -5.794f, -5.174f, -4.166f, -3.948f, -3.873f, -3.881f, -4.060f, -5.430f, -6.085f, - -7.147f, -8.370f, -8.597f, -8.687f, -6.992f, -5.431f, -3.228f, -1.301f, -0.146f, 0.958f, - 2.015f, 3.887f, 5.581f, 6.525f, 7.291f, 9.325f, 11.971f, 15.309f, 18.620f, 21.771f, - 24.831f, 28.041f, 31.437f, 34.447f, 37.790f, 40.821f, 43.396f, 44.543f, 44.611f, 45.448f, - 45.934f, 47.068f, 48.402f, 49.688f, 50.838f, 50.640f, 51.753f, 52.229f, 52.354f, 53.092f, - 54.096f, 54.908f, 55.547f, 57.641f, 59.369f, 59.741f, 60.099f, 59.512f, 58.174f, 57.125f, - 55.812f, 54.796f, 54.032f, 53.456f, 53.505f, 55.972f, 54.952f, 56.595f, 56.435f, 54.637f, - 53.506f, 50.912f, 48.576f, 47.432f, 43.481f, 41.079f, 41.334f, 40.226f, 37.148f, 36.195f, - 36.501f, 34.436f, 31.610f, 28.970f, 26.081f, 23.547f, 21.483f, 20.079f, 17.407f, 15.378f, - 13.606f -},{ --29.534f,-28.219f,-25.242f,-22.701f,-19.879f,-17.724f,-17.781f,-17.263f,-18.610f,-19.007f, --18.064f,-14.499f, -9.691f,-11.071f, -7.605f, -2.183f, -1.428f, -3.441f, -1.110f, 0.846f, - 1.962f, 3.758f, 6.662f, 8.664f, 10.616f, 12.480f, 14.657f, 17.055f, 19.353f, 22.179f, - 22.587f, 22.000f, 21.628f, 21.385f, 20.555f, 16.571f, 11.996f, 13.492f, 12.648f, 9.924f, - 6.762f, 4.464f, 3.318f, 1.557f, 0.198f, -0.149f, -0.475f, -0.783f, -0.647f, -1.119f, - -1.106f, -1.257f, -0.903f, -0.850f, -1.289f, -1.198f, -0.836f, -0.571f, 0.459f, 2.714f, - 0.482f, -1.438f, -2.910f, -4.004f, -5.346f, -6.774f, -7.355f, -7.532f, -7.985f, -5.323f, - -7.302f, -7.249f, -7.851f, -8.361f, -8.428f, -9.414f,-10.020f,-10.185f,-10.590f,-11.186f, --11.432f,-11.143f, -9.543f, -9.233f, -8.466f, -8.434f, -7.082f, -8.069f, -8.198f, -5.808f, - -6.544f, -3.792f, -2.403f, -1.543f, -1.404f, -1.184f, -0.627f, -1.242f, -3.435f, -4.362f, - -5.200f, -6.313f, -6.394f, -6.046f, -4.584f, -2.954f, -0.501f, 1.614f, 3.123f, 4.413f, - 5.805f, 7.334f, 8.625f, 8.870f, 9.438f, 11.115f, 13.331f, 16.584f, 20.204f, 23.354f, - 26.240f, 29.210f, 32.594f, 35.963f, 39.046f, 42.184f, 45.627f, 47.267f, 47.801f, 48.604f, - 49.030f, 49.739f, 50.653f, 51.736f, 52.806f, 53.197f, 53.469f, 53.868f, 54.097f, 54.709f, - 55.553f, 56.573f, 56.952f, 59.057f, 59.630f, 60.226f, 60.982f, 60.970f, 60.270f, 58.919f, - 57.795f, 56.319f, 55.348f, 54.622f, 54.034f, 56.018f, 56.866f, 56.764f, 55.750f, 54.443f, - 54.539f, 52.165f, 49.259f, 48.082f, 44.179f, 41.816f, 42.060f, 40.989f, 37.761f, 36.475f, - 37.061f, 34.379f, 31.766f, 29.291f, 26.320f, 23.817f, 21.545f, 20.088f, 17.452f, 15.373f, - 13.606f -},{ --29.534f,-28.216f,-25.141f,-22.486f,-19.629f,-18.116f,-17.971f,-17.166f,-17.899f,-18.334f, --18.640f,-14.723f, -8.658f,-10.601f, -7.458f, -1.913f, -0.682f, -2.989f, -0.998f, 0.864f, - 1.711f, 3.324f, 6.325f, 8.434f, 10.190f, 12.507f, 14.513f, 16.807f, 19.627f, 22.280f, - 23.194f, 22.759f, 22.356f, 21.961f, 21.105f, 10.845f, 13.206f, 15.315f, 15.023f, 9.944f, - 7.518f, 5.593f, 4.445f, 2.935f, 1.838f, 1.399f, 0.984f, 0.888f, 0.661f, 0.267f, - 0.094f, 0.558f, 0.619f, 0.515f, 0.652f, 0.485f, 0.712f, 0.974f, 1.279f, 2.862f, - 0.502f, 0.141f, -1.610f, -3.320f, -4.689f, -6.069f, -6.780f, -7.332f, -7.165f, -6.386f, - -5.884f, -6.043f, -6.980f, -7.628f, -8.129f, -8.272f, -8.534f, -8.771f, -9.395f,-10.640f, --11.217f,-11.050f,-10.685f, -9.523f, -7.986f, -8.002f, -5.955f, -6.592f, -7.083f, -4.245f, - -3.870f, -1.163f, 0.184f, 1.112f, 1.550f, 2.199f, 1.996f, 0.927f, -1.747f, -2.607f, - -3.242f, -4.212f, -4.035f, -3.415f, -2.034f, -0.259f, 2.550f, 4.713f, 6.383f, 7.950f, - 9.345f, 10.593f, 11.419f, 11.280f, 11.472f, 12.833f, 15.357f, 18.269f, 21.489f, 24.799f, - 27.620f, 30.320f, 33.531f, 37.091f, 40.243f, 43.071f, 46.545f, 49.432f, 50.549f, 51.568f, - 52.340f, 52.676f, 53.313f, 53.975f, 54.584f, 55.129f, 55.461f, 55.682f, 56.047f, 56.190f, - 57.255f, 58.064f, 58.304f, 59.484f, 59.928f, 60.193f, 61.036f, 61.767f, 61.842f, 60.832f, - 59.594f, 58.308f, 56.727f, 55.710f, 55.143f, 55.682f, 57.679f, 57.100f, 55.820f, 55.191f, - 55.437f, 52.676f, 49.823f, 48.329f, 44.896f, 42.300f, 42.804f, 41.659f, 38.408f, 36.650f, - 37.369f, 34.437f, 31.842f, 29.545f, 26.503f, 24.041f, 21.603f, 20.088f, 17.504f, 15.368f, - 13.606f -},{ --29.534f,-28.212f,-25.051f,-22.310f,-19.476f,-18.474f,-18.220f,-17.221f,-17.284f,-17.577f, --18.736f,-14.999f, -8.512f, -9.921f, -7.359f, -1.746f, -0.338f, -2.686f, -1.012f, 0.678f, - 1.618f, 2.908f, 5.960f, 8.130f, 9.904f, 12.065f, 14.504f, 16.888f, 19.365f, 22.479f, - 23.736f, 23.226f, 22.828f, 22.608f, 21.341f, 11.667f, 13.232f, 15.231f, 14.553f, 10.862f, - 8.708f, 6.310f, 5.834f, 4.405f, 3.274f, 2.922f, 2.890f, 3.208f, 2.648f, 2.131f, - 2.123f, 2.473f, 2.369f, 2.450f, 1.975f, 1.726f, 2.822f, 1.792f, 2.282f, 2.376f, - 1.473f, 0.748f, -0.988f, -2.849f, -4.191f, -5.744f, -6.399f, -6.520f, -6.425f, -4.877f, - -5.366f, -5.488f, -6.378f, -7.022f, -7.578f, -7.665f, -7.866f, -8.154f, -8.662f,-10.159f, --10.796f,-10.927f,-10.633f, -9.481f, -8.100f, -7.247f, -5.839f, -5.631f, -5.986f, -2.454f, - -1.791f, 1.228f, 2.652f, 3.596f, 3.737f, 3.774f, 3.651f, 2.818f, -0.182f, -0.522f, - -1.173f, -2.063f, -1.671f, -0.776f, 0.371f, 2.564f, 5.191f, 7.614f, 9.477f, 11.030f, - 12.630f, 13.652f, 13.783f, 13.455f, 13.608f, 14.587f, 16.625f, 20.028f, 23.213f, 26.258f, - 28.932f, 31.537f, 34.520f, 37.978f, 40.677f, 43.970f, 47.043f, 50.505f, 52.835f, 53.832f, - 54.938f, 55.452f, 55.873f, 56.482f, 57.150f, 57.479f, 57.377f, 57.475f, 57.962f, 58.070f, - 59.141f, 59.386f, 59.504f, 59.819f, 60.137f, 60.420f, 61.188f, 61.937f, 62.732f, 62.465f, - 61.204f, 59.914f, 58.614f, 57.190f, 56.232f, 56.101f, 58.018f, 57.396f, 56.915f, 57.468f, - 56.384f, 52.908f, 50.248f, 48.683f, 45.908f, 42.878f, 43.732f, 42.271f, 38.917f, 36.684f, - 37.338f, 34.620f, 31.828f, 29.752f, 26.621f, 24.211f, 21.656f, 20.079f, 17.561f, 15.365f, - 13.606f -},{ --29.534f,-28.207f,-24.975f,-22.173f,-19.394f,-18.722f,-18.477f,-17.442f,-16.951f,-16.842f, --18.165f,-14.975f, -8.841f, -8.672f, -7.206f, -1.680f, -0.296f, -2.464f, -1.097f, 0.509f, - 1.509f, 2.647f, 5.589f, 7.973f, 9.607f, 11.634f, 14.454f, 16.772f, 19.682f, 22.257f, - 23.707f, 23.766f, 23.638f, 23.095f, 21.464f, 10.284f, 13.444f, 15.943f, 15.166f, 11.720f, - 10.012f, 6.795f, 7.171f, 5.809f, 5.050f, 4.820f, 4.960f, 5.118f, 4.717f, 4.170f, - 4.172f, 4.174f, 4.161f, 4.107f, 3.782f, 4.927f, 2.911f, 3.435f, 3.121f, 2.804f, - 2.635f, 2.463f, -0.182f, -2.357f, -4.093f, -5.574f, -6.235f, -6.383f, -6.064f, -6.007f, - -5.710f, -5.402f, -5.933f, -6.677f, -7.199f, -7.059f, -7.349f, -8.220f, -9.210f, -9.815f, --10.184f,-10.369f,-10.515f, -9.213f, -7.653f, -6.326f, -5.535f, -4.757f, -4.480f, -0.562f, - 0.420f, 3.559f, 5.127f, 5.364f, 5.157f, 5.508f, 5.163f, 4.448f, 2.087f, 1.175f, - 0.903f, 0.078f, 0.763f, 1.761f, 3.053f, 5.371f, 7.711f, 10.333f, 12.186f, 13.622f, - 15.290f, 15.998f, 15.486f, 15.080f, 15.774f, 16.805f, 18.522f, 21.354f, 24.779f, 27.382f, - 29.877f, 32.474f, 35.583f, 38.520f, 41.410f, 44.507f, 47.837f, 50.550f, 54.083f, 55.925f, - 56.869f, 57.634f, 58.067f, 58.598f, 59.206f, 59.525f, 59.505f, 59.797f, 59.940f, 60.228f, - 60.574f, 61.040f, 61.078f, 59.990f, 60.021f, 60.357f, 60.872f, 61.903f, 63.030f, 63.331f, - 62.788f, 61.512f, 60.290f, 58.946f, 57.613f, 57.526f, 58.964f, 57.683f, 57.766f, 58.676f, - 56.922f, 53.985f, 50.900f, 49.073f, 46.851f, 43.743f, 44.857f, 42.734f, 39.058f, 36.512f, - 36.987f, 34.856f, 31.717f, 29.920f, 26.679f, 24.332f, 21.705f, 20.063f, 17.621f, 15.364f, - 13.606f -},{ --29.534f,-28.202f,-24.914f,-22.069f,-19.352f,-18.816f,-18.689f,-17.780f,-16.946f,-16.230f, --17.094f,-14.394f, -9.003f, -6.976f, -6.888f, -1.771f, -0.537f, -2.279f, -1.113f, 0.499f, - 1.447f, 2.511f, 5.375f, 7.829f, 9.320f, 11.534f, 14.010f, 16.679f, 19.385f, 22.198f, - 23.544f, 24.102f, 23.655f, 23.105f, 21.300f, 8.469f, 14.057f, 16.015f, 15.542f, 12.170f, - 11.097f, 7.527f, 8.452f, 7.392f, 7.034f, 6.801f, 6.881f, 6.844f, 6.358f, 6.184f, - 6.314f, 6.414f, 6.415f, 5.950f, 5.557f, 6.571f, 4.745f, 4.277f, 4.181f, 3.992f, - 3.488f, 2.176f, -0.161f, -1.850f, -3.689f, -4.932f, -5.970f, -6.340f, -6.255f, -6.217f, - -6.023f, -5.422f, -5.680f, -6.479f, -6.855f, -7.056f, -7.412f, -8.365f, -9.062f, -9.189f, - -9.548f, -9.618f, -9.222f, -8.404f, -6.944f, -5.169f, -3.943f, -3.733f, -3.527f, 1.257f, - 2.156f, 5.047f, 6.512f, 6.433f, 6.424f, 6.623f, 6.530f, 5.755f, 4.324f, 2.886f, - 2.785f, 2.274f, 3.140f, 4.265f, 5.678f, 7.846f, 10.109f, 12.699f, 14.432f, 15.426f, - 16.998f, 17.444f, 16.715f, 16.259f, 17.135f, 18.479f, 20.440f, 22.784f, 25.803f, 28.215f, - 30.194f, 32.419f, 35.863f, 39.354f, 42.110f, 44.351f, 48.132f, 50.636f, 55.008f, 57.268f, - 58.756f, 59.482f, 60.233f, 60.869f, 60.922f, 61.268f, 61.434f, 61.625f, 61.732f, 61.735f, - 62.429f, 62.212f, 61.442f, 60.108f, 60.319f, 60.221f, 60.668f, 61.754f, 62.778f, 63.859f, - 63.799f, 62.916f, 61.684f, 60.554f, 59.219f, 58.595f, 59.796f, 58.397f, 58.560f, 59.130f, - 57.182f, 54.734f, 51.123f, 48.809f, 47.217f, 44.749f, 45.970f, 42.917f, 38.732f, 36.057f, - 36.412f, 35.010f, 31.511f, 30.042f, 26.696f, 24.420f, 21.747f, 20.043f, 17.681f, 15.364f, - 13.606f -},{ --29.534f,-28.196f,-24.868f,-21.995f,-19.324f,-18.751f,-18.807f,-18.122f,-17.146f,-15.815f, --15.957f,-13.318f, -8.767f, -5.449f, -6.473f, -1.991f, -1.016f, -2.090f, -1.018f, 0.565f, - 1.501f, 2.463f, 5.294f, 7.551f, 9.015f, 11.281f, 13.728f, 16.682f, 19.037f, 21.658f, - 23.094f, 23.790f, 24.028f, 22.981f, 20.646f, 6.682f, 13.599f, 15.558f, 14.870f, 12.874f, - 11.171f, 9.400f, 9.978f, 9.086f, 8.890f, 8.617f, 8.433f, 8.370f, 7.999f, 7.964f, - 8.072f, 8.174f, 7.993f, 7.349f, 7.353f, 6.292f, 6.233f, 5.839f, 5.552f, 5.386f, - 4.053f, 2.173f, 0.626f, -1.361f, -3.114f, -4.598f, -5.681f, -6.211f, -6.356f, -5.586f, - -5.751f, -5.694f, -6.158f, -6.800f, -6.935f, -7.148f, -7.243f, -8.395f, -8.669f, -8.747f, - -8.932f, -8.627f, -8.059f, -7.481f, -6.490f, -4.784f, -3.461f, -2.782f, -2.458f, 3.586f, - 4.282f, 6.159f, 7.473f, 7.578f, 7.820f, 7.942f, 7.872f, 7.059f, 5.860f, 4.772f, - 4.600f, 4.462f, 5.549f, 6.595f, 7.966f, 10.289f, 12.627f, 14.667f, 16.186f, 16.951f, - 17.920f, 17.734f, 17.120f, 16.867f, 17.992f, 19.339f, 21.550f, 23.367f, 25.558f, 28.123f, - 32.966f, 33.784f, 35.551f, 39.539f, 41.940f, 45.341f, 48.277f, 51.495f, 56.041f, 57.658f, - 59.329f, 60.741f, 61.541f, 62.257f, 62.784f, 63.099f, 63.087f, 62.896f, 63.386f, 63.782f, - 63.052f, 63.343f, 61.960f, 60.303f, 60.739f, 60.473f, 60.719f, 61.349f, 62.698f, 63.684f, - 64.373f, 63.958f, 62.918f, 61.867f, 60.636f, 59.422f, 60.199f, 59.220f, 59.039f, 60.417f, - 56.887f, 53.925f, 50.587f, 48.115f, 47.093f, 45.510f, 46.743f, 42.857f, 38.043f, 35.289f, - 35.719f, 34.936f, 31.220f, 30.098f, 26.691f, 24.495f, 21.784f, 20.020f, 17.742f, 15.365f, - 13.606f -},{ --29.534f,-28.189f,-24.837f,-21.944f,-19.286f,-18.553f,-18.806f,-18.329f,-17.316f,-15.617f, --15.178f,-12.106f, -8.425f, -4.527f, -6.003f, -2.077f, -1.413f, -1.885f, -0.903f, 0.747f, - 1.619f, 2.548f, 5.196f, 7.261f, 8.829f, 11.003f, 13.350f, 16.209f, 18.791f, 20.614f, - 21.765f, 23.171f, 22.820f, 22.331f, 21.148f, 4.085f, 13.107f, 15.533f, 14.533f, 13.327f, - 12.433f, 11.691f, 11.173f, 10.529f, 10.365f, 10.250f, 9.989f, 9.767f, 9.738f, 9.524f, - 9.582f, 9.661f, 9.468f, 8.929f, 9.117f, 7.948f, 7.138f, 6.600f, 5.713f, 4.973f, - 4.141f, 2.254f, 1.147f, -0.766f, -2.269f, -3.913f, -5.182f, -5.978f, -6.418f, -6.616f, - -6.681f, -6.387f, -6.755f, -7.160f, -7.187f, -7.254f, -7.173f, -7.923f, -8.066f, -8.063f, - -8.213f, -7.946f, -7.652f, -7.042f, -5.653f, -4.184f, -3.149f, -2.009f, -0.894f, 4.640f, - 6.024f, 7.128f, 8.428f, 8.424f, 8.742f, 8.773f, 9.299f, 8.658f, 7.199f, 6.768f, - 6.499f, 6.556f, 7.771f, 8.846f, 10.456f, 12.830f, 14.989f, 16.368f, 17.992f, 18.283f, - 18.637f, 17.820f, 17.375f, 17.269f, 18.703f, 20.544f, 22.625f, 24.594f, 25.797f, 27.494f, - 32.657f, 32.237f, 37.948f, 38.406f, 42.015f, 45.944f, 48.502f, 52.014f, 55.495f, 58.478f, - 59.197f, 60.604f, 61.472f, 62.382f, 63.833f, 64.766f, 65.018f, 64.984f, 65.054f, 64.714f, - 64.125f, 63.023f, 61.893f, 60.750f, 60.683f, 60.931f, 60.951f, 61.354f, 62.547f, 63.435f, - 64.306f, 64.668f, 64.002f, 63.030f, 61.847f, 60.867f, 60.641f, 59.864f, 58.873f, 61.196f, - 56.232f, 53.539f, 50.955f, 48.266f, 46.909f, 45.668f, 46.818f, 42.698f, 37.174f, 34.265f, - 34.970f, 34.552f, 30.850f, 30.063f, 26.682f, 24.582f, 21.817f, 19.999f, 17.801f, 15.367f, - 13.606f -},{ --29.534f,-28.182f,-24.822f,-21.912f,-19.223f,-18.274f,-18.682f,-18.281f,-17.221f,-15.578f, --14.911f,-11.151f, -8.329f, -4.014f, -5.319f, -1.837f, -1.543f, -1.815f, -0.901f, 1.008f, - 1.794f, 2.691f, 5.145f, 7.081f, 8.701f, 10.723f, 12.574f, 15.858f, 18.518f, 18.765f, - 17.788f, 22.404f, 22.382f, 20.494f, 16.545f, 3.092f, 13.533f, 15.841f, 15.326f, 15.281f, - 13.878f, 12.575f, 12.568f, 11.986f, 11.868f, 11.806f, 11.655f, 11.190f, 11.407f, 11.135f, - 11.211f, 11.209f, 10.938f, 10.675f, 10.394f, 9.259f, 8.555f, 7.409f, 6.681f, 5.527f, - 4.646f, 2.646f, 1.711f, 0.297f, -1.447f, -3.119f, -4.651f, -5.764f, -6.269f, -6.331f, - -6.790f, -6.928f, -7.267f, -7.584f, -7.384f, -7.275f, -6.990f, -7.415f, -7.731f, -7.772f, - -7.453f, -7.163f, -6.940f, -5.715f, -4.672f, -3.219f, -1.930f, -0.806f, 0.783f, 5.741f, - 7.598f, 8.308f, 9.163f, 9.122f, 9.599f, 9.615f, 9.989f, 10.111f, 8.734f, 8.395f, - 8.442f, 8.551f, 9.885f, 11.206f, 12.940f, 15.454f, 17.414f, 18.313f, 19.697f, 20.001f, - 19.913f, 18.741f, 18.034f, 18.295f, 19.505f, 21.126f, 23.578f, 25.686f, 26.638f, 27.954f, - 30.350f, 32.216f, 33.730f, 37.853f, 41.513f, 44.363f, 48.453f, 52.492f, 55.354f, 58.244f, - 59.515f, 60.487f, 61.460f, 62.265f, 63.715f, 64.687f, 65.709f, 66.012f, 65.604f, 65.092f, - 63.924f, 62.959f, 61.638f, 61.259f, 60.937f, 60.671f, 61.043f, 61.161f, 62.083f, 63.181f, - 64.085f, 64.842f, 64.829f, 63.803f, 63.320f, 62.647f, 61.270f, 60.220f, 59.273f, 60.677f, - 56.652f, 54.403f, 52.854f, 49.461f, 46.877f, 45.318f, 45.919f, 42.341f, 36.197f, 33.114f, - 34.184f, 33.889f, 30.405f, 29.919f, 26.679f, 24.703f, 21.848f, 19.980f, 17.857f, 15.370f, - 13.606f -},{ --29.534f,-28.174f,-24.823f,-21.891f,-19.129f,-17.972f,-18.459f,-17.921f,-16.730f,-15.570f, --14.989f,-10.645f, -8.457f, -3.479f, -4.343f, -1.495f, -1.568f, -1.961f, -0.970f, 1.088f, - 1.946f, 2.803f, 5.217f, 6.982f, 8.551f, 10.499f, 12.121f, 15.350f, 18.289f, 16.653f, - 12.902f, 19.996f, 19.528f, 16.142f, 4.718f, 8.224f, 14.756f, 16.028f, 17.691f, 16.386f, - 14.971f, 13.524f, 13.999f, 13.650f, 13.270f, 13.358f, 13.166f, 12.552f, 12.821f, 12.668f, - 12.915f, 12.662f, 12.532f, 12.177f, 11.806f, 11.077f, 9.495f, 8.400f, 7.770f, 6.348f, - 4.914f, 3.402f, 2.379f, 1.333f, -0.495f, -2.194f, -3.904f, -5.200f, -5.955f, -6.219f, - -6.690f, -7.171f, -7.372f, -7.592f, -7.405f, -7.005f, -6.602f, -7.071f, -7.206f, -7.076f, - -6.841f, -6.126f, -5.914f, -4.727f, -3.468f, -1.805f, -0.873f, 0.456f, 2.359f, 5.933f, - 8.608f, 8.974f, 9.665f, 9.929f, 10.461f, 10.809f, 10.880f, 11.537f, 10.201f, 10.211f, - 10.173f, 10.407f, 11.849f, 13.012f, 15.114f, 17.537f, 19.244f, 21.204f, 21.805f, 22.053f, - 21.416f, 20.051f, 19.068f, 19.796f, 20.471f, 21.372f, 24.263f, 26.009f, 26.818f, 28.609f, - 30.592f, 31.672f, 34.069f, 38.103f, 39.503f, 43.168f, 47.737f, 52.101f, 55.458f, 57.150f, - 58.541f, 59.806f, 60.878f, 62.320f, 63.855f, 64.758f, 65.730f, 65.986f, 65.093f, 64.486f, - 63.659f, 62.861f, 61.999f, 61.497f, 61.030f, 61.041f, 60.871f, 61.132f, 61.698f, 62.648f, - 63.681f, 64.648f, 65.107f, 64.711f, 64.505f, 63.786f, 62.245f, 60.108f, 59.755f, 59.801f, - 57.775f, 54.037f, 54.057f, 50.252f, 47.066f, 45.163f, 44.090f, 41.278f, 35.040f, 31.981f, - 33.393f, 33.092f, 29.881f, 29.669f, 26.680f, 24.868f, 21.882f, 19.967f, 17.909f, 15.375f, - 13.606f -},{ --29.534f,-28.165f,-24.838f,-21.879f,-19.003f,-17.700f,-18.173f,-17.282f,-15.870f,-15.450f, --15.082f,-10.533f, -8.476f, -2.864f, -3.373f, -1.376f, -1.449f, -2.031f, -0.916f, 1.033f, - 1.990f, 2.905f, 5.249f, 6.886f, 8.431f, 10.321f, 12.259f, 14.768f, 17.934f, 16.640f, - 10.302f, 14.587f, 15.214f, 8.242f, 5.398f, 14.917f, 17.025f, 17.431f, 17.402f, 17.108f, - 15.827f, 14.725f, 15.370f, 14.807f, 14.567f, 14.984f, 14.723f, 14.156f, 14.409f, 14.195f, - 14.421f, 14.198f, 14.025f, 13.473f, 13.283f, 12.255f, 10.678f, 9.273f, 8.775f, 7.437f, - 5.761f, 4.473f, 3.305f, 2.297f, 0.706f, -1.029f, -2.947f, -4.260f, -5.244f, -5.868f, - -6.362f, -7.021f, -6.968f, -7.121f, -6.668f, -6.225f, -6.021f, -6.371f, -6.161f, -5.991f, - -5.939f, -5.121f, -4.740f, -3.576f, -2.084f, -0.972f, 0.189f, 1.408f, 4.183f, 6.732f, - 10.096f, 9.890f, 10.445f, 10.795f, 11.611f, 12.105f, 12.412f, 12.792f, 11.667f, 11.839f, - 11.388f, 12.265f, 13.575f, 14.448f, 16.543f, 20.440f, 21.213f, 29.185f, 23.628f, 23.349f, - 22.638f, 21.077f, 20.477f, 21.085f, 21.727f, 21.990f, 24.074f, 26.011f, 26.812f, 28.522f, - 30.096f, 30.860f, 33.357f, 37.217f, 38.287f, 42.503f, 48.161f, 52.320f, 54.788f, 56.443f, - 57.636f, 59.109f, 60.387f, 62.174f, 63.635f, 64.969f, 65.928f, 65.606f, 64.617f, 64.182f, - 63.445f, 62.916f, 61.916f, 61.413f, 61.117f, 61.301f, 61.162f, 61.053f, 61.335f, 62.123f, - 63.264f, 64.173f, 65.045f, 65.390f, 64.819f, 64.343f, 63.207f, 60.535f, 59.200f, 58.973f, - 57.764f, 52.664f, 53.458f, 49.865f, 47.533f, 45.834f, 41.835f, 39.028f, 33.630f, 30.955f, - 32.679f, 32.352f, 29.275f, 29.337f, 26.679f, 25.079f, 21.923f, 19.962f, 17.956f, 15.380f, - 13.606f -},{ --29.534f,-28.156f,-24.865f,-21.870f,-18.853f,-17.496f,-17.862f,-16.471f,-14.805f,-15.136f, --14.944f,-10.647f, -8.134f, -2.414f, -2.757f, -1.414f, -0.889f, -1.678f, -0.751f, 1.107f, - 1.997f, 3.000f, 5.211f, 6.711f, 8.366f, 10.189f, 12.295f, 14.297f, 17.673f, 16.811f, - 13.338f, 9.420f, 9.604f, 8.660f, 14.807f, 18.347f, 19.165f, 19.223f, 18.332f, 17.280f, - 16.851f, 15.996f, 16.223f, 15.981f, 15.888f, 16.548f, 16.305f, 15.969f, 16.040f, 15.990f, - 15.708f, 15.673f, 15.234f, 14.868f, 14.315f, 13.675f, 11.532f, 10.756f, 9.865f, 8.402f, - 6.873f, 5.428f, 4.356f, 3.185f, 1.701f, 0.200f, -1.777f, -3.334f, -4.578f, -4.990f, - -5.648f, -6.242f, -6.097f, -6.002f, -5.513f, -5.317f, -5.131f, -5.237f, -4.943f, -4.738f, - -4.404f, -3.656f, -3.727f, -2.327f, -0.658f, 0.108f, 1.350f, 2.332f, 5.317f, 7.485f, - 10.195f, 10.279f, 10.837f, 11.398f, 12.115f, 13.276f, 13.310f, 13.928f, 13.021f, 13.221f, - 12.934f, 13.929f, 14.568f, 15.743f, 17.619f, 24.834f, 22.615f, 25.150f, 24.693f, 24.396f, - 23.430f, 22.376f, 21.842f, 22.365f, 22.980f, 23.348f, 24.585f, 25.444f, 26.781f, 28.649f, - 29.816f, 30.377f, 32.666f, 35.349f, 38.269f, 42.000f, 46.854f, 49.196f, 53.150f, 54.659f, - 56.617f, 58.047f, 59.750f, 61.605f, 63.118f, 64.413f, 65.414f, 65.160f, 63.650f, 64.026f, - 62.968f, 62.965f, 62.264f, 60.816f, 60.801f, 60.759f, 61.907f, 61.060f, 61.012f, 61.525f, - 62.736f, 63.895f, 64.795f, 65.492f, 65.224f, 65.146f, 63.817f, 61.916f, 58.915f, 58.607f, - 56.806f, 53.191f, 52.770f, 49.360f, 48.041f, 46.974f, 39.898f, 35.842f, 32.065f, 30.052f, - 32.153f, 31.818f, 28.601f, 28.971f, 26.667f, 25.327f, 21.976f, 19.965f, 17.997f, 15.386f, - 13.606f -},{ --29.534f,-28.146f,-24.904f,-21.863f,-18.690f,-17.370f,-17.555f,-15.635f,-13.757f,-14.653f, --14.548f,-10.828f, -7.510f, -2.147f, -2.364f, -1.306f, -0.056f, -0.923f, -0.615f, 1.208f, - 2.022f, 3.108f, 5.228f, 6.461f, 8.317f, 9.983f, 11.632f, 13.914f, 16.977f, 16.491f, - 18.484f, 14.749f, 14.545f, 16.166f, 18.577f, 20.445f, 20.940f, 19.398f, 18.774f, 18.041f, - 17.869f, 17.491f, 17.519f, 17.421f, 17.332f, 17.744f, 17.803f, 17.581f, 17.673f, 17.501f, - 17.107f, 16.996f, 16.425f, 15.990f, 15.540f, 14.676f, 12.772f, 11.972f, 11.057f, 9.323f, - 7.838f, 6.477f, 5.284f, 4.089f, 2.631f, 1.187f, -0.709f, -2.201f, -3.488f, -4.124f, - -4.755f, -4.913f, -4.673f, -4.193f, -4.224f, -4.227f, -4.069f, -4.048f, -3.575f, -3.271f, - -2.633f, -2.078f, -1.954f, -0.538f, 0.709f, 1.687f, 2.823f, 3.546f, 5.985f, 8.494f, - 10.181f, 10.879f, 11.235f, 11.978f, 12.993f, 14.436f, 15.237f, 15.451f, 14.984f, 14.518f, - 14.489f, 15.106f, 15.326f, 16.481f, 18.238f, 25.235f, 31.100f, 27.099f, 25.430f, 25.692f, - 24.552f, 23.320f, 23.137f, 23.389f, 23.952f, 24.736f, 25.683f, 25.873f, 27.156f, 29.227f, - 30.501f, 31.642f, 33.036f, 34.742f, 37.623f, 41.249f, 45.233f, 48.569f, 51.548f, 53.552f, - 55.695f, 57.279f, 59.365f, 61.697f, 62.567f, 63.814f, 64.066f, 64.049f, 62.780f, 63.378f, - 62.881f, 63.056f, 61.772f, 60.296f, 60.067f, 60.030f, 62.766f, 61.051f, 60.970f, 60.947f, - 62.116f, 63.291f, 64.377f, 65.152f, 65.897f, 65.723f, 64.557f, 62.938f, 59.650f, 58.779f, - 56.253f, 54.973f, 52.981f, 49.779f, 48.211f, 47.452f, 38.762f, 32.837f, 30.627f, 29.264f, - 31.888f, 31.525f, 27.901f, 28.626f, 26.634f, 25.590f, 22.044f, 19.978f, 18.032f, 15.392f, - 13.606f -},{ --29.534f,-28.136f,-24.952f,-21.855f,-18.526f,-17.312f,-17.261f,-14.908f,-12.917f,-14.120f, --14.038f,-10.952f, -6.879f, -1.799f, -1.759f, -1.022f, 0.518f, 0.013f, -0.397f, 1.206f, - 2.054f, 3.300f, 5.269f, 6.352f, 8.060f, 9.820f, 11.238f, 13.609f, 16.469f, 17.213f, - 19.620f, 18.391f, 18.277f, 18.846f, 19.759f, 21.203f, 20.578f, 19.775f, 19.397f, 18.662f, - 18.943f, 18.783f, 18.749f, 18.916f, 18.866f, 19.226f, 19.102f, 19.203f, 19.070f, 18.928f, - 18.685f, 18.152f, 17.824f, 16.749f, 16.624f, 15.844f, 13.678f, 12.948f, 11.733f, 10.246f, - 8.656f, 7.412f, 6.233f, 4.964f, 3.643f, 2.235f, 0.410f, -1.120f, -2.190f, -3.037f, - -3.488f, -3.403f, -2.612f, -2.340f, -2.855f, -2.932f, -2.740f, -2.730f, -2.186f, -1.446f, - -0.783f, -0.214f, 0.139f, 1.238f, 2.484f, 3.120f, 4.564f, 4.758f, 7.557f, 8.309f, - 10.654f, 11.935f, 11.541f, 12.955f, 14.124f, 15.391f, 15.960f, 17.424f, 16.681f, 16.124f, - 15.738f, 15.673f, 16.485f, 17.499f, 19.028f, 21.321f, 25.145f, 25.238f, 25.968f, 26.800f, - 25.555f, 23.905f, 23.775f, 24.219f, 25.095f, 26.172f, 27.288f, 27.652f, 28.337f, 30.444f, - 31.952f, 33.351f, 34.150f, 35.162f, 37.528f, 40.816f, 43.523f, 48.556f, 50.543f, 51.920f, - 54.169f, 56.437f, 58.362f, 60.799f, 62.591f, 62.830f, 63.051f, 62.228f, 62.624f, 63.140f, - 62.686f, 63.097f, 61.579f, 60.137f, 60.248f, 60.196f, 62.989f, 61.564f, 60.994f, 60.777f, - 61.004f, 62.714f, 64.034f, 64.895f, 66.313f, 66.007f, 65.173f, 63.265f, 60.598f, 59.004f, - 56.840f, 55.864f, 53.440f, 50.686f, 48.117f, 46.664f, 38.350f, 31.251f, 29.653f, 28.635f, - 31.851f, 31.394f, 27.253f, 28.353f, 26.579f, 25.843f, 22.128f, 20.001f, 18.062f, 15.399f, - 13.606f -},{ --29.534f,-28.125f,-25.006f,-21.847f,-18.373f,-17.292f,-16.975f,-14.373f,-12.370f,-13.679f, --13.579f,-10.909f, -6.425f, -1.346f, -0.948f, -0.804f, 0.875f, 0.926f, -0.011f, 1.230f, - 2.152f, 3.579f, 5.361f, 6.425f, 7.753f, 9.709f, 11.262f, 13.122f, 16.363f, 17.788f, - 20.225f, 19.713f, 19.530f, 19.641f, 20.061f, 20.263f, 20.972f, 20.117f, 19.982f, 19.590f, - 19.888f, 19.556f, 19.946f, 20.275f, 20.283f, 20.834f, 20.572f, 20.410f, 20.387f, 20.335f, - 19.602f, 19.094f, 18.834f, 17.863f, 17.600f, 16.456f, 14.662f, 13.656f, 12.546f, 11.001f, - 9.441f, 8.249f, 7.128f, 5.880f, 4.610f, 3.267f, 1.526f, 0.068f, -0.855f, -1.699f, - -2.108f, -1.870f, -1.428f, -1.156f, -1.565f, -1.557f, -1.191f, -1.118f, -0.371f, 0.540f, - 1.566f, 2.313f, 2.057f, 3.297f, 4.038f, 4.860f, 5.753f, 6.266f, 8.368f, 8.751f, - 11.591f, 12.780f, 11.669f, 13.433f, 14.951f, 17.049f, 17.254f, 17.034f, 18.666f, 18.600f, - 15.747f, 16.258f, 17.976f, 18.931f, 20.242f, 21.612f, 23.584f, 25.323f, 26.681f, 26.683f, - 25.350f, 23.981f, 23.943f, 24.912f, 26.525f, 28.063f, 29.296f, 29.630f, 29.625f, 31.596f, - 33.359f, 34.636f, 35.682f, 36.270f, 38.384f, 40.238f, 42.705f, 48.016f, 50.028f, 50.667f, - 53.536f, 56.102f, 57.464f, 59.654f, 60.887f, 61.769f, 61.468f, 62.106f, 62.563f, 62.688f, - 62.770f, 62.174f, 60.856f, 60.287f, 60.423f, 59.763f, 61.099f, 61.752f, 60.906f, 60.664f, - 60.629f, 62.002f, 63.594f, 64.563f, 66.295f, 66.509f, 65.289f, 63.553f, 61.375f, 59.378f, - 58.478f, 56.486f, 54.112f, 51.183f, 48.186f, 45.233f, 38.217f, 31.438f, 29.351f, 28.283f, - 31.910f, 31.301f, 26.764f, 28.175f, 26.504f, 26.058f, 22.226f, 20.032f, 18.084f, 15.406f, - 13.606f -},{ --29.534f,-28.114f,-25.066f,-21.839f,-18.241f,-17.272f,-16.678f,-14.034f,-12.082f,-13.402f, --13.233f,-10.646f, -6.110f, -1.166f, -0.501f, -0.728f, 1.514f, 1.694f, 0.396f, 1.217f, - 2.420f, 3.898f, 5.579f, 6.433f, 7.607f, 9.363f, 10.786f, 12.993f, 15.820f, 18.026f, - 20.839f, 20.577f, 19.806f, 19.821f, 20.526f, 20.486f, 21.032f, 20.866f, 20.419f, 20.203f, - 20.422f, 20.504f, 21.041f, 21.499f, 21.532f, 22.031f, 21.922f, 21.620f, 21.773f, 21.438f, - 20.882f, 19.990f, 19.729f, 18.836f, 18.275f, 17.087f, 15.684f, 14.493f, 13.298f, 11.733f, - 10.248f, 8.999f, 7.892f, 6.858f, 5.574f, 4.276f, 2.677f, 1.465f, 0.515f, -0.281f, - -0.627f, -0.167f, -0.182f, 0.115f, -0.064f, -0.076f, 0.370f, 0.658f, 1.521f, 2.490f, - 3.870f, 4.330f, 4.300f, 5.285f, 5.647f, 6.666f, 7.475f, 8.000f, 9.837f, 10.496f, - 12.605f, 12.554f, 12.141f, 14.657f, 15.681f, 16.841f, 18.446f, 18.485f, 18.677f, 19.779f, - 17.071f, 17.475f, 18.811f, 20.121f, 21.483f, 23.172f, 24.978f, 26.238f, 26.140f, 26.176f, - 25.261f, 23.872f, 24.037f, 25.877f, 28.108f, 30.526f, 32.061f, 31.485f, 31.414f, 32.408f, - 34.150f, 35.678f, 37.935f, 39.592f, 40.163f, 41.028f, 41.409f, 46.624f, 48.626f, 51.082f, - 51.872f, 54.055f, 56.727f, 57.687f, 59.893f, 60.760f, 60.855f, 61.910f, 62.136f, 62.344f, - 61.655f, 61.522f, 60.935f, 60.326f, 61.042f, 60.830f, 61.092f, 61.331f, 61.393f, 60.282f, - 60.658f, 61.386f, 63.098f, 63.360f, 66.727f, 66.912f, 65.564f, 63.774f, 61.869f, 59.761f, - 59.554f, 57.054f, 55.069f, 51.295f, 48.541f, 44.217f, 37.992f, 32.594f, 29.676f, 28.326f, - 31.914f, 31.170f, 26.544f, 28.088f, 26.421f, 26.214f, 22.333f, 20.071f, 18.100f, 15.413f, - 13.606f -},{ --29.534f,-28.102f,-25.127f,-21.831f,-18.138f,-17.215f,-16.355f,-13.832f,-11.937f,-13.255f, --12.951f,-10.229f, -5.792f, -1.436f, -0.709f, -0.521f, 2.332f, 2.565f, 1.018f, 1.118f, - 2.867f, 4.234f, 5.825f, 6.499f, 7.331f, 9.083f, 10.516f, 12.734f, 14.840f, 17.930f, - 21.094f, 20.934f, 19.790f, 20.026f, 20.186f, 20.818f, 21.081f, 21.392f, 21.020f, 20.990f, - 21.092f, 21.346f, 22.046f, 22.511f, 22.745f, 23.112f, 22.980f, 22.737f, 22.710f, 22.171f, - 21.838f, 20.814f, 20.454f, 19.741f, 18.966f, 17.813f, 16.416f, 15.274f, 13.994f, 12.458f, - 11.045f, 9.918f, 8.888f, 7.779f, 6.702f, 5.383f, 4.046f, 2.868f, 1.837f, 1.222f, - 0.972f, 1.361f, 1.611f, 1.952f, 1.513f, 1.448f, 2.013f, 2.352f, 3.156f, 4.323f, - 5.306f, 6.251f, 6.422f, 7.577f, 8.192f, 8.790f, 9.719f, 9.616f, 11.878f, 13.079f, - 12.859f, 12.229f, 12.792f, 14.543f, 15.713f, 17.085f, 17.774f, 18.981f, 19.216f, 18.796f, - 18.852f, 19.080f, 20.003f, 21.409f, 23.553f, 24.752f, 25.823f, 26.619f, 26.296f, 26.228f, - 25.671f, 24.735f, 24.860f, 26.875f, 30.075f, 32.979f, 34.198f, 33.704f, 33.567f, 33.706f, - 34.798f, 37.072f, 39.478f, 43.128f, 41.987f, 42.091f, 41.516f, 45.844f, 47.906f, 49.476f, - 50.885f, 52.127f, 55.149f, 58.340f, 58.045f, 59.381f, 60.815f, 61.141f, 61.507f, 61.441f, - 61.107f, 59.969f, 58.997f, 60.085f, 60.719f, 61.696f, 61.241f, 60.303f, 61.142f, 60.681f, - 60.375f, 60.804f, 62.499f, 62.976f, 67.146f, 67.182f, 65.816f, 63.806f, 62.236f, 60.002f, - 59.039f, 56.532f, 55.313f, 51.704f, 49.043f, 43.999f, 37.676f, 33.470f, 30.301f, 28.752f, - 31.791f, 31.012f, 26.667f, 28.057f, 26.344f, 26.294f, 22.441f, 20.115f, 18.109f, 15.420f, - 13.606f -},{ --29.534f,-28.090f,-25.189f,-21.825f,-18.065f,-17.095f,-16.002f,-13.675f,-11.802f,-13.131f, --12.651f, -9.831f, -5.411f, -1.644f, -0.980f, 0.184f, 2.704f, 3.989f, 2.259f, 1.327f, - 3.313f, 4.543f, 6.022f, 6.707f, 7.109f, 8.812f, 10.459f, 11.946f, 14.316f, 17.459f, - 21.035f, 20.876f, 19.482f, 19.884f, 20.199f, 21.078f, 21.514f, 21.808f, 21.650f, 21.849f, - 21.811f, 22.535f, 22.832f, 23.479f, 23.880f, 23.930f, 23.804f, 23.812f, 23.586f, 23.085f, - 22.552f, 21.734f, 21.438f, 20.631f, 19.614f, 18.151f, 17.174f, 15.901f, 14.604f, 13.255f, - 11.852f, 10.784f, 9.738f, 8.713f, 7.808f, 6.572f, 5.409f, 4.179f, 3.115f, 2.774f, - 2.578f, 3.183f, 3.415f, 3.707f, 3.315f, 3.045f, 3.530f, 4.032f, 4.679f, 5.739f, - 6.860f, 7.854f, 8.312f, 9.479f, 10.125f, 10.677f, 11.290f, 11.319f, 13.057f, 15.272f, - 14.834f, 12.260f, 13.140f, 15.442f, 16.555f, 17.383f, 18.156f, 19.444f, 19.956f, 20.941f, - 20.878f, 19.944f, 21.272f, 22.742f, 25.710f, 27.826f, 27.106f, 27.458f, 26.472f, 26.035f, - 27.676f, 28.140f, 27.131f, 28.549f, 31.167f, 32.962f, 33.727f, 34.192f, 38.058f, 39.078f, - 35.500f, 37.246f, 39.865f, 45.191f, 43.092f, 43.823f, 42.751f, 45.647f, 48.571f, 49.286f, - 51.690f, 51.802f, 54.150f, 57.715f, 58.353f, 58.540f, 60.480f, 60.298f, 60.661f, 60.294f, - 59.654f, 58.738f, 57.938f, 59.632f, 60.778f, 61.499f, 61.347f, 59.795f, 60.699f, 60.666f, - 59.862f, 60.486f, 61.703f, 63.022f, 66.196f, 67.258f, 65.467f, 63.680f, 62.347f, 60.517f, - 58.503f, 55.992f, 54.463f, 52.524f, 49.708f, 44.258f, 37.615f, 33.415f, 30.765f, 29.373f, - 31.581f, 30.904f, 27.148f, 28.034f, 26.289f, 26.293f, 22.542f, 20.162f, 18.112f, 15.427f, - 13.606f -},{ --29.534f,-28.078f,-25.248f,-21.822f,-18.022f,-16.906f,-15.631f,-13.480f,-11.592f,-12.931f, --12.299f, -9.598f, -5.035f, -1.103f, -0.451f, 1.505f, 2.660f, 5.692f, 3.910f, 2.098f, - 3.574f, 4.840f, 6.185f, 6.808f, 7.236f, 8.651f, 10.200f, 11.545f, 13.971f, 16.797f, - 20.619f, 21.264f, 19.338f, 20.348f, 20.377f, 21.492f, 21.848f, 22.488f, 22.411f, 22.630f, - 22.595f, 23.430f, 24.067f, 24.590f, 24.890f, 24.893f, 24.831f, 24.823f, 24.594f, 24.246f, - 23.287f, 22.537f, 21.977f, 20.890f, 19.710f, 18.264f, 17.522f, 16.354f, 15.126f, 13.845f, - 12.632f, 11.692f, 10.627f, 9.681f, 8.942f, 7.814f, 6.688f, 5.402f, 4.474f, 4.177f, - 4.206f, 4.839f, 4.839f, 5.018f, 4.907f, 4.624f, 4.908f, 5.457f, 6.111f, 7.100f, - 8.020f, 9.436f, 9.709f, 10.494f, 11.721f, 12.404f, 12.822f, 13.057f, 14.204f, 16.564f, - 16.515f, 14.631f, 13.664f, 16.253f, 17.113f, 17.956f, 18.815f, 20.199f, 21.273f, 23.052f, - 25.424f, 26.159f, 27.278f, 28.622f, 29.012f, 30.472f, 29.723f, 29.778f, 28.367f, 28.729f, - 31.206f, 31.615f, 32.665f, 33.299f, 33.373f, 31.238f, 30.811f, 33.272f, 45.418f, 37.064f, - 36.659f, 37.905f, 40.612f, 48.065f, 44.249f, 47.459f, 45.105f, 46.954f, 47.128f, 48.918f, - 50.562f, 51.382f, 53.639f, 56.511f, 58.497f, 58.957f, 58.985f, 59.111f, 59.799f, 58.977f, - 58.217f, 57.676f, 57.492f, 59.165f, 59.713f, 60.204f, 61.978f, 60.402f, 59.591f, 59.858f, - 59.714f, 60.074f, 61.009f, 62.232f, 65.209f, 66.703f, 65.239f, 63.422f, 61.881f, 60.835f, - 58.974f, 56.659f, 53.664f, 52.958f, 50.441f, 44.692f, 38.165f, 32.824f, 30.784f, 29.917f, - 31.395f, 30.907f, 27.922f, 27.970f, 26.271f, 26.214f, 22.626f, 20.209f, 18.109f, 15.434f, - 13.606f -},{ --29.534f,-28.065f,-25.302f,-21.823f,-18.007f,-16.657f,-15.270f,-13.202f,-11.299f,-12.633f, --11.930f, -9.529f, -4.749f, 0.145f, 0.968f, 3.110f, 2.967f, 6.715f, 5.521f, 3.278f, - 3.752f, 5.136f, 6.291f, 6.968f, 7.373f, 8.654f, 10.084f, 11.600f, 13.854f, 16.179f, - 19.687f, 20.861f, 19.435f, 20.922f, 21.080f, 21.975f, 22.359f, 22.793f, 22.910f, 23.453f, - 23.498f, 24.084f, 24.865f, 25.714f, 25.705f, 25.890f, 25.688f, 25.358f, 25.136f, 24.502f, - 23.883f, 23.257f, 21.896f, 20.657f, 19.518f, 18.617f, 17.687f, 16.577f, 15.733f, 14.439f, - 13.376f, 12.420f, 11.579f, 10.837f, 9.986f, 9.059f, 7.994f, 6.730f, 6.070f, 5.590f, - 5.627f, 6.030f, 6.132f, 6.251f, 6.187f, 5.987f, 6.263f, 6.836f, 7.388f, 8.410f, - 9.223f, 10.492f, 10.850f, 12.112f, 12.870f, 13.915f, 14.456f, 14.709f, 15.349f, 18.233f, - 18.261f, 16.228f, 14.394f, 16.753f, 17.970f, 18.892f, 19.799f, 21.024f, 22.698f, 25.141f, - 28.759f, 28.193f, 28.217f, 29.796f, 30.199f, 29.379f, 30.052f, 31.613f, 32.799f, 33.071f, - 32.595f, 34.733f, 35.952f, 35.634f, 34.747f, 33.608f, 31.244f, 31.773f, 44.216f, 36.692f, - 38.927f, 38.674f, 40.152f, 45.124f, 45.854f, 48.104f, 47.277f, 47.169f, 48.163f, 48.385f, - 49.433f, 51.086f, 52.735f, 55.561f, 55.745f, 58.817f, 58.577f, 58.102f, 58.432f, 58.023f, - 57.512f, 57.073f, 58.028f, 58.641f, 58.983f, 58.459f, 61.588f, 59.584f, 59.527f, 58.898f, - 59.741f, 59.725f, 60.534f, 61.279f, 64.681f, 66.280f, 65.252f, 63.186f, 61.392f, 60.478f, - 59.433f, 57.349f, 53.767f, 52.380f, 50.719f, 45.317f, 39.329f, 32.679f, 30.528f, 30.227f, - 31.317f, 31.006f, 28.864f, 27.839f, 26.299f, 26.068f, 22.685f, 20.252f, 18.100f, 15.441f, - 13.606f -},{ --29.534f,-28.053f,-25.350f,-21.829f,-18.014f,-16.377f,-14.954f,-12.854f,-10.978f,-12.305f, --11.605f, -9.488f, -4.538f, 1.304f, 2.552f, 4.426f, 3.970f, 6.838f, 6.983f, 4.809f, - 4.100f, 5.307f, 6.333f, 7.157f, 7.517f, 8.647f, 10.051f, 11.241f, 13.521f, 15.896f, - 19.164f, 21.320f, 19.371f, 21.067f, 21.330f, 22.332f, 22.652f, 23.290f, 23.554f, 24.257f, - 24.636f, 24.871f, 25.578f, 26.420f, 26.628f, 26.328f, 25.456f, 25.179f, 24.892f, 24.389f, - 23.865f, 23.093f, 21.902f, 20.738f, 19.550f, 18.684f, 18.129f, 17.284f, 16.215f, 15.028f, - 14.181f, 13.186f, 12.431f, 11.817f, 11.085f, 10.257f, 9.268f, 8.105f, 7.569f, 7.088f, - 6.886f, 7.128f, 7.192f, 7.417f, 7.314f, 7.265f, 7.767f, 8.667f, 8.680f, 9.759f, - 10.473f, 11.764f, 12.114f, 12.854f, 13.981f, 15.013f, 15.841f, 16.153f, 17.002f, 17.821f, - 18.763f, 16.660f, 14.846f, 17.530f, 19.002f, 19.893f, 20.810f, 21.848f, 23.988f, 28.611f, - 30.376f, 28.830f, 29.243f, 30.966f, 30.491f, 30.921f, 31.536f, 32.165f, 32.356f, 33.895f, - 33.633f, 35.801f, 35.765f, 37.562f, 37.243f, 33.970f, 33.609f, 31.707f, 40.889f, 36.019f, - 39.500f, 41.097f, 40.479f, 42.653f, 45.228f, 46.412f, 48.779f, 50.747f, 48.519f, 49.050f, - 48.392f, 49.629f, 51.132f, 53.139f, 54.662f, 57.225f, 56.714f, 57.026f, 57.263f, 56.926f, - 56.608f, 58.999f, 60.508f, 60.171f, 58.015f, 57.566f, 60.127f, 60.360f, 59.984f, 58.811f, - 59.927f, 59.590f, 60.126f, 60.621f, 64.009f, 65.880f, 64.406f, 62.836f, 60.854f, 60.054f, - 59.323f, 57.319f, 54.251f, 51.273f, 50.195f, 46.125f, 40.665f, 33.675f, 30.568f, 30.356f, - 31.348f, 31.124f, 29.823f, 27.652f, 26.378f, 25.873f, 22.713f, 20.291f, 18.086f, 15.447f, - 13.606f -},{ --29.534f,-28.040f,-25.389f,-21.840f,-18.036f,-16.102f,-14.713f,-12.492f,-10.708f,-12.043f, --11.356f, -9.344f, -4.316f, 1.754f, 3.710f, 5.269f, 5.178f, 6.900f, 7.892f, 6.582f, - 4.724f, 5.445f, 6.336f, 7.137f, 7.672f, 8.713f, 9.962f, 10.966f, 13.052f, 15.920f, - 18.417f, 20.643f, 18.639f, 21.151f, 21.741f, 22.453f, 23.144f, 23.881f, 24.294f, 24.828f, - 25.468f, 25.819f, 26.217f, 27.401f, 27.008f, 26.211f, 25.579f, 25.272f, 24.939f, 24.415f, - 23.667f, 22.865f, 21.864f, 20.546f, 19.280f, 18.398f, 17.873f, 17.383f, 16.427f, 15.801f, - 15.021f, 13.818f, 13.331f, 13.033f, 12.291f, 11.541f, 10.964f, 9.528f, 9.108f, 8.394f, - 8.246f, 8.159f, 8.233f, 8.706f, 8.385f, 8.701f, 8.830f, 9.311f, 9.632f, 10.661f, - 11.995f, 13.258f, 14.334f, 14.096f, 15.158f, 16.146f, 17.024f, 17.603f, 18.239f, 18.509f, - 19.316f, 17.207f, 15.959f, 18.058f, 19.347f, 20.253f, 21.666f, 23.057f, 30.599f, 32.346f, - 31.335f, 31.051f, 30.187f, 30.740f, 31.241f, 31.997f, 33.221f, 33.849f, 34.679f, 35.095f, - 33.649f, 35.292f, 35.589f, 37.154f, 39.815f, 37.128f, 35.979f, 36.074f, 41.228f, 42.236f, - 40.616f, 44.012f, 41.659f, 41.054f, 43.224f, 45.747f, 45.761f, 52.187f, 50.144f, 50.421f, - 47.031f, 48.571f, 50.530f, 50.804f, 55.243f, 55.462f, 55.001f, 56.074f, 56.382f, 55.786f, - 56.070f, 60.145f, 60.964f, 61.495f, 58.021f, 57.153f, 57.624f, 59.600f, 59.558f, 58.248f, - 59.581f, 59.457f, 60.326f, 60.914f, 63.172f, 64.338f, 63.308f, 61.989f, 59.959f, 59.606f, - 58.949f, 57.373f, 54.290f, 50.566f, 49.281f, 46.823f, 41.645f, 35.670f, 31.400f, 30.499f, - 31.426f, 31.193f, 30.661f, 27.448f, 26.502f, 25.646f, 22.708f, 20.321f, 18.068f, 15.453f, - 13.606f -},{ --29.534f,-28.027f,-25.419f,-21.856f,-18.067f,-15.869f,-14.558f,-12.187f,-10.538f,-11.898f, --11.156f, -9.077f, -4.064f, 1.685f, 4.525f, 6.143f, 6.078f, 7.348f, 7.943f, 8.267f, - 5.565f, 5.810f, 6.294f, 7.182f, 7.709f, 8.595f, 9.770f, 11.079f, 12.982f, 15.861f, - 18.100f, 20.396f, 19.002f, 21.326f, 21.830f, 22.841f, 23.421f, 24.394f, 24.759f, 25.337f, - 26.015f, 26.551f, 27.122f, 27.620f, 26.870f, 26.068f, 25.747f, 25.161f, 24.778f, 24.258f, - 23.223f, 22.691f, 21.642f, 20.583f, 18.925f, 17.886f, 17.331f, 16.718f, 16.226f, 15.904f, - 15.257f, 14.543f, 14.135f, 13.594f, 12.957f, 12.334f, 11.756f, 11.039f, 10.458f, 9.857f, - 9.820f, 9.747f, 9.529f, 9.240f, 9.159f, 9.539f, 9.333f, 9.458f, 9.865f, 11.874f, - 13.254f, 14.218f, 15.076f, 15.097f, 16.454f, 17.465f, 18.290f, 18.768f, 19.561f, 19.479f, - 19.476f, 17.236f, 17.973f, 19.331f, 20.318f, 21.272f, 22.756f, 26.736f, 32.665f, 32.068f, - 32.780f, 32.285f, 30.297f, 31.018f, 32.188f, 33.193f, 31.784f, 30.446f, 30.850f, 32.112f, - 33.617f, 35.455f, 36.827f, 38.961f, 39.193f, 39.455f, 38.815f, 38.258f, 39.493f, 42.125f, - 44.465f, 44.226f, 42.922f, 42.261f, 41.925f, 47.748f, 46.101f, 48.142f, 48.123f, 50.916f, - 45.930f, 48.003f, 50.154f, 51.824f, 53.070f, 56.170f, 54.190f, 55.219f, 54.695f, 56.474f, - 57.154f, 58.363f, 60.239f, 60.425f, 58.500f, 56.336f, 56.572f, 56.516f, 57.092f, 56.389f, - 58.468f, 59.579f, 60.434f, 61.582f, 62.669f, 63.069f, 62.915f, 60.339f, 59.364f, 58.906f, - 58.517f, 57.582f, 53.843f, 50.459f, 48.634f, 47.057f, 42.162f, 37.859f, 32.949f, 30.811f, - 31.501f, 31.229f, 31.283f, 27.292f, 26.656f, 25.407f, 22.672f, 20.342f, 18.045f, 15.458f, - 13.606f -},{ --29.534f,-28.014f,-25.438f,-21.876f,-18.100f,-15.706f,-14.480f,-11.996f,-10.469f,-11.839f, --10.935f, -8.753f, -3.873f, 1.658f, 5.288f, 7.563f, 6.695f, 7.659f, 8.172f, 9.786f, - 6.569f, 6.289f, 6.294f, 7.190f, 7.825f, 8.562f, 9.763f, 10.820f, 12.894f, 15.459f, - 17.609f, 19.951f, 19.083f, 21.599f, 22.018f, 23.191f, 23.914f, 24.848f, 25.153f, 25.880f, - 26.281f, 26.937f, 27.724f, 27.264f, 26.475f, 25.974f, 25.504f, 24.776f, 24.454f, 24.026f, - 23.233f, 22.609f, 21.358f, 20.312f, 18.499f, 17.537f, 16.761f, 16.180f, 15.962f, 15.357f, - 15.088f, 14.485f, 14.243f, 13.676f, 13.179f, 12.572f, 12.085f, 12.067f, 11.414f, 11.681f, - 11.568f, 11.159f, 10.247f, 10.134f, 9.578f, 9.726f, 9.592f, 9.758f, 10.264f, 11.444f, - 12.834f, 13.954f, 15.100f, 15.771f, 17.464f, 18.239f, 19.065f, 19.707f, 19.983f, 19.721f, - 19.001f, 17.587f, 20.126f, 20.293f, 21.045f, 22.563f, 24.505f, 31.245f, 30.264f, 29.829f, - 32.141f, 35.299f, 33.011f, 30.707f, 30.377f, 29.307f, 27.665f, 27.350f, 29.518f, 31.305f, - 32.959f, 35.160f, 36.896f, 38.115f, 38.410f, 39.508f, 39.081f, 39.099f, 39.458f, 40.986f, - 42.043f, 44.135f, 43.123f, 42.467f, 41.245f, 47.396f, 46.962f, 45.799f, 45.075f, 48.614f, - 45.837f, 48.103f, 50.978f, 55.259f, 49.869f, 53.879f, 52.202f, 52.579f, 54.366f, 57.675f, - 57.471f, 58.554f, 59.760f, 60.584f, 58.751f, 56.252f, 55.242f, 55.440f, 55.790f, 55.703f, - 57.691f, 59.157f, 60.176f, 61.560f, 62.383f, 62.496f, 61.853f, 58.504f, 58.763f, 58.320f, - 57.925f, 57.299f, 53.460f, 50.533f, 48.413f, 46.784f, 42.595f, 39.434f, 34.568f, 31.315f, - 31.607f, 31.341f, 31.638f, 27.243f, 26.819f, 25.172f, 22.612f, 20.353f, 18.018f, 15.462f, - 13.606f -},{ --29.534f,-28.001f,-25.445f,-21.900f,-18.131f,-15.631f,-14.451f,-11.935f,-10.455f,-11.777f, --10.637f, -8.410f, -3.818f, 1.828f, 5.935f, 9.198f, 7.253f, 7.581f, 9.403f, 10.939f, - 7.717f, 6.738f, 6.457f, 7.042f, 7.913f, 8.677f, 9.747f, 10.614f, 13.201f, 15.189f, - 17.173f, 19.922f, 19.325f, 21.888f, 22.549f, 23.915f, 24.567f, 25.463f, 25.672f, 26.282f, - 26.743f, 27.389f, 28.076f, 27.146f, 26.622f, 25.856f, 24.904f, 24.416f, 24.258f, 23.686f, - 23.214f, 22.236f, 21.176f, 19.527f, 18.012f, 17.235f, 16.420f, 15.802f, 15.660f, 15.326f, - 14.982f, 14.613f, 14.235f, 14.065f, 13.522f, 12.980f, 12.578f, 12.462f, 12.174f, 12.382f, - 12.038f, 11.456f, 10.884f, 10.590f, 10.450f, 10.401f, 10.189f, 10.022f, 10.342f, 11.324f, - 12.758f, 13.758f, 15.221f, 16.049f, 17.934f, 18.416f, 18.986f, 19.240f, 19.876f, 20.004f, - 19.126f, 18.726f, 19.963f, 20.662f, 21.547f, 23.264f, 28.050f, 30.881f, 32.219f, 32.683f, - 33.081f, 33.569f, 33.382f, 31.330f, 30.695f, 29.658f, 27.857f, 26.637f, 28.628f, 30.734f, - 31.860f, 32.981f, 35.458f, 36.254f, 38.007f, 38.726f, 40.152f, 39.396f, 39.137f, 41.404f, - 39.657f, 42.935f, 43.550f, 40.777f, 40.098f, 44.058f, 43.760f, 50.640f, 44.342f, 49.395f, - 45.815f, 47.912f, 52.036f, 52.968f, 47.417f, 52.998f, 49.996f, 50.165f, 53.143f, 58.253f, - 59.089f, 59.554f, 59.412f, 59.949f, 59.358f, 56.139f, 55.780f, 55.871f, 55.638f, 55.446f, - 56.596f, 58.759f, 59.913f, 61.037f, 61.443f, 61.378f, 59.850f, 57.679f, 57.650f, 57.719f, - 56.832f, 56.598f, 53.406f, 50.555f, 48.366f, 46.289f, 43.304f, 40.170f, 35.616f, 31.977f, - 31.853f, 31.647f, 31.707f, 27.341f, 26.967f, 24.955f, 22.535f, 20.353f, 17.989f, 15.466f, - 13.606f -},{ --29.534f,-27.988f,-25.441f,-21.927f,-18.156f,-15.641f,-14.432f,-11.976f,-10.436f,-11.631f, --10.258f, -8.023f, -3.812f, 1.899f, 6.244f, 10.204f, 7.829f, 7.797f, 10.339f, 11.149f, - 8.781f, 7.228f, 6.741f, 7.181f, 8.023f, 8.843f, 9.678f, 11.071f, 13.269f, 14.926f, - 16.702f, 19.664f, 19.318f, 22.584f, 23.014f, 24.449f, 25.286f, 26.068f, 26.323f, 26.466f, - 26.901f, 27.588f, 28.095f, 27.252f, 26.094f, 25.658f, 24.697f, 23.948f, 23.826f, 23.441f, - 23.167f, 22.198f, 21.011f, 19.466f, 18.061f, 16.865f, 16.104f, 15.660f, 15.551f, 15.233f, - 14.860f, 14.794f, 14.367f, 14.313f, 13.727f, 13.302f, 12.826f, 12.558f, 12.290f, 12.477f, - 12.176f, 12.143f, 11.598f, 10.996f, 10.890f, 10.975f, 10.596f, 10.397f, 10.510f, 11.163f, - 12.658f, 13.795f, 15.017f, 16.405f, 17.395f, 18.339f, 18.737f, 19.159f, 19.729f, 19.993f, - 19.457f, 19.474f, 19.558f, 20.438f, 22.389f, 26.902f, 30.043f, 31.342f, 33.879f, 34.067f, - 32.657f, 32.030f, 33.016f, 32.345f, 31.291f, 30.109f, 28.525f, 27.671f, 28.298f, 29.617f, - 30.315f, 31.549f, 33.103f, 34.657f, 36.367f, 37.939f, 39.918f, 39.872f, 38.996f, 42.223f, - 43.405f, 46.000f, 45.571f, 39.407f, 37.413f, 43.020f, 43.175f, 48.848f, 49.007f, 53.380f, - 48.540f, 49.108f, 52.578f, 53.558f, 47.332f, 51.037f, 49.060f, 49.863f, 52.129f, 57.635f, - 58.389f, 59.033f, 58.362f, 58.548f, 58.750f, 57.907f, 56.814f, 55.808f, 55.691f, 56.206f, - 55.457f, 58.202f, 59.395f, 60.167f, 59.940f, 59.593f, 58.435f, 57.274f, 56.638f, 56.787f, - 55.741f, 56.082f, 53.410f, 50.579f, 48.271f, 45.894f, 44.143f, 40.466f, 36.056f, 32.826f, - 32.334f, 32.155f, 31.496f, 27.587f, 27.081f, 24.770f, 22.455f, 20.342f, 17.957f, 15.469f, - 13.606f -},{ --29.534f,-27.976f,-25.426f,-21.955f,-18.172f,-15.719f,-14.392f,-12.066f,-10.377f,-11.386f, - -9.851f, -7.577f, -3.676f, 1.715f, 6.306f, 10.395f, 8.504f, 9.016f, 10.067f, 10.742f, - 9.504f, 7.641f, 7.196f, 7.620f, 8.286f, 9.093f, 9.782f, 11.519f, 12.844f, 14.696f, - 16.458f, 19.287f, 20.265f, 23.093f, 23.518f, 25.086f, 25.487f, 26.372f, 26.989f, 26.809f, - 27.225f, 27.415f, 27.213f, 27.013f, 25.338f, 25.344f, 24.525f, 23.509f, 23.720f, 22.992f, - 22.270f, 21.772f, 20.854f, 19.314f, 17.940f, 16.856f, 16.064f, 15.567f, 15.416f, 15.087f, - 15.009f, 14.877f, 14.624f, 14.587f, 13.970f, 13.535f, 12.963f, 12.622f, 12.527f, 12.642f, - 12.374f, 12.420f, 12.261f, 11.616f, 11.309f, 11.505f, 11.324f, 10.796f, 11.055f, 11.450f, - 12.984f, 13.968f, 14.882f, 16.388f, 17.018f, 18.187f, 18.560f, 18.969f, 19.487f, 19.891f, - 19.540f, 19.937f, 18.622f, 21.106f, 24.295f, 30.284f, 30.753f, 32.063f, 34.905f, 34.937f, - 32.379f, 31.576f, 32.078f, 32.508f, 31.220f, 29.775f, 28.598f, 27.603f, 28.037f, 28.494f, - 28.811f, 30.011f, 31.854f, 32.602f, 33.976f, 35.906f, 37.278f, 38.499f, 38.945f, 42.086f, - 47.290f, 51.050f, 48.298f, 45.962f, 37.994f, 41.038f, 44.757f, 51.849f, 52.736f, 54.109f, - 54.009f, 54.540f, 55.626f, 55.319f, 51.317f, 47.793f, 48.116f, 50.142f, 52.391f, 55.954f, - 57.563f, 57.783f, 57.754f, 57.535f, 58.241f, 58.392f, 57.779f, 57.689f, 58.153f, 55.312f, - 55.575f, 58.142f, 59.318f, 59.534f, 58.487f, 57.650f, 57.548f, 56.376f, 55.690f, 55.596f, - 55.297f, 55.880f, 53.222f, 50.635f, 48.051f, 45.720f, 44.614f, 40.877f, 36.433f, 33.936f, - 33.031f, 32.700f, 31.036f, 27.941f, 27.150f, 24.624f, 22.383f, 20.324f, 17.923f, 15.471f, - 13.606f -},{ --29.534f,-27.963f,-25.399f,-21.982f,-18.178f,-15.836f,-14.315f,-12.143f,-10.284f,-11.097f, - -9.484f, -7.128f, -3.363f, 1.523f, 6.426f, 10.458f, 9.521f, 11.107f, 10.313f, 10.790f, - 10.004f, 8.132f, 7.738f, 8.102f, 8.660f, 9.287f, 10.144f, 11.621f, 13.005f, 14.648f, - 16.228f, 18.780f, 21.086f, 24.108f, 24.314f, 25.263f, 25.628f, 26.532f, 27.312f, 27.286f, - 27.270f, 26.559f, 26.642f, 26.623f, 24.732f, 25.260f, 24.117f, 23.382f, 23.353f, 22.887f, - 22.154f, 21.828f, 20.241f, 19.254f, 17.726f, 16.610f, 16.126f, 15.713f, 15.336f, 15.157f, - 15.256f, 15.067f, 15.027f, 14.938f, 14.430f, 13.736f, 13.242f, 12.716f, 12.631f, 12.819f, - 12.620f, 12.379f, 12.728f, 12.280f, 11.842f, 12.003f, 12.003f, 11.639f, 11.727f, 12.095f, - 13.062f, 14.254f, 14.687f, 15.940f, 16.263f, 17.780f, 18.277f, 18.813f, 19.166f, 19.564f, - 19.331f, 19.677f, 18.360f, 20.500f, 25.177f, 29.610f, 30.580f, 31.274f, 33.646f, 33.553f, - 31.810f, 30.824f, 30.570f, 30.759f, 30.115f, 29.084f, 27.929f, 27.588f, 27.610f, 27.559f, - 27.271f, 28.666f, 30.468f, 30.988f, 32.595f, 33.805f, 34.847f, 38.009f, 37.753f, 39.907f, - 49.234f, 53.102f, 49.358f, 48.280f, 43.148f, 40.652f, 45.405f, 51.801f, 54.779f, 54.919f, - 55.882f, 55.951f, 56.313f, 56.552f, 50.813f, 46.464f, 47.452f, 48.695f, 53.423f, 54.983f, - 56.090f, 56.137f, 56.475f, 56.868f, 57.519f, 57.588f, 58.138f, 58.110f, 57.328f, 55.394f, - 55.616f, 56.954f, 58.283f, 58.715f, 57.285f, 56.716f, 56.051f, 55.497f, 54.711f, 54.056f, - 54.392f, 55.402f, 52.937f, 50.680f, 47.785f, 45.699f, 44.469f, 41.566f, 37.259f, 35.256f, - 33.777f, 33.010f, 30.396f, 28.337f, 27.174f, 24.525f, 22.330f, 20.298f, 17.888f, 15.472f, - 13.606f -},{ --29.534f,-27.951f,-25.361f,-22.007f,-18.175f,-15.957f,-14.208f,-12.173f,-10.196f,-10.834f, - -9.176f, -6.753f, -3.025f, 1.611f, 6.662f, 10.861f, 10.996f, 13.260f, 12.214f, 11.062f, - 10.351f, 8.975f, 8.008f, 8.449f, 9.137f, 9.729f, 10.588f, 11.575f, 13.139f, 14.464f, - 15.714f, 18.258f, 21.129f, 24.192f, 24.902f, 25.685f, 26.229f, 26.944f, 27.390f, 27.584f, - 27.181f, 26.419f, 26.157f, 25.335f, 24.572f, 24.938f, 23.818f, 22.840f, 23.119f, 22.374f, - 21.878f, 20.407f, 20.047f, 18.621f, 17.216f, 16.656f, 16.162f, 15.908f, 15.400f, 15.470f, - 15.542f, 15.399f, 15.425f, 15.414f, 15.027f, 14.219f, 13.643f, 13.074f, 12.848f, 13.085f, - 12.950f, 12.445f, 12.692f, 12.683f, 12.716f, 12.393f, 12.596f, 12.309f, 12.185f, 12.525f, - 13.084f, 14.177f, 14.816f, 15.426f, 15.868f, 17.529f, 18.201f, 18.568f, 18.815f, 19.238f, - 19.426f, 19.142f, 18.284f, 20.063f, 23.947f, 28.746f, 29.246f, 30.458f, 30.900f, 30.506f, - 29.736f, 28.872f, 29.113f, 29.065f, 29.236f, 28.343f, 27.911f, 27.795f, 27.307f, 26.839f, - 26.799f, 27.801f, 28.915f, 29.442f, 30.554f, 31.560f, 33.029f, 35.005f, 36.454f, 40.048f, - 47.999f, 53.869f, 50.408f, 50.596f, 45.137f, 40.030f, 41.645f, 50.500f, 55.377f, 55.081f, - 55.093f, 55.873f, 57.102f, 56.227f, 48.652f, 45.555f, 47.336f, 48.037f, 53.577f, 53.880f, - 54.917f, 54.802f, 55.733f, 55.878f, 56.889f, 57.227f, 57.118f, 57.029f, 57.129f, 56.501f, - 55.417f, 56.582f, 57.260f, 57.102f, 55.464f, 55.868f, 54.348f, 54.278f, 53.771f, 52.483f, - 52.474f, 54.457f, 52.727f, 50.632f, 47.673f, 45.686f, 43.961f, 42.189f, 38.452f, 36.485f, - 34.336f, 32.862f, 29.699f, 28.698f, 27.168f, 24.476f, 22.303f, 20.269f, 17.852f, 15.473f, - 13.606f -},{ --29.534f,-27.940f,-25.313f,-22.028f,-18.166f,-16.047f,-14.101f,-12.154f,-10.163f,-10.632f, - -8.878f, -6.432f, -2.803f, 1.938f, 6.824f, 11.194f, 12.547f, 14.573f, 13.951f, 10.757f, - 10.454f, 9.537f, 8.267f, 8.700f, 9.497f, 10.219f, 10.781f, 11.549f, 12.816f, 13.989f, - 15.532f, 18.040f, 21.301f, 24.363f, 25.535f, 26.142f, 26.901f, 27.393f, 27.968f, 27.873f, - 26.891f, 25.727f, 25.262f, 24.845f, 24.074f, 24.831f, 23.330f, 22.504f, 22.336f, 22.295f, - 21.853f, 19.819f, 19.437f, 18.447f, 17.165f, 16.669f, 16.457f, 16.418f, 15.901f, 15.990f, - 15.950f, 15.971f, 16.049f, 15.872f, 15.677f, 14.815f, 13.993f, 13.602f, 13.301f, 13.223f, - 13.141f, 12.682f, 12.698f, 12.762f, 13.895f, 12.758f, 13.111f, 14.263f, 11.866f, 12.626f, - 13.359f, 13.954f, 14.626f, 15.141f, 15.922f, 17.064f, 17.996f, 18.214f, 18.227f, 18.769f, - 19.466f, 18.663f, 18.188f, 19.537f, 23.079f, 27.015f, 29.004f, 29.951f, 30.078f, 29.079f, - 28.368f, 28.745f, 28.829f, 28.481f, 28.554f, 28.009f, 27.766f, 27.831f, 26.863f, 26.276f, - 26.719f, 27.281f, 27.294f, 27.886f, 30.195f, 30.530f, 31.677f, 33.336f, 35.968f, 40.253f, - 47.269f, 52.336f, 55.495f, 52.161f, 45.669f, 40.116f, 41.669f, 47.313f, 54.971f, 54.292f, - 54.816f, 56.167f, 56.810f, 56.099f, 47.762f, 44.927f, 46.670f, 48.238f, 52.400f, 52.801f, - 53.820f, 54.465f, 54.518f, 55.760f, 56.262f, 55.766f, 55.809f, 55.603f, 55.866f, 55.893f, - 55.372f, 55.350f, 56.109f, 55.515f, 53.497f, 54.303f, 53.632f, 52.719f, 52.324f, 51.546f, - 51.265f, 53.747f, 52.593f, 50.398f, 47.744f, 45.581f, 43.461f, 42.295f, 39.420f, 37.183f, - 34.533f, 32.247f, 29.111f, 28.961f, 27.153f, 24.480f, 22.307f, 20.238f, 17.817f, 15.472f, - 13.606f -},{ --29.534f,-27.928f,-25.257f,-22.044f,-18.154f,-16.080f,-14.031f,-12.119f,-10.211f,-10.467f, - -8.520f, -6.036f, -2.595f, 2.265f, 6.854f, 11.013f, 13.524f, 14.594f, 14.044f, 10.477f, - 10.546f, 9.311f, 8.946f, 9.174f, 9.873f, 10.515f, 11.001f, 11.605f, 12.781f, 13.863f, - 15.467f, 18.000f, 21.236f, 24.577f, 25.184f, 26.506f, 27.051f, 27.802f, 27.889f, 27.379f, - 26.587f, 25.449f, 24.635f, 24.287f, 23.468f, 24.268f, 23.231f, 22.220f, 21.973f, 20.431f, - 19.967f, 19.016f, 18.700f, 18.007f, 17.496f, 17.829f, 16.779f, 17.246f, 16.870f, 16.630f, - 16.651f, 16.566f, 16.708f, 16.551f, 16.338f, 15.639f, 14.694f, 14.203f, 13.775f, 13.594f, - 13.478f, 12.835f, 12.769f, 13.048f, 13.050f, 13.045f, 13.288f, 13.373f, 12.962f, 12.712f, - 13.381f, 14.086f, 15.010f, 15.376f, 15.591f, 16.836f, 17.802f, 17.811f, 17.727f, 18.252f, - 18.851f, 18.444f, 19.283f, 19.079f, 22.399f, 25.615f, 27.363f, 28.189f, 28.789f, 28.367f, - 27.905f, 29.157f, 28.605f, 27.885f, 28.207f, 28.333f, 28.090f, 27.467f, 26.833f, 25.929f, - 26.909f, 27.385f, 26.130f, 25.918f, 28.534f, 30.376f, 31.556f, 33.261f, 36.021f, 40.426f, - 46.259f, 49.718f, 53.836f, 54.610f, 47.548f, 43.626f, 42.412f, 47.245f, 52.206f, 54.330f, - 54.471f, 54.537f, 54.489f, 55.206f, 49.560f, 44.856f, 46.214f, 50.297f, 51.463f, 51.730f, - 52.943f, 53.962f, 54.035f, 54.585f, 55.260f, 55.094f, 55.036f, 54.925f, 55.201f, 54.540f, - 54.208f, 53.215f, 54.483f, 53.572f, 52.335f, 53.278f, 52.998f, 52.028f, 51.032f, 51.089f, - 51.329f, 53.474f, 52.424f, 50.058f, 47.734f, 45.418f, 43.036f, 41.825f, 39.673f, 37.096f, - 34.365f, 31.408f, 28.793f, 29.090f, 27.152f, 24.531f, 22.340f, 20.208f, 17.782f, 15.471f, - 13.606f -},{ --29.534f,-27.917f,-25.194f,-22.052f,-18.141f,-16.045f,-14.028f,-12.115f,-10.332f,-10.284f, - -8.083f, -5.487f, -2.173f, 2.467f, 6.901f, 10.695f, 13.676f, 13.673f, 13.489f, 10.738f, - 10.508f, 8.912f, 9.663f, 9.826f, 10.348f, 10.839f, 11.120f, 11.655f, 12.731f, 14.062f, - 15.206f, 17.998f, 20.741f, 24.186f, 25.490f, 26.650f, 27.370f, 28.226f, 27.597f, 27.037f, - 26.408f, 25.093f, 24.333f, 24.141f, 23.238f, 23.646f, 22.309f, 21.198f, 21.411f, 20.129f, - 18.942f, 18.585f, 17.316f, 17.713f, 17.530f, 17.386f, 17.840f, 17.350f, 18.276f, 17.562f, - 17.498f, 17.530f, 17.295f, 17.432f, 17.095f, 16.458f, 15.611f, 15.015f, 14.446f, 14.171f, - 13.981f, 13.354f, 13.052f, 13.017f, 13.144f, 13.434f, 13.030f, 13.289f, 12.728f, 12.691f, - 13.365f, 14.059f, 14.996f, 15.891f, 15.900f, 16.583f, 17.722f, 17.607f, 17.593f, 17.821f, - 18.106f, 18.063f, 19.028f, 18.142f, 20.507f, 24.238f, 27.220f, 27.701f, 27.328f, 27.005f, - 27.018f, 27.628f, 27.856f, 28.115f, 29.075f, 29.100f, 28.526f, 28.130f, 27.013f, 26.444f, - 27.031f, 27.390f, 25.485f, 25.230f, 27.249f, 29.373f, 31.322f, 32.977f, 35.790f, 40.126f, - 43.658f, 47.860f, 51.136f, 52.410f, 51.533f, 48.364f, 45.523f, 48.400f, 50.838f, 54.138f, - 52.391f, 53.721f, 53.621f, 53.615f, 46.230f, 44.392f, 48.421f, 49.724f, 50.653f, 50.816f, - 52.053f, 52.937f, 53.850f, 54.571f, 53.858f, 54.424f, 54.047f, 53.723f, 52.786f, 53.645f, - 53.724f, 51.715f, 52.420f, 52.165f, 51.892f, 52.695f, 52.000f, 51.623f, 50.830f, 50.572f, - 51.300f, 53.068f, 52.194f, 49.783f, 47.489f, 45.286f, 42.578f, 41.210f, 39.279f, 36.408f, - 34.000f, 30.733f, 28.845f, 29.087f, 27.181f, 24.621f, 22.397f, 20.183f, 17.748f, 15.469f, - 13.606f -},{ --29.534f,-27.907f,-25.125f,-22.051f,-18.133f,-15.945f,-14.108f,-12.177f,-10.485f,-10.048f, - -7.640f, -4.909f, -1.564f, 2.546f, 6.975f, 10.804f, 13.300f, 12.704f, 13.200f, 10.919f, - 10.144f, 8.827f, 9.978f, 10.408f, 10.780f, 11.269f, 11.415f, 11.963f, 12.873f, 14.138f, - 15.454f, 18.007f, 21.113f, 23.484f, 24.835f, 27.057f, 27.690f, 27.793f, 27.381f, 26.845f, - 26.021f, 24.778f, 23.990f, 23.632f, 23.308f, 22.505f, 21.833f, 21.980f, 20.203f, 19.686f, - 18.432f, 17.540f, 16.350f, 16.902f, 17.168f, 16.994f, 17.204f, 18.688f, 18.521f, 18.324f, - 18.400f, 18.391f, 17.986f, 18.107f, 17.922f, 17.342f, 16.117f, 16.005f, 15.288f, 14.773f, - 14.688f, 14.167f, 13.610f, 13.336f, 13.328f, 13.297f, 12.899f, 13.328f, 12.289f, 12.107f, - 12.745f, 14.081f, 15.169f, 16.130f, 16.750f, 16.570f, 17.661f, 17.673f, 17.512f, 17.663f, - 17.740f, 17.714f, 17.827f, 18.087f, 19.901f, 25.172f, 27.542f, 27.753f, 27.642f, 27.091f, - 26.407f, 26.048f, 26.792f, 26.814f, 26.595f, 28.228f, 28.712f, 28.668f, 27.316f, 27.022f, - 26.556f, 26.989f, 25.237f, 25.428f, 26.297f, 28.160f, 30.349f, 31.933f, 34.081f, 37.812f, - 41.367f, 45.506f, 48.180f, 51.696f, 51.448f, 49.912f, 47.540f, 50.842f, 51.202f, 53.306f, - 52.386f, 53.679f, 54.027f, 51.426f, 46.928f, 46.617f, 49.390f, 49.315f, 49.590f, 50.445f, - 50.182f, 50.644f, 51.868f, 52.806f, 52.610f, 53.029f, 52.204f, 52.302f, 50.256f, 52.465f, - 52.911f, 50.656f, 50.047f, 51.446f, 51.761f, 52.046f, 51.661f, 50.914f, 50.823f, 49.899f, - 50.816f, 52.457f, 51.944f, 49.542f, 47.246f, 45.108f, 42.212f, 40.953f, 38.726f, 35.655f, - 33.672f, 30.541f, 29.252f, 28.978f, 27.242f, 24.737f, 22.468f, 20.163f, 17.716f, 15.466f, - 13.606f -},{ --29.534f,-27.897f,-25.051f,-22.039f,-18.132f,-15.799f,-14.259f,-12.311f,-10.615f, -9.776f, - -7.307f, -4.563f, -1.162f, 2.456f, 6.845f, 11.005f, 12.659f, 12.348f, 12.822f, 11.334f, - 10.719f, 9.190f, 9.986f, 10.640f, 11.222f, 11.730f, 12.053f, 12.288f, 13.087f, 14.067f, - 15.566f, 17.915f, 21.003f, 23.067f, 24.515f, 27.469f, 27.705f, 27.557f, 26.961f, 26.592f, - 25.752f, 24.448f, 23.671f, 23.177f, 22.689f, 21.777f, 22.689f, 20.852f, 19.774f, 18.740f, - 17.917f, 17.035f, 15.888f, 16.407f, 16.676f, 17.153f, 18.053f, 18.819f, 19.237f, 18.961f, - 19.111f, 19.130f, 19.094f, 18.884f, 18.540f, 18.205f, 16.712f, 16.768f, 15.902f, 15.620f, - 15.415f, 15.247f, 14.673f, 14.044f, 13.668f, 13.510f, 13.031f, 12.467f, 11.796f, 11.577f, - 12.627f, 13.817f, 15.207f, 16.133f, 17.126f, 17.037f, 18.047f, 17.951f, 17.838f, 17.630f, - 17.469f, 17.585f, 17.001f, 17.601f, 20.252f, 24.441f, 27.162f, 28.002f, 27.156f, 25.697f, - 25.278f, 25.413f, 26.059f, 26.062f, 25.264f, 25.640f, 28.147f, 28.075f, 28.631f, 28.157f, - 28.540f, 28.908f, 27.284f, 26.694f, 26.311f, 27.385f, 28.410f, 29.836f, 31.431f, 36.354f, - 38.972f, 43.343f, 47.114f, 49.614f, 51.025f, 49.938f, 47.663f, 49.950f, 51.740f, 52.668f, - 52.723f, 52.940f, 51.708f, 50.233f, 48.663f, 47.560f, 48.342f, 48.517f, 48.888f, 49.067f, - 48.049f, 48.106f, 49.163f, 50.801f, 51.154f, 50.926f, 49.989f, 50.065f, 49.024f, 50.518f, - 50.981f, 51.020f, 49.287f, 50.315f, 51.386f, 51.542f, 51.267f, 50.641f, 50.215f, 49.210f, - 50.298f, 51.798f, 51.599f, 49.227f, 47.207f, 44.677f, 42.277f, 41.153f, 38.423f, 35.351f, - 33.545f, 30.908f, 29.877f, 28.811f, 27.321f, 24.863f, 22.543f, 20.150f, 17.686f, 15.462f, - 13.606f -},{ --29.534f,-27.888f,-24.975f,-22.013f,-18.140f,-15.637f,-14.450f,-12.489f,-10.677f, -9.516f, - -7.143f, -4.597f, -1.353f, 2.121f, 6.408f, 10.464f, 11.750f, 12.582f, 12.407f, 12.616f, - 12.857f, 10.021f, 10.154f, 10.646f, 11.833f, 12.456f, 12.724f, 12.886f, 13.213f, 14.150f, - 15.272f, 17.879f, 20.764f, 22.963f, 24.603f, 27.003f, 27.587f, 27.312f, 26.803f, 26.526f, - 25.291f, 24.096f, 23.523f, 22.860f, 22.752f, 21.480f, 22.172f, 18.988f, 19.650f, 17.750f, - 17.522f, 16.845f, 16.386f, 16.183f, 17.003f, 17.802f, 18.774f, 19.157f, 19.414f, 20.208f, - 20.392f, 20.320f, 19.995f, 19.687f, 19.195f, 19.094f, 17.727f, 17.493f, 16.872f, 16.112f, - 16.132f, 15.979f, 15.094f, 14.507f, 13.875f, 13.380f, 12.826f, 12.117f, 11.241f, 11.934f, - 12.519f, 12.857f, 14.591f, 16.103f, 17.129f, 17.396f, 18.050f, 18.272f, 18.391f, 17.622f, - 17.305f, 17.384f, 16.676f, 17.044f, 18.966f, 22.479f, 26.936f, 26.761f, 26.042f, 24.794f, - 24.105f, 24.333f, 25.136f, 26.068f, 24.616f, 24.020f, 26.847f, 27.605f, 28.812f, 29.965f, - 30.065f, 29.214f, 28.555f, 27.388f, 27.796f, 27.299f, 26.763f, 27.335f, 29.782f, 33.521f, - 37.537f, 41.763f, 44.136f, 48.303f, 50.145f, 50.431f, 46.838f, 46.726f, 50.401f, 51.817f, - 52.456f, 51.249f, 50.245f, 51.390f, 48.555f, 47.214f, 47.805f, 48.125f, 48.277f, 48.255f, - 46.171f, 46.144f, 47.757f, 48.543f, 48.096f, 48.258f, 48.075f, 48.496f, 48.596f, 48.469f, - 49.185f, 50.555f, 49.938f, 49.639f, 50.646f, 51.296f, 50.668f, 50.105f, 49.348f, 48.775f, - 49.634f, 50.929f, 51.099f, 48.981f, 47.136f, 44.066f, 42.825f, 41.472f, 38.405f, 35.629f, - 33.647f, 31.629f, 30.516f, 28.632f, 27.390f, 24.982f, 22.610f, 20.145f, 17.658f, 15.457f, - 13.606f -},{ --29.534f,-27.880f,-24.897f,-21.973f,-18.154f,-15.493f,-14.636f,-12.657f,-10.648f, -9.301f, - -7.084f, -4.850f, -2.015f, 1.642f, 5.903f, 9.258f, 10.905f, 13.100f, 12.465f, 13.448f, - 14.464f, 10.528f, 10.660f, 10.931f, 12.894f, 13.775f, 13.406f, 13.503f, 13.701f, 14.329f, - 15.132f, 17.828f, 20.762f, 22.627f, 24.433f, 27.098f, 27.238f, 27.168f, 26.391f, 26.405f, - 25.022f, 23.761f, 23.319f, 22.775f, 22.479f, 21.243f, 20.774f, 18.793f, 23.573f, 17.031f, - 17.474f, 16.804f, 16.597f, 16.734f, 16.967f, 17.767f, 18.370f, 20.028f, 20.044f, 20.940f, - 21.409f, 21.247f, 20.852f, 20.564f, 20.098f, 19.847f, 18.959f, 18.146f, 17.336f, 16.808f, - 16.339f, 16.371f, 15.504f, 14.713f, 14.061f, 13.421f, 12.683f, 11.942f, 11.145f, 11.092f, - 11.477f, 11.602f, 13.059f, 15.223f, 16.411f, 16.838f, 17.664f, 18.217f, 18.196f, 17.846f, - 17.162f, 16.992f, 16.895f, 16.616f, 17.673f, 20.453f, 25.912f, 26.234f, 25.914f, 24.272f, - 23.262f, 23.412f, 24.155f, 25.095f, 23.751f, 22.245f, 24.140f, 27.104f, 28.980f, 30.837f, - 31.445f, 30.261f, 30.432f, 29.865f, 29.163f, 27.348f, 25.617f, 25.845f, 28.325f, 30.965f, - 35.389f, 39.102f, 41.083f, 45.020f, 48.293f, 49.580f, 47.460f, 46.235f, 49.156f, 49.913f, - 51.091f, 50.314f, 49.985f, 52.108f, 48.706f, 47.140f, 48.169f, 47.587f, 47.370f, 47.048f, - 45.038f, 45.301f, 46.300f, 46.367f, 45.821f, 46.184f, 46.676f, 47.262f, 47.762f, 46.927f, - 48.227f, 49.454f, 50.172f, 49.071f, 49.781f, 50.804f, 50.320f, 48.953f, 48.675f, 48.539f, - 48.836f, 50.053f, 50.553f, 48.925f, 46.724f, 43.723f, 43.370f, 41.560f, 38.495f, 36.215f, - 33.895f, 32.344f, 30.978f, 28.477f, 27.419f, 25.076f, 22.659f, 20.147f, 17.632f, 15.452f, - 13.606f -}}; +static const float geoid[361][181] = { + { -29.534f, -27.880f, -24.897f, -21.973f, -18.154f, -15.493f, -14.636f, -12.657f, -10.648f, + -9.301f, -7.084f, -4.850f, -2.015f, 1.642f, 5.903f, 9.258f, 10.905f, 13.100f, + 12.465f, 13.448f, 14.464f, 10.528f, 10.660f, 10.931f, 12.894f, 13.775f, 13.406f, + 13.503f, 13.701f, 14.329f, 15.132f, 17.828f, 20.762f, 22.627f, 24.433f, 27.098f, + 27.238f, 27.168f, 26.391f, 26.405f, 25.022f, 23.761f, 23.319f, 22.775f, 22.479f, + 21.243f, 20.774f, 18.793f, 23.573f, 17.031f, 17.474f, 16.804f, 16.597f, 16.734f, + 16.967f, 17.767f, 18.370f, 20.028f, 20.044f, 20.940f, 21.409f, 21.247f, 20.852f, + 20.564f, 20.098f, 19.847f, 18.959f, 18.146f, 17.336f, 16.808f, 16.339f, 16.371f, + 15.504f, 14.713f, 14.061f, 13.421f, 12.683f, 11.942f, 11.145f, 11.092f, 11.477f, + 11.602f, 13.059f, 15.223f, 16.411f, 16.838f, 17.664f, 18.217f, 18.196f, 17.846f, + 17.162f, 16.992f, 16.895f, 16.616f, 17.673f, 20.453f, 25.912f, 26.234f, 25.914f, + 24.272f, 23.262f, 23.412f, 24.155f, 25.095f, 23.751f, 22.245f, 24.140f, 27.104f, + 28.980f, 30.837f, 31.445f, 30.261f, 30.432f, 29.865f, 29.163f, 27.348f, 25.617f, + 25.845f, 28.325f, 30.965f, 35.389f, 39.102f, 41.083f, 45.020f, 48.293f, 49.580f, + 47.460f, 46.235f, 49.156f, 49.913f, 51.091f, 50.314f, 49.985f, 52.108f, 48.706f, + 47.140f, 48.169f, 47.587f, 47.370f, 47.048f, 45.038f, 45.301f, 46.300f, 46.367f, + 45.821f, 46.184f, 46.676f, 47.262f, 47.762f, 46.927f, 48.227f, 49.454f, 50.172f, + 49.071f, 49.781f, 50.804f, 50.320f, 48.953f, 48.675f, 48.539f, 48.836f, 50.053f, + 50.553f, 48.925f, 46.724f, 43.723f, 43.370f, 41.560f, 38.495f, 36.215f, 33.895f, + 32.344f, 30.978f, 28.477f, 27.419f, 25.076f, 22.659f, 20.147f, 17.632f, 15.452f, + 13.606f }, + { -29.534f, -27.872f, -24.818f, -21.917f, -18.173f, -15.402f, -14.776f, -12.758f, -10.529f, + -9.116f, -6.976f, -4.953f, -2.543f, 1.310f, 5.640f, 8.533f, 10.927f, 13.842f, + 12.831f, 12.856f, 14.414f, 10.363f, 11.018f, 11.346f, 13.963f, 15.276f, 14.385f, + 13.940f, 14.094f, 14.546f, 15.512f, 17.859f, 20.624f, 22.106f, 24.013f, 25.824f, + 27.236f, 27.060f, 26.242f, 25.680f, 24.794f, 23.590f, 22.886f, 22.182f, 21.504f, + 21.160f, 21.131f, 20.380f, 21.356f, 18.016f, 17.639f, 17.348f, 16.947f, 17.054f, + 17.591f, 18.255f, 19.837f, 19.761f, 20.307f, 21.184f, 22.997f, 22.284f, 22.086f, + 21.615f, 21.142f, 20.632f, 20.144f, 19.147f, 18.136f, 17.373f, 16.785f, 16.271f, + 15.632f, 14.847f, 14.130f, 13.408f, 12.631f, 11.798f, 11.082f, 10.733f, 10.329f, + 10.127f, 12.546f, 12.820f, 15.290f, 15.546f, 16.568f, 18.234f, 18.361f, 17.446f, + 16.997f, 16.742f, 16.948f, 16.553f, 17.426f, 19.542f, 24.700f, 26.558f, 25.574f, + 23.570f, 21.963f, 22.519f, 23.588f, 23.959f, 22.591f, 22.114f, 23.332f, 26.426f, + 28.284f, 30.341f, 31.433f, 31.283f, 31.117f, 31.596f, 30.563f, 28.159f, 25.538f, + 25.691f, 27.841f, 28.600f, 32.533f, 36.899f, 38.970f, 41.651f, 46.206f, 48.666f, + 48.107f, 45.242f, 47.015f, 48.806f, 49.616f, 49.832f, 50.005f, 51.846f, 49.203f, + 48.970f, 48.786f, 47.510f, 46.237f, 45.552f, 45.048f, 44.938f, 45.371f, 45.013f, + 44.036f, 44.361f, 45.252f, 46.356f, 47.067f, 46.723f, 47.361f, 47.685f, 48.633f, + 48.060f, 48.638f, 49.669f, 49.180f, 48.457f, 48.343f, 47.985f, 48.113f, 49.355f, + 49.970f, 48.839f, 46.055f, 43.870f, 43.379f, 41.425f, 38.629f, 36.716f, 34.188f, + 32.741f, 31.166f, 28.361f, 27.379f, 25.135f, 22.684f, 20.156f, 17.609f, 15.446f, + 13.606f }, + { -29.534f, -27.865f, -24.741f, -21.844f, -18.189f, -15.386f, -14.844f, -12.759f, -10.339f, + -8.906f, -6.689f, -4.647f, -2.412f, 1.357f, 5.676f, 9.011f, 12.056f, 14.836f, + 13.289f, 12.278f, 14.264f, 10.369f, 11.217f, 11.990f, 14.534f, 16.613f, 15.894f, + 14.464f, 14.419f, 14.737f, 15.552f, 17.503f, 20.371f, 21.913f, 23.853f, 25.577f, + 26.714f, 27.074f, 26.194f, 25.353f, 24.914f, 23.342f, 22.596f, 21.805f, 21.324f, + 21.433f, 21.171f, 21.243f, 21.521f, 18.293f, 18.301f, 18.016f, 17.562f, 17.604f, + 18.234f, 19.057f, 19.765f, 22.960f, 22.922f, 21.914f, 22.944f, 24.099f, 23.245f, + 22.425f, 22.109f, 21.822f, 21.210f, 20.463f, 19.201f, 18.137f, 16.982f, 16.273f, + 15.655f, 14.998f, 14.191f, 13.418f, 12.485f, 11.826f, 11.096f, 10.563f, 10.033f, + 9.905f, 10.429f, 10.989f, 11.786f, 13.499f, 15.282f, 17.237f, 17.811f, 17.591f, + 16.757f, 16.210f, 16.158f, 15.951f, 15.816f, 17.326f, 20.984f, 25.957f, 26.021f, + 25.190f, 23.883f, 21.991f, 22.407f, 22.965f, 23.025f, 22.790f, 24.188f, 25.330f, + 26.929f, 30.179f, 31.546f, 31.718f, 31.502f, 32.046f, 31.603f, 28.279f, 26.031f, + 24.934f, 26.527f, 27.728f, 30.134f, 34.456f, 38.013f, 40.139f, 44.998f, 46.912f, + 47.887f, 44.456f, 46.072f, 48.802f, 47.837f, 48.677f, 51.152f, 50.728f, 50.571f, + 50.685f, 50.028f, 47.513f, 45.615f, 44.643f, 44.892f, 44.441f, 44.538f, 44.131f, + 42.692f, 43.024f, 44.565f, 45.533f, 45.788f, 46.040f, 46.826f, 47.043f, 47.789f, + 47.210f, 46.716f, 48.096f, 47.357f, 48.183f, 48.079f, 47.224f, 47.473f, 48.408f, + 49.272f, 48.533f, 45.403f, 44.082f, 42.920f, 41.345f, 38.921f, 36.961f, 34.468f, + 32.717f, 31.112f, 28.276f, 27.259f, 25.151f, 22.681f, 20.170f, 17.589f, 15.439f, + 13.606f }, + { -29.534f, -27.858f, -24.665f, -21.753f, -18.195f, -15.452f, -14.835f, -12.659f, -10.107f, + -8.614f, -6.205f, -3.991f, -1.675f, 1.769f, 5.916f, 10.055f, 13.417f, 15.862f, + 14.224f, 12.716f, 14.619f, 10.803f, 11.632f, 12.865f, 14.739f, 17.272f, 16.934f, + 15.039f, 14.977f, 15.045f, 15.547f, 17.438f, 19.743f, 22.194f, 24.179f, 25.803f, + 27.246f, 26.646f, 26.346f, 25.153f, 24.467f, 23.726f, 22.471f, 21.860f, 21.231f, + 21.588f, 21.070f, 21.128f, 19.511f, 19.079f, 18.796f, 18.945f, 18.551f, 17.949f, + 18.620f, 19.614f, 20.048f, 20.934f, 21.138f, 24.234f, 25.249f, 24.186f, 24.752f, + 24.201f, 23.339f, 22.729f, 22.350f, 21.693f, 20.519f, 19.023f, 17.573f, 16.519f, + 15.752f, 15.071f, 14.152f, 13.391f, 12.539f, 11.840f, 11.210f, 10.474f, 9.890f, + 9.404f, 9.648f, 9.593f, 10.888f, 11.683f, 13.659f, 15.487f, 16.908f, 17.157f, + 16.942f, 16.466f, 15.867f, 15.076f, 14.806f, 16.182f, 18.527f, 24.702f, 25.834f, + 24.851f, 24.082f, 22.824f, 22.397f, 22.366f, 22.361f, 22.268f, 23.071f, 23.606f, + 25.512f, 27.653f, 30.007f, 31.606f, 32.335f, 33.284f, 32.620f, 30.289f, 27.742f, + 25.887f, 27.412f, 28.285f, 29.022f, 32.069f, 35.868f, 39.096f, 42.115f, 44.076f, + 46.268f, 44.511f, 45.338f, 47.426f, 48.638f, 47.538f, 49.946f, 49.958f, 51.977f, + 52.593f, 50.290f, 47.902f, 46.000f, 44.714f, 44.569f, 44.694f, 44.059f, 42.913f, + 41.445f, 42.459f, 43.830f, 44.198f, 44.724f, 44.971f, 45.367f, 46.038f, 47.165f, + 46.513f, 44.688f, 46.149f, 45.965f, 46.815f, 47.523f, 46.682f, 46.880f, 47.220f, + 48.557f, 48.093f, 44.877f, 43.904f, 42.567f, 41.466f, 39.437f, 37.085f, 34.733f, + 32.390f, 30.947f, 28.200f, 27.066f, 25.126f, 22.654f, 20.185f, 17.570f, 15.431f, + 13.606f }, + { -29.534f, -27.853f, -24.591f, -21.645f, -18.181f, -15.590f, -14.763f, -12.487f, -9.869f, + -8.231f, -5.629f, -3.271f, -0.833f, 2.365f, 6.334f, 10.625f, 14.113f, 16.758f, + 15.703f, 13.417f, 14.793f, 11.489f, 12.038f, 13.143f, 14.829f, 17.094f, 17.228f, + 16.001f, 15.661f, 15.448f, 15.894f, 17.342f, 19.200f, 21.642f, 24.267f, 26.250f, + 27.707f, 26.574f, 26.004f, 25.197f, 24.562f, 24.092f, 22.633f, 22.110f, 21.742f, + 22.345f, 21.296f, 21.180f, 20.181f, 19.475f, 19.345f, 19.445f, 19.421f, 19.152f, + 19.198f, 19.921f, 20.557f, 21.618f, 22.933f, 22.642f, 22.478f, 23.033f, 24.020f, + 26.116f, 24.905f, 23.921f, 23.911f, 22.839f, 21.555f, 20.361f, 18.372f, 16.821f, + 15.775f, 15.094f, 14.295f, 13.570f, 12.784f, 12.027f, 11.389f, 10.493f, 9.780f, + 9.152f, 9.006f, 9.111f, 9.411f, 10.193f, 11.846f, 14.082f, 16.287f, 16.712f, + 16.617f, 16.232f, 15.606f, 14.330f, 16.558f, 18.130f, 19.340f, 24.026f, 25.344f, + 24.359f, 23.284f, 21.650f, 20.171f, 20.802f, 21.103f, 20.681f, 21.466f, 22.402f, + 23.756f, 25.827f, 28.106f, 30.013f, 31.334f, 33.168f, 33.658f, 33.426f, 30.368f, + 27.193f, 28.160f, 27.771f, 27.461f, 29.163f, 32.442f, 35.690f, 38.945f, 42.108f, + 44.068f, 44.542f, 44.446f, 45.654f, 48.376f, 46.319f, 47.110f, 49.680f, 50.915f, + 52.964f, 50.246f, 48.196f, 46.384f, 45.423f, 45.712f, 45.111f, 43.604f, 42.290f, + 41.365f, 41.790f, 43.021f, 43.171f, 43.635f, 44.465f, 44.783f, 45.372f, 45.910f, + 45.481f, 42.712f, 44.601f, 44.929f, 44.814f, 46.503f, 46.011f, 46.213f, 46.320f, + 47.778f, 47.537f, 44.576f, 43.583f, 42.642f, 41.609f, 39.981f, 37.323f, 34.987f, + 31.998f, 30.825f, 28.104f, 26.822f, 25.069f, 22.607f, 20.201f, 17.555f, 15.423f, + 13.606f }, + { -29.534f, -27.848f, -24.521f, -21.520f, -18.139f, -15.771f, -14.651f, -12.289f, -9.660f, + -7.801f, -5.090f, -2.710f, -0.272f, 2.978f, 6.889f, 10.628f, 14.298f, 17.657f, + 17.063f, 13.906f, 14.875f, 12.449f, 12.338f, 13.218f, 15.054f, 16.980f, 17.334f, + 16.820f, 16.579f, 16.177f, 16.516f, 17.416f, 19.038f, 20.935f, 23.615f, 26.014f, + 27.547f, 26.127f, 25.595f, 24.695f, 24.802f, 24.617f, 23.232f, 22.784f, 22.287f, + 21.921f, 22.085f, 21.845f, 20.674f, 19.881f, 19.615f, 19.811f, 20.174f, 20.307f, + 20.120f, 20.208f, 20.724f, 21.813f, 22.621f, 22.759f, 23.471f, 23.658f, 24.010f, + 25.421f, 26.892f, 25.756f, 26.050f, 24.699f, 22.533f, 21.972f, 19.429f, 17.607f, + 16.271f, 15.167f, 14.390f, 13.610f, 12.930f, 12.399f, 11.697f, 10.703f, 9.923f, + 9.386f, 8.763f, 8.690f, 8.648f, 9.241f, 10.701f, 12.881f, 15.101f, 16.232f, + 16.254f, 16.002f, 15.280f, 15.548f, 19.235f, 20.892f, 19.610f, 23.241f, 25.027f, + 23.769f, 23.077f, 21.308f, 19.886f, 19.779f, 20.147f, 20.817f, 21.613f, 22.690f, + 23.438f, 24.999f, 26.666f, 29.152f, 31.820f, 34.425f, 35.793f, 35.128f, 32.418f, + 29.146f, 27.687f, 26.968f, 26.463f, 27.412f, 29.614f, 32.045f, 34.360f, 37.402f, + 43.444f, 43.043f, 43.578f, 44.710f, 45.486f, 45.808f, 46.589f, 48.893f, 50.381f, + 50.720f, 49.311f, 48.285f, 47.377f, 46.672f, 46.709f, 45.442f, 43.418f, 42.007f, + 40.648f, 40.924f, 42.127f, 42.530f, 42.778f, 44.391f, 44.966f, 45.949f, 45.463f, + 45.186f, 42.236f, 43.936f, 43.966f, 43.324f, 45.195f, 45.051f, 45.466f, 45.571f, + 46.719f, 46.813f, 44.714f, 43.615f, 42.818f, 41.516f, 40.197f, 37.757f, 35.205f, + 31.739f, 30.846f, 27.965f, 26.564f, 24.992f, 22.551f, 20.214f, 17.541f, 15.414f, + 13.606f }, + { -29.534f, -27.844f, -24.454f, -21.380f, -18.059f, -15.950f, -14.517f, -12.098f, -9.510f, + -7.400f, -4.653f, -2.299f, 0.079f, 3.514f, 7.382f, 10.761f, 14.603f, 18.434f, + 17.697f, 14.096f, 14.871f, 13.127f, 12.795f, 13.861f, 15.200f, 17.027f, 17.405f, + 17.421f, 17.593f, 17.118f, 16.896f, 17.665f, 18.825f, 20.440f, 22.505f, 25.907f, + 27.382f, 26.365f, 25.635f, 25.146f, 24.473f, 24.494f, 23.834f, 23.578f, 23.041f, + 22.849f, 22.969f, 22.872f, 21.633f, 20.593f, 20.033f, 20.359f, 20.982f, 21.274f, + 20.968f, 20.775f, 21.250f, 22.204f, 22.763f, 22.981f, 23.564f, 24.142f, 24.538f, + 24.686f, 28.629f, 28.327f, 27.073f, 25.850f, 24.353f, 22.283f, 20.479f, 18.566f, + 17.106f, 15.736f, 14.633f, 13.861f, 13.264f, 12.844f, 12.149f, 11.290f, 10.216f, + 9.382f, 8.487f, 7.872f, 7.869f, 8.443f, 9.403f, 11.327f, 13.967f, 15.677f, + 16.804f, 15.432f, 15.102f, 17.403f, 20.866f, 19.099f, 18.549f, 22.326f, 24.098f, + 24.508f, 24.169f, 22.182f, 20.792f, 19.493f, 19.081f, 20.190f, 20.819f, 22.097f, + 22.998f, 24.003f, 25.489f, 27.853f, 31.410f, 36.313f, 36.965f, 35.964f, 33.889f, + 30.188f, 28.047f, 27.069f, 26.381f, 26.753f, 28.247f, 29.939f, 30.694f, 36.085f, + 43.335f, 43.467f, 42.678f, 44.277f, 44.986f, 45.025f, 45.603f, 47.975f, 51.084f, + 52.180f, 49.330f, 49.635f, 48.018f, 47.150f, 48.087f, 45.700f, 43.694f, 41.611f, + 39.777f, 40.626f, 41.818f, 41.680f, 42.158f, 44.184f, 44.452f, 45.957f, 45.242f, + 45.196f, 43.352f, 42.783f, 43.393f, 42.573f, 43.844f, 44.224f, 44.808f, 44.702f, + 45.589f, 46.096f, 45.145f, 43.790f, 42.637f, 41.178f, 39.905f, 38.250f, 35.352f, + 31.672f, 31.018f, 27.779f, 26.327f, 24.912f, 22.497f, 20.221f, 17.529f, 15.404f, + 13.606f }, + { -29.534f, -27.841f, -24.390f, -21.229f, -17.938f, -16.080f, -14.370f, -11.927f, -9.433f, + -7.085f, -4.283f, -1.891f, 0.525f, 3.940f, 7.644f, 11.373f, 15.108f, 18.532f, + 17.439f, 13.633f, 14.591f, 13.377f, 13.473f, 14.576f, 15.444f, 16.873f, 17.630f, + 17.824f, 18.531f, 17.993f, 17.492f, 17.772f, 18.992f, 19.870f, 21.651f, 25.845f, + 26.556f, 26.396f, 25.794f, 25.476f, 25.119f, 24.255f, 24.205f, 25.014f, 24.014f, + 23.629f, 24.111f, 23.849f, 22.925f, 21.710f, 20.827f, 21.040f, 21.635f, 22.412f, + 21.917f, 21.464f, 21.842f, 22.901f, 23.404f, 23.830f, 24.222f, 24.359f, 24.644f, + 24.768f, 24.342f, 25.604f, 25.050f, 24.853f, 24.518f, 22.725f, 20.790f, 19.248f, + 17.555f, 15.881f, 14.741f, 14.402f, 14.005f, 13.472f, 12.914f, 11.945f, 10.675f, + 9.484f, 8.362f, 7.522f, 7.189f, 7.625f, 8.341f, 9.911f, 12.455f, 14.390f, + 16.331f, 15.955f, 15.972f, 17.036f, 19.374f, 18.789f, 20.377f, 21.712f, 23.681f, + 25.011f, 24.881f, 22.413f, 21.035f, 19.929f, 19.285f, 19.383f, 20.505f, 21.650f, + 22.839f, 23.268f, 24.178f, 26.177f, 29.701f, 33.566f, 36.582f, 36.022f, 33.149f, + 29.679f, 27.527f, 27.080f, 26.407f, 26.617f, 27.890f, 28.934f, 29.298f, 37.322f, + 43.291f, 42.751f, 42.135f, 43.562f, 44.224f, 44.773f, 45.549f, 45.828f, 51.578f, + 52.963f, 51.283f, 49.310f, 49.141f, 48.396f, 48.733f, 46.870f, 44.141f, 41.230f, + 39.540f, 40.296f, 41.312f, 40.885f, 41.829f, 45.263f, 45.307f, 45.594f, 45.572f, + 44.547f, 43.190f, 41.290f, 42.911f, 42.322f, 42.287f, 43.497f, 44.151f, 44.039f, + 44.665f, 45.508f, 45.203f, 43.430f, 42.155f, 40.799f, 39.322f, 38.584f, 35.413f, + 31.721f, 31.268f, 27.559f, 26.134f, 24.841f, 22.454f, 20.222f, 17.519f, 15.393f, + 13.606f }, + { -29.534f, -27.838f, -24.330f, -21.070f, -17.776f, -16.117f, -14.200f, -11.756f, -9.418f, + -6.869f, -3.907f, -1.399f, 1.173f, 4.303f, 7.820f, 12.096f, 15.555f, 17.964f, + 16.519f, 12.815f, 14.465f, 13.556f, 13.988f, 14.877f, 15.863f, 16.730f, 17.919f, + 18.421f, 19.514f, 18.884f, 18.241f, 18.232f, 19.498f, 19.446f, 21.528f, 25.300f, + 26.074f, 27.017f, 25.964f, 25.697f, 23.581f, 25.107f, 25.961f, 26.093f, 24.159f, + 24.672f, 24.250f, 24.518f, 24.000f, 23.171f, 22.081f, 22.059f, 22.507f, 23.115f, + 22.884f, 22.214f, 22.567f, 23.023f, 24.088f, 24.469f, 24.913f, 24.668f, 24.779f, + 25.331f, 24.728f, 23.617f, 22.854f, 23.789f, 23.733f, 23.227f, 21.197f, 19.255f, + 17.480f, 16.093f, 14.877f, 14.638f, 14.597f, 14.202f, 13.809f, 12.801f, 11.271f, + 9.841f, 8.417f, 7.415f, 7.209f, 7.341f, 7.621f, 7.748f, 11.371f, 14.324f, + 13.662f, 14.059f, 14.148f, 15.824f, 18.235f, 20.255f, 21.128f, 21.908f, 22.085f, + 23.126f, 23.888f, 22.158f, 21.603f, 20.888f, 20.143f, 19.409f, 20.876f, 22.493f, + 24.230f, 24.776f, 24.607f, 26.040f, 29.836f, 33.258f, 34.752f, 35.717f, 33.239f, + 29.754f, 28.955f, 27.320f, 26.524f, 27.292f, 28.717f, 29.407f, 29.607f, 38.465f, + 43.029f, 42.697f, 41.625f, 45.074f, 45.807f, 46.017f, 45.813f, 45.739f, 48.571f, + 44.668f, 51.853f, 48.389f, 49.306f, 48.233f, 48.497f, 48.385f, 44.503f, 41.177f, + 39.194f, 40.626f, 40.872f, 40.445f, 40.740f, 43.606f, 44.699f, 45.209f, 46.153f, + 43.589f, 42.118f, 40.714f, 41.948f, 42.618f, 41.043f, 42.604f, 43.381f, 43.593f, + 43.736f, 44.866f, 44.488f, 42.496f, 41.729f, 40.488f, 38.887f, 38.637f, 35.418f, + 31.760f, 31.488f, 27.340f, 25.997f, 24.790f, 22.432f, 20.213f, 17.509f, 15.382f, + 13.606f }, + { -29.534f, -27.837f, -24.272f, -20.906f, -17.576f, -16.031f, -13.991f, -11.555f, -9.432f, + -6.722f, -3.481f, -0.881f, 1.823f, 4.715f, 8.213f, 12.545f, 15.960f, 17.613f, + 15.652f, 12.250f, 14.387f, 13.581f, 14.070f, 15.049f, 16.031f, 16.940f, 18.184f, + 19.253f, 19.977f, 19.755f, 19.078f, 18.582f, 19.134f, 19.592f, 21.792f, 24.516f, + 25.942f, 26.723f, 26.439f, 25.567f, 24.658f, 23.199f, 24.912f, 24.808f, 25.002f, + 25.723f, 25.305f, 24.953f, 24.926f, 24.637f, 23.628f, 22.890f, 22.708f, 23.378f, + 23.609f, 23.157f, 23.476f, 23.664f, 24.301f, 25.152f, 25.625f, 25.319f, 25.191f, + 25.186f, 24.776f, 23.915f, 22.905f, 21.959f, 22.510f, 22.956f, 22.698f, 19.039f, + 17.490f, 16.650f, 15.258f, 14.987f, 14.960f, 15.060f, 14.745f, 13.517f, 11.930f, + 10.287f, 8.526f, 7.441f, 7.301f, 7.121f, 4.554f, 7.567f, 10.487f, 12.113f, + 12.343f, 13.445f, 13.439f, 15.328f, 20.480f, 21.327f, 21.736f, 21.333f, 20.872f, + 22.753f, 23.894f, 22.135f, 21.395f, 20.969f, 20.431f, 20.108f, 21.291f, 23.873f, + 27.037f, 28.501f, 26.649f, 27.712f, 29.742f, 31.482f, 34.439f, 34.874f, 31.979f, + 29.649f, 28.740f, 27.964f, 26.717f, 28.181f, 30.031f, 30.806f, 31.529f, 37.213f, + 42.088f, 43.112f, 42.876f, 46.097f, 48.223f, 48.052f, 50.617f, 47.476f, 45.549f, + 41.503f, 47.574f, 47.703f, 48.101f, 48.414f, 48.236f, 47.941f, 44.853f, 40.853f, + 39.449f, 40.381f, 40.477f, 39.426f, 39.184f, 41.661f, 41.977f, 43.124f, 44.902f, + 42.426f, 41.314f, 40.404f, 40.709f, 42.485f, 40.898f, 41.457f, 42.597f, 42.993f, + 42.837f, 44.091f, 43.422f, 41.650f, 41.334f, 40.126f, 38.836f, 38.412f, 35.411f, + 31.706f, 31.596f, 27.162f, 25.906f, 24.764f, 22.435f, 20.195f, 17.500f, 15.371f, + 13.606f }, + { -29.534f, -27.836f, -24.217f, -20.744f, -17.349f, -15.811f, -13.726f, -11.301f, -9.422f, + -6.597f, -3.031f, -0.437f, 2.245f, 5.216f, 8.829f, 12.838f, 16.435f, 17.910f, + 15.459f, 11.825f, 14.062f, 14.179f, 14.615f, 15.578f, 16.567f, 17.494f, 18.453f, + 19.944f, 20.579f, 20.770f, 19.934f, 19.012f, 19.207f, 20.006f, 22.100f, 24.237f, + 26.653f, 27.013f, 27.080f, 26.766f, 25.100f, 25.440f, 26.439f, 25.798f, 25.368f, + 26.060f, 26.398f, 26.397f, 25.761f, 25.697f, 24.771f, 23.851f, 23.321f, 23.731f, + 24.177f, 24.075f, 24.035f, 24.290f, 24.967f, 25.765f, 25.904f, 25.760f, 25.543f, + 25.288f, 24.599f, 23.915f, 22.918f, 22.423f, 22.387f, 22.403f, 23.065f, 19.606f, + 18.388f, 17.649f, 16.277f, 16.191f, 15.558f, 15.867f, 15.806f, 14.483f, 12.982f, + 10.964f, 9.002f, 8.046f, 7.983f, 5.531f, 5.286f, 7.046f, 6.526f, 9.303f, + 9.000f, 11.431f, 12.674f, 14.569f, 16.015f, 20.145f, 22.538f, 20.179f, 20.136f, + 20.630f, 21.569f, 21.015f, 20.507f, 19.677f, 20.178f, 19.774f, 20.885f, 22.985f, + 25.402f, 26.481f, 26.504f, 27.053f, 27.404f, 29.286f, 32.656f, 32.577f, 31.143f, + 29.343f, 28.412f, 28.505f, 27.749f, 29.019f, 32.060f, 32.830f, 33.460f, 36.839f, + 40.039f, 42.474f, 43.499f, 43.900f, 45.726f, 47.020f, 47.223f, 48.546f, 46.414f, + 39.049f, 48.953f, 48.668f, 46.634f, 48.345f, 48.029f, 47.138f, 44.395f, 41.003f, + 39.506f, 40.019f, 39.343f, 38.490f, 38.129f, 40.336f, 40.457f, 40.397f, 41.717f, + 41.486f, 40.655f, 40.107f, 39.595f, 41.118f, 41.162f, 40.202f, 41.764f, 42.337f, + 42.334f, 43.339f, 42.586f, 41.173f, 40.599f, 39.589f, 38.901f, 37.953f, 35.405f, + 31.561f, 31.559f, 27.055f, 25.843f, 24.760f, 22.466f, 20.166f, 17.492f, 15.359f, + 13.606f }, + { -29.534f, -27.836f, -24.164f, -20.587f, -17.108f, -15.473f, -13.402f, -11.000f, -9.337f, + -6.449f, -2.621f, -0.081f, 2.463f, 5.670f, 9.330f, 13.263f, 16.866f, 18.298f, + 15.582f, 11.374f, 14.352f, 15.483f, 15.627f, 15.922f, 17.481f, 17.975f, 18.802f, + 20.620f, 21.822f, 21.876f, 20.926f, 19.731f, 19.492f, 20.188f, 22.091f, 24.209f, + 27.029f, 28.154f, 28.613f, 26.876f, 26.493f, 26.264f, 26.011f, 25.938f, 26.021f, + 26.320f, 27.135f, 27.514f, 26.345f, 26.679f, 25.629f, 24.868f, 24.113f, 24.425f, + 24.887f, 24.950f, 24.639f, 24.863f, 25.372f, 25.643f, 25.942f, 26.109f, 25.610f, + 25.321f, 24.629f, 23.804f, 23.389f, 22.994f, 23.014f, 23.088f, 23.512f, 22.296f, + 20.461f, 21.282f, 19.670f, 17.937f, 17.237f, 16.669f, 16.623f, 15.230f, 14.320f, + 11.443f, 10.281f, 10.681f, 8.987f, 5.623f, 5.295f, 4.294f, 5.356f, 8.141f, + 9.154f, 10.954f, 11.653f, 13.161f, 15.020f, 18.332f, 20.108f, 20.026f, 19.385f, + 19.103f, 19.019f, 19.259f, 18.843f, 18.694f, 18.923f, 18.788f, 18.831f, 21.135f, + 22.949f, 24.652f, 25.056f, 25.013f, 27.014f, 28.892f, 30.358f, 30.499f, 29.130f, + 28.704f, 28.291f, 28.480f, 29.004f, 31.021f, 32.540f, 33.083f, 33.722f, 36.441f, + 39.322f, 42.077f, 43.169f, 43.186f, 44.352f, 46.020f, 47.718f, 48.848f, 44.595f, + 40.733f, 49.278f, 49.611f, 45.956f, 46.995f, 47.189f, 46.464f, 44.308f, 40.701f, + 39.290f, 38.628f, 37.660f, 37.940f, 36.775f, 37.784f, 38.595f, 38.163f, 38.809f, + 39.656f, 38.901f, 39.329f, 38.713f, 39.795f, 41.126f, 39.381f, 40.837f, 41.728f, + 41.908f, 42.652f, 41.955f, 40.662f, 39.610f, 38.958f, 38.492f, 37.293f, 35.353f, + 31.390f, 31.388f, 27.031f, 25.781f, 24.769f, 22.520f, 20.128f, 17.484f, 15.346f, + 13.606f }, + { -29.534f, -27.837f, -24.112f, -20.440f, -16.868f, -15.055f, -13.039f, -10.694f, -9.143f, + -6.249f, -2.288f, 0.269f, 2.693f, 5.911f, 9.509f, 13.805f, 17.195f, 18.505f, + 15.444f, 11.145f, 15.693f, 15.637f, 15.369f, 15.624f, 18.247f, 18.334f, 19.261f, + 21.250f, 22.895f, 22.852f, 21.985f, 20.671f, 19.988f, 20.470f, 22.434f, 24.446f, + 27.722f, 28.618f, 29.866f, 27.253f, 26.336f, 26.855f, 26.229f, 26.005f, 26.679f, + 26.778f, 27.348f, 27.784f, 27.409f, 26.967f, 26.421f, 25.929f, 25.140f, 24.919f, + 25.311f, 25.451f, 25.458f, 25.615f, 26.531f, 26.602f, 26.532f, 26.835f, 26.651f, + 26.420f, 25.843f, 25.429f, 25.204f, 24.397f, 24.348f, 24.512f, 25.081f, 24.463f, + 22.243f, 21.840f, 22.758f, 20.970f, 18.972f, 18.321f, 17.239f, 16.663f, 15.327f, + 12.786f, 11.138f, 12.795f, 10.655f, 4.414f, 2.715f, 3.764f, 7.300f, 8.246f, + 7.836f, 9.161f, 9.427f, 11.343f, 13.952f, 15.763f, 17.547f, 19.005f, 18.225f, + 18.578f, 18.132f, 18.077f, 17.383f, 17.326f, 16.934f, 16.708f, 17.222f, 19.977f, + 21.997f, 22.852f, 22.833f, 23.772f, 25.195f, 26.539f, 28.185f, 28.569f, 28.266f, + 28.163f, 28.573f, 29.077f, 30.290f, 31.888f, 32.318f, 33.102f, 33.438f, 36.376f, + 39.411f, 41.920f, 43.318f, 43.082f, 44.248f, 46.068f, 48.386f, 48.411f, 42.135f, + 42.678f, 47.630f, 49.545f, 45.186f, 46.210f, 47.303f, 45.847f, 43.060f, 40.459f, + 38.592f, 37.468f, 36.597f, 37.256f, 35.538f, 35.119f, 35.762f, 35.574f, 37.018f, + 37.262f, 36.107f, 37.513f, 37.149f, 38.287f, 40.858f, 39.063f, 40.008f, 40.944f, + 41.245f, 42.070f, 41.202f, 39.991f, 39.113f, 38.369f, 37.226f, 36.511f, 35.172f, + 31.258f, 31.105f, 27.072f, 25.702f, 24.780f, 22.591f, 20.083f, 17.475f, 15.333f, + 13.606f }, + { -29.534f, -27.838f, -24.060f, -20.307f, -16.644f, -14.608f, -12.674f, -10.450f, -8.839f, + -5.974f, -2.015f, 0.676f, 3.083f, 6.003f, 9.612f, 14.250f, 17.561f, 18.917f, + 15.476f, 11.353f, 16.826f, 14.923f, 14.371f, 15.671f, 18.777f, 18.848f, 19.712f, + 21.692f, 23.315f, 23.646f, 22.824f, 21.535f, 20.554f, 21.343f, 23.019f, 25.351f, + 27.599f, 29.875f, 30.967f, 29.473f, 26.998f, 27.670f, 27.119f, 26.712f, 27.343f, + 27.378f, 27.524f, 27.986f, 28.238f, 27.088f, 26.635f, 26.356f, 25.526f, 25.477f, + 25.543f, 25.774f, 25.870f, 26.575f, 27.104f, 27.692f, 27.990f, 28.499f, 28.495f, + 28.214f, 27.868f, 27.657f, 27.927f, 27.802f, 26.778f, 25.866f, 24.724f, 24.367f, + 24.619f, 23.382f, 23.857f, 22.393f, 21.322f, 21.982f, 19.394f, 18.226f, 17.424f, + 15.666f, 13.215f, 11.099f, 7.473f, 4.232f, 3.476f, 4.735f, 6.980f, 6.231f, + 6.074f, 6.566f, 7.388f, 8.256f, 12.298f, 14.098f, 14.671f, 16.806f, 16.363f, + 16.488f, 16.953f, 16.352f, 15.956f, 15.424f, 15.232f, 15.278f, 16.707f, 18.870f, + 20.076f, 20.576f, 21.220f, 22.225f, 23.673f, 25.094f, 26.433f, 26.872f, 26.785f, + 26.897f, 28.994f, 30.354f, 31.289f, 31.472f, 33.021f, 32.466f, 32.984f, 35.842f, + 37.965f, 40.279f, 43.700f, 42.787f, 44.180f, 47.154f, 49.299f, 47.124f, 40.782f, + 43.195f, 44.762f, 48.629f, 44.741f, 46.606f, 46.695f, 44.492f, 41.808f, 39.402f, + 37.155f, 35.793f, 36.318f, 36.169f, 34.405f, 32.938f, 32.610f, 33.576f, 35.295f, + 34.957f, 33.958f, 35.803f, 34.847f, 35.543f, 39.433f, 38.724f, 39.415f, 40.161f, + 40.962f, 41.673f, 40.302f, 39.725f, 39.522f, 37.711f, 35.339f, 35.782f, 34.795f, + 31.184f, 30.720f, 27.135f, 25.595f, 24.780f, 22.671f, 20.031f, 17.465f, 15.319f, + 13.606f }, + { -29.534f, -27.841f, -24.007f, -20.191f, -16.452f, -14.189f, -12.359f, -10.329f, -8.454f, + -5.599f, -1.736f, 1.126f, 3.576f, 6.245f, 10.028f, 14.562f, 17.953f, 19.368f, + 16.025f, 12.169f, 16.837f, 15.423f, 14.549f, 16.062f, 18.410f, 19.497f, 20.165f, + 21.927f, 23.536f, 23.848f, 23.249f, 22.330f, 21.632f, 22.066f, 24.115f, 25.906f, + 27.974f, 31.002f, 31.430f, 30.884f, 28.346f, 28.432f, 28.075f, 27.025f, 27.479f, + 28.200f, 28.047f, 27.649f, 28.346f, 28.887f, 26.091f, 28.275f, 26.014f, 26.193f, + 25.584f, 25.569f, 25.914f, 26.714f, 27.673f, 28.559f, 29.431f, 29.943f, 30.080f, + 31.186f, 30.606f, 30.384f, 29.205f, 29.349f, 27.831f, 25.377f, 25.459f, 25.660f, + 25.577f, 23.555f, 23.975f, 24.410f, 21.556f, 20.704f, 20.884f, 18.497f, 17.230f, + 15.554f, 13.150f, 9.760f, 5.594f, 3.099f, 2.861f, 4.359f, 4.401f, 3.820f, + 3.243f, 3.743f, 4.407f, 5.894f, 9.800f, 12.047f, 12.415f, 15.100f, 14.310f, + 13.704f, 14.584f, 14.839f, 14.408f, 13.911f, 13.536f, 14.532f, 15.413f, 17.109f, + 18.005f, 18.568f, 20.012f, 21.100f, 23.179f, 25.388f, 25.774f, 25.632f, 26.257f, + 27.149f, 29.421f, 30.674f, 31.063f, 30.891f, 31.772f, 31.357f, 32.230f, 34.107f, + 36.779f, 38.398f, 42.250f, 43.028f, 45.255f, 47.572f, 48.498f, 43.147f, 42.194f, + 44.444f, 46.672f, 48.473f, 45.159f, 46.836f, 45.781f, 43.576f, 40.854f, 37.483f, + 35.772f, 34.340f, 34.841f, 33.912f, 32.508f, 30.912f, 30.724f, 32.050f, 33.962f, + 33.061f, 32.366f, 34.155f, 33.515f, 32.860f, 35.936f, 38.192f, 38.900f, 39.591f, + 41.002f, 41.056f, 39.422f, 40.130f, 40.056f, 36.661f, 33.539f, 35.295f, 34.207f, + 31.135f, 30.225f, 27.167f, 25.460f, 24.759f, 22.748f, 19.975f, 17.454f, 15.305f, + 13.606f }, + { -29.534f, -27.844f, -23.953f, -20.093f, -16.300f, -13.850f, -12.137f, -10.356f, -8.031f, + -5.111f, -1.385f, 1.561f, 4.046f, 6.853f, 10.786f, 14.904f, 18.190f, 19.313f, + 16.249f, 13.385f, 16.750f, 16.351f, 15.101f, 15.846f, 17.792f, 19.747f, 20.495f, + 22.175f, 23.826f, 24.022f, 23.640f, 22.987f, 22.811f, 23.395f, 24.992f, 26.929f, + 28.757f, 31.543f, 32.671f, 31.200f, 29.694f, 28.919f, 28.625f, 28.179f, 28.500f, + 28.456f, 28.109f, 28.417f, 28.588f, 28.686f, 27.889f, 26.652f, 27.357f, 26.233f, + 25.897f, 25.500f, 25.875f, 27.174f, 28.637f, 29.020f, 31.714f, 31.624f, 31.542f, + 31.601f, 32.328f, 31.618f, 30.666f, 30.016f, 29.281f, 26.991f, 25.870f, 24.663f, + 23.765f, 22.282f, 21.637f, 22.453f, 22.419f, 22.303f, 21.653f, 19.860f, 17.204f, + 14.950f, 12.048f, 8.885f, 5.173f, 2.021f, 1.060f, 2.143f, 1.539f, 0.082f, + -1.156f, -0.314f, 0.287f, 3.495f, 7.870f, 9.020f, 10.118f, 11.949f, 11.841f, + 12.036f, 12.599f, 12.759f, 13.004f, 13.225f, 13.683f, 13.685f, 14.118f, 14.891f, + 16.294f, 17.911f, 20.147f, 22.067f, 24.184f, 26.087f, 25.918f, 25.256f, 26.239f, + 28.042f, 29.953f, 31.016f, 29.809f, 29.556f, 30.270f, 29.779f, 31.795f, 33.889f, + 37.763f, 41.384f, 42.496f, 43.180f, 46.366f, 48.151f, 46.227f, 43.084f, 43.049f, + 45.537f, 46.977f, 47.768f, 46.447f, 46.411f, 44.796f, 42.758f, 39.731f, 35.775f, + 34.742f, 33.733f, 33.053f, 32.420f, 31.152f, 29.320f, 29.331f, 30.658f, 32.361f, + 31.863f, 31.097f, 32.129f, 32.982f, 31.089f, 31.938f, 37.221f, 38.095f, 38.734f, + 40.058f, 39.600f, 38.571f, 40.408f, 39.403f, 35.074f, 32.406f, 35.063f, 33.444f, + 31.056f, 29.615f, 27.120f, 25.308f, 24.710f, 22.812f, 19.917f, 17.443f, 15.290f, + 13.606f }, + { -29.534f, -27.848f, -23.897f, -20.014f, -16.194f, -13.622f, -12.031f, -10.502f, -7.612f, + -4.520f, -0.938f, 1.967f, 4.487f, 7.709f, 11.554f, 15.321f, 18.315f, 19.190f, + 16.006f, 14.331f, 17.584f, 16.305f, 14.808f, 15.479f, 17.562f, 19.140f, 20.857f, + 22.181f, 23.701f, 24.182f, 24.340f, 23.620f, 23.253f, 24.642f, 26.214f, 27.794f, + 29.464f, 32.374f, 33.128f, 31.974f, 30.727f, 29.606f, 29.510f, 29.019f, 29.112f, + 29.412f, 29.369f, 29.004f, 28.734f, 28.779f, 27.769f, 27.558f, 26.582f, 26.182f, + 26.637f, 26.321f, 26.712f, 27.770f, 30.501f, 31.119f, 30.758f, 31.246f, 32.488f, + 33.354f, 33.627f, 33.277f, 32.511f, 31.783f, 29.821f, 28.852f, 26.204f, 22.785f, + 21.058f, 20.689f, 20.169f, 20.305f, 20.720f, 21.632f, 21.372f, 19.485f, 16.402f, + 12.684f, 10.016f, 7.395f, 3.669f, 0.299f, -2.046f, -2.433f, -3.124f, -4.257f, + -3.744f, -2.665f, -0.843f, 1.096f, 4.763f, 5.939f, 7.923f, 8.266f, 8.611f, + 8.914f, 10.228f, 11.350f, 12.026f, 12.213f, 12.541f, 12.896f, 13.041f, 13.607f, + 15.226f, 17.702f, 21.541f, 24.675f, 26.439f, 26.578f, 26.850f, 27.011f, 28.153f, + 29.622f, 30.246f, 30.410f, 29.526f, 28.521f, 28.693f, 28.794f, 30.528f, 33.128f, + 31.055f, 30.834f, 37.560f, 44.374f, 44.921f, 47.591f, 47.390f, 43.123f, 44.225f, + 46.475f, 46.046f, 46.594f, 46.296f, 46.198f, 44.127f, 42.374f, 38.764f, 34.287f, + 33.721f, 32.698f, 31.814f, 30.485f, 29.280f, 27.720f, 27.167f, 28.865f, 30.000f, + 30.666f, 30.251f, 30.617f, 32.282f, 30.483f, 30.005f, 35.460f, 36.785f, 37.200f, + 37.936f, 37.440f, 37.622f, 39.508f, 37.215f, 33.223f, 31.917f, 34.829f, 32.579f, + 30.905f, 28.914f, 26.970f, 25.151f, 24.633f, 22.857f, 19.861f, 17.430f, 15.275f, + 13.606f }, + { -29.534f, -27.853f, -23.839f, -19.951f, -16.130f, -13.515f, -12.028f, -10.682f, -7.216f, + -3.868f, -0.429f, 2.372f, 4.998f, 8.513f, 12.087f, 15.651f, 18.541f, 19.667f, + 16.516f, 14.980f, 18.122f, 15.894f, 14.248f, 15.595f, 17.049f, 18.554f, 20.751f, + 22.353f, 23.742f, 24.410f, 24.901f, 24.066f, 24.065f, 25.418f, 27.152f, 28.563f, + 30.759f, 33.035f, 33.759f, 32.430f, 31.463f, 30.281f, 29.918f, 30.242f, 30.449f, + 30.033f, 29.686f, 29.388f, 29.255f, 29.023f, 28.775f, 27.226f, 27.046f, 26.921f, + 27.222f, 28.041f, 28.629f, 31.070f, 30.447f, 30.889f, 31.533f, 32.311f, 31.879f, + 33.245f, 33.624f, 32.760f, 32.075f, 32.401f, 30.653f, 28.287f, 26.372f, 22.204f, + 19.766f, 19.091f, 18.425f, 18.037f, 17.959f, 18.473f, 19.251f, 15.996f, 13.119f, + 9.789f, 7.110f, 4.675f, 1.484f, -2.369f, -5.508f, -7.503f, -7.303f, -7.689f, + -8.208f, -6.206f, -3.087f, -0.471f, 2.909f, 4.301f, 5.029f, 5.880f, 5.693f, + 5.505f, 7.937f, 9.695f, 10.634f, 10.716f, 11.205f, 11.686f, 12.295f, 12.873f, + 14.868f, 17.831f, 22.845f, 28.835f, 28.132f, 27.267f, 27.281f, 28.047f, 29.539f, + 30.860f, 30.212f, 29.249f, 28.869f, 28.431f, 27.188f, 27.655f, 29.100f, 29.407f, + 28.620f, 28.950f, 31.298f, 37.090f, 37.884f, 45.798f, 43.624f, 43.273f, 46.350f, + 46.312f, 45.433f, 45.356f, 44.001f, 43.452f, 44.025f, 40.745f, 37.069f, 33.332f, + 31.646f, 31.384f, 29.869f, 28.159f, 27.248f, 25.776f, 25.200f, 25.821f, 26.646f, + 28.517f, 29.642f, 29.746f, 31.455f, 30.975f, 30.383f, 33.375f, 35.149f, 35.266f, + 35.894f, 35.212f, 36.423f, 37.348f, 34.492f, 31.588f, 31.558f, 34.236f, 31.701f, + 30.669f, 28.187f, 26.717f, 25.000f, 24.533f, 22.876f, 19.808f, 17.415f, 15.260f, + 13.606f }, + { -29.534f, -27.858f, -23.777f, -19.902f, -16.102f, -13.510f, -12.081f, -10.776f, -6.838f, + -3.218f, 0.070f, 2.788f, 5.617f, 9.120f, 12.469f, 15.796f, 18.842f, 20.134f, + 17.530f, 15.651f, 17.031f, 15.404f, 14.150f, 15.814f, 16.946f, 18.897f, 19.954f, + 22.355f, 23.888f, 24.697f, 25.255f, 24.696f, 25.277f, 26.437f, 27.946f, 29.783f, + 31.495f, 33.914f, 34.648f, 32.637f, 32.004f, 31.073f, 30.646f, 30.844f, 31.388f, + 31.142f, 30.473f, 29.846f, 29.394f, 29.425f, 29.365f, 27.526f, 27.338f, 27.263f, + 28.404f, 29.606f, 31.187f, 31.180f, 32.208f, 32.143f, 33.847f, 32.489f, 32.068f, + 30.946f, 29.678f, 29.299f, 29.226f, 29.793f, 28.795f, 28.643f, 25.099f, 21.969f, + 19.177f, 17.835f, 17.055f, 16.414f, 15.941f, 15.278f, 14.629f, 12.643f, 10.560f, + 7.984f, 5.528f, 3.110f, -0.850f, -5.602f, -8.504f, -10.739f, -11.015f, -13.061f, + -11.410f, -10.020f, -6.514f, -3.274f, -2.799f, -1.130f, 1.203f, 2.623f, 3.976f, + 3.572f, 5.661f, 7.552f, 8.302f, 9.655f, 10.096f, 10.491f, 10.872f, 10.981f, + 13.151f, 16.926f, 24.088f, 29.591f, 28.108f, 26.639f, 26.077f, 26.481f, 28.154f, + 29.715f, 28.533f, 28.517f, 28.358f, 28.132f, 26.711f, 27.158f, 27.733f, 28.211f, + 28.503f, 28.259f, 29.470f, 29.527f, 39.073f, 39.786f, 39.050f, 42.868f, 46.822f, + 46.065f, 44.912f, 45.104f, 43.596f, 43.159f, 42.673f, 39.458f, 34.870f, 30.947f, + 30.065f, 29.471f, 27.717f, 26.519f, 25.097f, 23.652f, 22.891f, 23.220f, 23.422f, + 25.233f, 28.403f, 28.766f, 30.359f, 31.118f, 31.451f, 31.776f, 33.355f, 33.175f, + 34.316f, 33.169f, 34.863f, 34.797f, 32.418f, 30.438f, 30.915f, 33.125f, 30.905f, + 30.357f, 27.525f, 26.390f, 24.860f, 24.421f, 22.868f, 19.761f, 17.399f, 15.244f, + 13.606f }, + { -29.534f, -27.865f, -23.712f, -19.863f, -16.097f, -13.569f, -12.118f, -10.668f, -6.446f, + -2.626f, 0.501f, 3.170f, 6.213f, 9.608f, 12.862f, 15.888f, 19.000f, 19.948f, + 17.478f, 15.943f, 15.701f, 14.913f, 14.702f, 15.883f, 17.413f, 19.059f, 19.790f, + 21.941f, 24.240f, 24.911f, 25.338f, 25.250f, 25.704f, 27.054f, 29.127f, 30.680f, + 32.334f, 34.538f, 35.061f, 33.691f, 32.538f, 32.258f, 31.927f, 31.372f, 32.005f, + 32.032f, 31.441f, 30.297f, 29.658f, 29.365f, 29.264f, 28.848f, 26.861f, 27.143f, + 29.276f, 31.041f, 31.621f, 32.835f, 33.015f, 32.916f, 34.822f, 32.115f, 31.913f, + 31.906f, 28.358f, 27.643f, 27.118f, 26.503f, 26.912f, 27.515f, 23.455f, 20.878f, + 18.494f, 16.505f, 15.583f, 14.740f, 13.918f, 13.072f, 11.975f, 10.365f, 8.374f, + 6.413f, 4.035f, 0.550f, -3.867f, -8.310f, -10.484f, -13.130f, -14.556f, -14.998f, + -15.079f, -12.667f, -10.069f, -6.918f, -6.313f, -5.191f, -2.758f, -0.369f, 1.935f, + 0.709f, 3.734f, 5.846f, 7.459f, 8.111f, 9.383f, 10.028f, 10.453f, 10.034f, + 12.230f, 15.752f, 20.298f, 24.499f, 25.715f, 24.964f, 25.083f, 24.702f, 26.094f, + 26.641f, 26.261f, 26.146f, 26.941f, 26.870f, 26.957f, 27.023f, 26.096f, 26.413f, + 26.515f, 27.235f, 25.130f, 29.055f, 34.161f, 35.293f, 36.853f, 44.137f, 46.377f, + 45.082f, 44.650f, 43.717f, 43.887f, 43.032f, 41.969f, 38.109f, 33.099f, 29.817f, + 29.154f, 27.570f, 25.903f, 24.540f, 22.483f, 21.339f, 20.260f, 21.474f, 22.235f, + 22.149f, 26.188f, 27.286f, 29.188f, 30.557f, 31.729f, 31.040f, 31.377f, 31.067f, + 32.646f, 31.432f, 33.025f, 32.658f, 31.231f, 29.706f, 30.074f, 31.689f, 30.265f, + 29.980f, 27.005f, 26.028f, 24.728f, 24.308f, 22.834f, 19.720f, 17.382f, 15.227f, + 13.606f }, + { -29.534f, -27.871f, -23.644f, -19.827f, -16.099f, -13.641f, -12.061f, -10.280f, -5.999f, + -2.112f, 0.850f, 3.473f, 6.624f, 10.064f, 13.230f, 16.069f, 18.901f, 19.793f, + 17.079f, 16.160f, 15.908f, 15.082f, 15.187f, 15.909f, 17.533f, 18.759f, 19.981f, + 21.813f, 24.062f, 25.170f, 25.447f, 25.722f, 26.287f, 27.769f, 29.436f, 31.591f, + 33.330f, 35.298f, 35.502f, 34.060f, 33.226f, 32.657f, 32.301f, 31.924f, 32.384f, + 32.462f, 31.888f, 30.988f, 30.094f, 29.555f, 29.418f, 29.232f, 27.802f, 28.893f, + 30.850f, 31.538f, 32.708f, 33.553f, 34.923f, 35.139f, 33.695f, 31.271f, 30.187f, + 29.771f, 29.044f, 27.603f, 26.235f, 24.964f, 24.947f, 24.054f, 21.570f, 19.539f, + 17.272f, 15.293f, 14.025f, 13.039f, 11.955f, 11.000f, 9.822f, 8.378f, 6.333f, + 3.927f, 1.269f, -2.368f, -6.429f, -9.731f, -12.792f, -15.168f, -17.660f, -18.760f, + -17.336f, -15.490f, -14.135f, -10.131f, -8.206f, -7.529f, -5.639f, -1.890f, -0.587f, + -0.867f, 1.623f, 4.240f, 5.436f, 6.766f, 8.198f, 10.061f, 11.305f, 11.301f, + 11.837f, 12.916f, 14.434f, 16.606f, 19.863f, 21.806f, 22.411f, 22.090f, 23.884f, + 25.218f, 24.534f, 24.702f, 25.833f, 26.931f, 29.200f, 27.904f, 25.473f, 23.041f, + 20.530f, 23.124f, 23.303f, 26.731f, 34.187f, 37.167f, 40.781f, 45.690f, 45.268f, + 44.007f, 43.669f, 42.814f, 42.729f, 42.772f, 40.009f, 36.729f, 32.511f, 30.627f, + 29.276f, 26.520f, 24.840f, 22.961f, 20.671f, 19.467f, 18.615f, 20.337f, 21.007f, + 19.592f, 23.769f, 25.206f, 27.593f, 29.653f, 30.598f, 30.833f, 29.535f, 29.403f, + 30.863f, 30.238f, 31.164f, 31.083f, 30.399f, 29.188f, 29.428f, 30.305f, 29.804f, + 29.555f, 26.652f, 25.672f, 24.597f, 24.207f, 22.776f, 19.687f, 17.363f, 15.210f, + 13.606f }, + { -29.534f, -27.879f, -23.572f, -19.791f, -16.091f, -13.672f, -11.843f, -9.598f, -5.456f, + -1.653f, 1.156f, 3.726f, 6.861f, 10.455f, 13.457f, 16.282f, 18.566f, 19.899f, + 18.064f, 17.738f, 17.223f, 15.681f, 15.046f, 15.764f, 17.542f, 18.890f, 20.284f, + 22.179f, 23.652f, 25.288f, 25.608f, 26.138f, 26.749f, 28.134f, 30.119f, 32.039f, + 34.373f, 35.903f, 35.839f, 34.203f, 33.751f, 33.061f, 32.456f, 32.271f, 32.748f, + 32.759f, 32.140f, 31.589f, 30.590f, 29.908f, 29.355f, 29.302f, 29.370f, 28.631f, + 31.136f, 30.816f, 32.512f, 34.167f, 37.119f, 34.901f, 33.039f, 30.714f, 30.876f, + 29.373f, 28.406f, 27.020f, 25.663f, 23.086f, 21.256f, 20.509f, 18.527f, 16.614f, + 14.188f, 12.736f, 11.980f, 10.873f, 9.127f, 7.864f, 7.181f, 6.150f, 4.160f, + 1.580f, -1.450f, -4.765f, -7.626f, -11.797f, -14.364f, -14.966f, -19.525f, -20.620f, + -19.364f, -17.872f, -15.890f, -12.894f, -9.424f, -7.728f, -6.113f, -2.680f, -0.794f, + -1.452f, 0.094f, 3.354f, 5.211f, 6.400f, 8.326f, 9.268f, 10.654f, 10.986f, + 10.981f, 11.465f, 12.137f, 14.245f, 16.810f, 18.545f, 19.548f, 20.291f, 21.972f, + 23.260f, 22.952f, 23.202f, 24.049f, 26.192f, 30.234f, 27.817f, 22.736f, 17.233f, + 14.199f, 21.025f, 25.067f, 28.379f, 36.194f, 42.536f, 44.511f, 44.537f, 43.787f, + 42.885f, 42.745f, 42.160f, 41.302f, 40.773f, 37.209f, 35.823f, 32.028f, 30.485f, + 28.659f, 25.978f, 24.584f, 22.128f, 20.053f, 17.998f, 18.779f, 19.478f, 19.376f, + 18.308f, 21.194f, 22.680f, 25.398f, 28.263f, 29.132f, 30.210f, 28.462f, 28.437f, + 29.084f, 29.237f, 29.419f, 29.850f, 29.511f, 28.740f, 29.137f, 29.215f, 29.462f, + 29.105f, 26.424f, 25.349f, 24.459f, 24.124f, 22.700f, 19.661f, 17.343f, 15.193f, + 13.606f }, + { -29.534f, -27.887f, -23.497f, -19.746f, -16.059f, -13.619f, -11.433f, -8.672f, -4.791f, + -1.201f, 1.482f, 4.023f, 7.133f, 10.776f, 13.642f, 16.407f, 18.170f, 19.376f, + 19.419f, 20.288f, 18.798f, 16.026f, 15.033f, 15.451f, 17.588f, 19.025f, 20.643f, + 22.436f, 24.066f, 24.973f, 26.099f, 26.436f, 27.634f, 28.887f, 30.637f, 32.720f, + 35.168f, 36.476f, 36.415f, 34.654f, 34.147f, 33.315f, 32.419f, 32.575f, 33.032f, + 33.238f, 32.651f, 32.583f, 31.397f, 30.222f, 29.838f, 29.838f, 29.088f, 29.374f, + 30.313f, 29.993f, 31.749f, 32.252f, 35.859f, 35.396f, 32.954f, 32.178f, 31.122f, + 28.433f, 26.670f, 25.547f, 24.040f, 21.820f, 19.297f, 17.666f, 16.393f, 13.942f, + 12.351f, 11.133f, 10.099f, 8.759f, 6.025f, 5.136f, 5.085f, 4.070f, 1.916f, + -0.484f, -3.429f, -6.780f, -9.741f, -13.555f, -15.184f, -18.309f, -20.584f, -21.231f, + -19.952f, -19.080f, -17.552f, -13.627f, -9.624f, -7.288f, -5.858f, -3.475f, -2.324f, + -1.289f, -0.453f, 2.838f, 4.950f, 7.183f, 9.591f, 10.720f, 11.496f, 11.883f, + 10.974f, 11.221f, 11.896f, 13.392f, 14.688f, 16.084f, 17.340f, 18.853f, 21.164f, + 21.819f, 21.544f, 22.143f, 22.826f, 24.197f, 27.446f, 28.706f, 18.511f, 11.647f, + 11.431f, 25.490f, 29.204f, 33.303f, 39.531f, 43.995f, 44.481f, 43.828f, 43.254f, + 43.254f, 42.269f, 41.583f, 39.929f, 38.812f, 35.166f, 34.133f, 30.466f, 29.055f, + 28.280f, 25.430f, 24.335f, 21.951f, 19.912f, 18.877f, 19.383f, 18.744f, 18.814f, + 17.958f, 19.017f, 20.332f, 23.352f, 26.427f, 28.319f, 28.939f, 27.925f, 27.731f, + 27.179f, 27.709f, 27.760f, 28.802f, 28.607f, 28.277f, 28.892f, 28.367f, 29.120f, + 28.674f, 26.224f, 25.069f, 24.310f, 24.061f, 22.610f, 19.644f, 17.322f, 15.176f, + 13.606f }, + { -29.534f, -27.896f, -23.420f, -19.690f, -15.991f, -13.458f, -10.839f, -7.599f, -3.996f, + -0.705f, 1.870f, 4.430f, 7.622f, 11.158f, 14.023f, 16.472f, 18.030f, 18.860f, + 19.954f, 21.793f, 20.328f, 16.184f, 15.322f, 15.335f, 17.419f, 19.270f, 20.779f, + 22.449f, 24.428f, 25.177f, 26.289f, 27.034f, 27.200f, 29.060f, 31.176f, 33.130f, + 35.879f, 37.078f, 36.469f, 35.329f, 34.591f, 33.523f, 32.871f, 32.534f, 33.073f, + 33.449f, 32.928f, 33.265f, 32.494f, 31.204f, 30.241f, 29.688f, 28.643f, 28.865f, + 27.502f, 29.129f, 30.525f, 31.107f, 34.524f, 34.612f, 32.924f, 32.113f, 32.884f, + 28.662f, 26.678f, 24.401f, 22.929f, 20.929f, 19.257f, 17.636f, 15.281f, 12.899f, + 11.103f, 9.988f, 8.338f, 6.925f, 5.428f, 3.513f, 2.751f, 1.311f, -1.592f, + -3.139f, -5.479f, -9.444f, -12.677f, -15.005f, -16.878f, -19.555f, -20.833f, -21.359f, + -20.823f, -18.733f, -15.890f, -12.937f, -10.578f, -8.736f, -7.062f, -4.985f, -3.136f, + -0.711f, -0.009f, 2.220f, 4.540f, 7.214f, 9.143f, 10.621f, 12.146f, 12.948f, + 11.688f, 11.655f, 12.433f, 12.730f, 13.343f, 14.242f, 15.334f, 17.256f, 19.169f, + 20.116f, 21.178f, 22.784f, 22.319f, 22.740f, 24.742f, 22.974f, 13.159f, 9.244f, + 18.650f, 31.255f, 35.799f, 38.473f, 40.470f, 42.733f, 44.752f, 43.810f, 40.494f, + 41.763f, 42.273f, 41.317f, 38.639f, 36.707f, 32.941f, 31.339f, 29.090f, 28.342f, + 27.518f, 24.964f, 23.441f, 21.279f, 19.576f, 20.005f, 19.513f, 18.869f, 18.589f, + 17.872f, 17.835f, 18.747f, 21.557f, 24.381f, 27.109f, 27.757f, 26.790f, 26.739f, + 25.502f, 25.747f, 26.211f, 27.858f, 27.800f, 27.722f, 28.234f, 27.549f, 28.662f, + 28.307f, 25.942f, 24.823f, 24.147f, 24.014f, 22.512f, 19.633f, 17.299f, 15.158f, + 13.606f }, + { -29.534f, -27.906f, -23.341f, -19.616f, -15.881f, -13.186f, -10.107f, -6.489f, -3.093f, + -0.140f, 2.314f, 4.903f, 8.251f, 11.696f, 14.601f, 16.579f, 18.223f, 20.262f, + 21.149f, 22.179f, 21.156f, 16.557f, 15.614f, 15.593f, 17.354f, 19.420f, 21.126f, + 22.571f, 24.233f, 26.056f, 26.273f, 27.719f, 28.079f, 29.140f, 31.160f, 33.292f, + 36.201f, 37.750f, 36.552f, 35.593f, 35.068f, 34.374f, 33.208f, 32.565f, 32.848f, + 33.327f, 33.375f, 33.432f, 34.127f, 32.608f, 31.928f, 30.254f, 29.254f, 28.273f, + 27.679f, 28.566f, 29.572f, 28.943f, 34.105f, 34.527f, 32.527f, 30.796f, 31.022f, + 28.443f, 25.617f, 24.309f, 22.194f, 19.435f, 17.732f, 16.229f, 13.829f, 12.140f, + 9.965f, 8.741f, 7.307f, 5.328f, 3.908f, 2.150f, 1.026f, -1.122f, -4.390f, + -5.625f, -6.965f, -10.433f, -14.581f, -15.899f, -17.661f, -18.931f, -20.582f, -21.303f, + -20.906f, -18.880f, -15.666f, -12.359f, -10.656f, -8.876f, -7.504f, -6.115f, -4.669f, + -1.813f, -0.226f, 1.500f, 3.913f, 7.607f, 8.626f, 9.609f, 11.097f, 12.399f, + 12.617f, 12.698f, 13.283f, 13.216f, 13.357f, 13.686f, 14.486f, 15.552f, 16.913f, + 18.028f, 19.708f, 21.249f, 22.278f, 21.741f, 21.601f, 14.446f, 9.019f, 16.803f, + 27.551f, 35.626f, 39.142f, 39.545f, 40.758f, 42.225f, 43.346f, 42.330f, 39.958f, + 38.406f, 41.328f, 39.103f, 38.413f, 33.114f, 31.034f, 29.524f, 28.027f, 27.903f, + 26.798f, 24.514f, 22.697f, 20.439f, 19.280f, 19.810f, 19.017f, 19.044f, 18.311f, + 18.137f, 17.417f, 17.957f, 20.311f, 22.889f, 25.180f, 26.797f, 25.140f, 25.454f, + 24.385f, 24.068f, 24.864f, 26.858f, 26.994f, 27.029f, 27.053f, 26.650f, 28.038f, + 28.028f, 25.508f, 24.594f, 23.975f, 23.969f, 22.407f, 19.628f, 17.275f, 15.140f, + 13.606f }, + { -29.534f, -27.916f, -23.261f, -19.522f, -15.728f, -12.823f, -9.311f, -5.442f, -2.135f, + 0.489f, 2.769f, 5.311f, 8.736f, 12.255f, 15.064f, 16.735f, 18.428f, 22.714f, + 23.043f, 22.456f, 21.201f, 17.175f, 16.108f, 16.043f, 17.720f, 19.423f, 21.232f, + 22.521f, 24.222f, 26.095f, 27.169f, 27.659f, 28.309f, 29.469f, 30.751f, 33.734f, + 35.811f, 37.852f, 37.140f, 35.937f, 35.116f, 34.166f, 33.218f, 33.014f, 32.906f, + 33.301f, 33.634f, 33.717f, 35.063f, 34.837f, 34.104f, 32.397f, 30.717f, 29.730f, + 27.782f, 26.017f, 27.859f, 27.626f, 33.892f, 33.867f, 32.289f, 31.145f, 29.856f, + 28.733f, 26.239f, 23.783f, 20.625f, 18.333f, 16.316f, 14.651f, 12.508f, 11.189f, + 9.140f, 7.106f, 6.684f, 4.455f, 2.717f, 1.177f, -0.303f, -0.690f, -5.234f, + -7.556f, -7.818f, -11.187f, -14.893f, -16.502f, -18.094f, -19.400f, -20.283f, -19.783f, + -19.028f, -17.853f, -14.730f, -11.730f, -10.546f, -9.884f, -9.317f, -8.577f, -5.203f, + -3.052f, -1.302f, 0.161f, 2.957f, 5.523f, 7.084f, 8.815f, 9.907f, 11.193f, + 12.194f, 12.449f, 13.656f, 14.913f, 14.794f, 14.487f, 14.763f, 14.870f, 15.404f, + 15.743f, 17.209f, 19.677f, 21.221f, 21.498f, 18.231f, 9.542f, 9.130f, 19.955f, + 30.870f, 37.645f, 38.886f, 39.648f, 40.268f, 40.967f, 41.084f, 41.153f, 38.556f, + 36.509f, 39.493f, 39.401f, 35.937f, 32.465f, 31.923f, 29.809f, 27.672f, 26.803f, + 26.051f, 24.171f, 21.834f, 20.706f, 19.368f, 18.921f, 17.680f, 18.266f, 18.450f, + 18.282f, 17.783f, 17.704f, 19.611f, 21.791f, 23.652f, 25.774f, 24.482f, 24.184f, + 23.380f, 22.890f, 23.754f, 25.647f, 26.068f, 26.207f, 25.669f, 25.749f, 27.288f, + 27.814f, 24.916f, 24.357f, 23.797f, 23.911f, 22.298f, 19.628f, 17.250f, 15.121f, + 13.606f }, + { -29.534f, -27.926f, -23.182f, -19.407f, -15.535f, -12.400f, -8.532f, -4.521f, -1.195f, + 1.147f, 3.181f, 5.554f, 8.879f, 12.601f, 15.201f, 16.882f, 18.527f, 23.159f, + 22.930f, 22.022f, 21.169f, 17.725f, 16.344f, 16.580f, 18.034f, 19.782f, 21.399f, + 22.840f, 24.507f, 26.201f, 27.746f, 28.079f, 28.904f, 29.556f, 31.618f, 32.843f, + 36.510f, 37.953f, 36.986f, 37.058f, 35.666f, 34.917f, 33.871f, 33.244f, 33.018f, + 33.258f, 33.626f, 34.059f, 35.263f, 35.528f, 35.035f, 33.502f, 31.445f, 30.270f, + 27.968f, 27.418f, 27.202f, 28.673f, 33.448f, 34.987f, 34.296f, 31.267f, 30.281f, + 28.819f, 26.242f, 22.380f, 18.644f, 17.472f, 15.550f, 14.109f, 11.134f, 9.582f, + 7.587f, 7.024f, 4.659f, 2.882f, 1.103f, 0.167f, -1.707f, -2.549f, -4.977f, + -9.657f, -12.094f, -13.183f, -15.095f, -16.427f, -17.525f, -18.054f, -18.837f, -18.437f, + -17.391f, -16.123f, -13.774f, -11.500f, -10.624f, -11.120f, -11.345f, -8.675f, -6.108f, + -3.976f, -2.305f, -0.924f, 1.255f, 3.654f, 5.393f, 7.304f, 8.755f, 10.156f, + 11.361f, 12.362f, 13.576f, 15.147f, 15.399f, 14.914f, 14.414f, 13.629f, 13.805f, + 14.514f, 15.352f, 17.707f, 20.579f, 20.898f, 13.858f, 7.480f, 5.654f, 16.864f, + 29.289f, 37.017f, 38.538f, 39.785f, 39.887f, 40.649f, 39.782f, 39.567f, 36.894f, + 34.317f, 37.340f, 36.162f, 33.961f, 33.543f, 32.377f, 29.968f, 27.334f, 25.826f, + 25.177f, 23.413f, 21.484f, 21.033f, 19.674f, 18.067f, 16.416f, 16.530f, 18.547f, + 18.202f, 17.929f, 17.735f, 18.865f, 20.431f, 22.584f, 24.876f, 24.746f, 23.079f, + 22.188f, 21.948f, 22.882f, 24.296f, 25.076f, 25.285f, 24.466f, 24.979f, 26.508f, + 27.589f, 24.233f, 24.092f, 23.615f, 23.822f, 22.183f, 19.629f, 17.224f, 15.103f, + 13.606f }, + { -29.534f, -27.938f, -23.103f, -19.272f, -15.312f, -11.958f, -7.839f, -3.755f, -0.360f, + 1.775f, 3.518f, 5.641f, 8.784f, 12.710f, 15.184f, 16.983f, 18.810f, 21.506f, + 20.989f, 20.584f, 20.999f, 18.122f, 16.417f, 17.239f, 18.210f, 19.866f, 21.644f, + 23.278f, 24.795f, 27.067f, 28.268f, 29.008f, 28.988f, 29.928f, 31.466f, 32.873f, + 34.366f, 37.307f, 38.243f, 37.291f, 36.728f, 35.451f, 34.242f, 33.561f, 33.457f, + 33.211f, 33.229f, 33.478f, 34.801f, 35.385f, 34.514f, 33.136f, 31.353f, 29.792f, + 28.004f, 27.510f, 29.114f, 29.470f, 33.060f, 35.622f, 33.209f, 31.242f, 30.441f, + 28.941f, 25.873f, 21.264f, 16.690f, 15.893f, 14.360f, 13.348f, 10.621f, 7.747f, + 4.059f, 6.725f, 3.043f, 1.515f, -0.081f, -2.330f, -2.670f, -4.212f, -7.489f, + -8.873f, -13.589f, -15.855f, -15.602f, -16.321f, -16.492f, -16.417f, -17.178f, -16.259f, + -15.482f, -14.365f, -13.083f, -11.617f, -11.045f, -11.623f, -10.600f, -8.248f, -6.620f, + -5.493f, -3.270f, -2.499f, -0.043f, 2.469f, 3.808f, 6.605f, 8.437f, 9.749f, + 10.616f, 12.525f, 13.519f, 13.799f, 13.787f, 13.969f, 13.690f, 12.950f, 12.938f, + 14.474f, 15.000f, 15.835f, 18.165f, 19.342f, 11.348f, 6.977f, 1.286f, 9.732f, + 24.622f, 34.466f, 38.207f, 40.044f, 39.971f, 39.347f, 39.535f, 37.944f, 36.039f, + 32.271f, 32.466f, 33.107f, 33.795f, 33.731f, 31.988f, 29.884f, 26.140f, 23.990f, + 24.012f, 22.101f, 21.045f, 19.963f, 19.246f, 17.422f, 15.598f, 15.477f, 18.502f, + 18.171f, 17.715f, 17.541f, 18.272f, 19.308f, 21.524f, 23.858f, 24.197f, 22.156f, + 21.102f, 21.056f, 22.161f, 23.060f, 24.124f, 24.263f, 23.520f, 24.345f, 25.790f, + 27.267f, 23.562f, 23.787f, 23.429f, 23.687f, 22.063f, 19.632f, 17.196f, 15.084f, + 13.606f }, + { -29.534f, -27.949f, -23.028f, -19.121f, -15.070f, -11.533f, -7.275f, -3.142f, 0.294f, + 2.298f, 3.762f, 5.662f, 8.732f, 12.756f, 15.259f, 16.989f, 19.167f, 20.510f, + 20.423f, 19.645f, 20.472f, 18.480f, 16.964f, 17.791f, 18.666f, 20.276f, 21.991f, + 23.522f, 25.386f, 27.601f, 28.627f, 29.495f, 30.188f, 30.813f, 31.976f, 33.563f, + 35.466f, 35.558f, 36.682f, 37.508f, 37.135f, 36.809f, 35.280f, 34.144f, 33.321f, + 33.257f, 33.319f, 33.704f, 34.478f, 34.636f, 34.116f, 32.397f, 31.284f, 29.443f, + 28.143f, 27.013f, 27.752f, 29.566f, 31.017f, 35.513f, 36.054f, 34.344f, 32.366f, + 29.259f, 25.634f, 21.118f, 18.589f, 15.084f, 12.553f, 12.236f, 10.384f, 5.764f, + 3.254f, -0.041f, 1.663f, -0.146f, -2.396f, -4.645f, -5.347f, -5.577f, -6.384f, + -8.392f, -11.365f, -15.325f, -15.123f, -15.092f, -14.994f, -13.950f, -13.702f, -11.885f, + -11.529f, -12.869f, -12.702f, -11.562f, -11.173f, -10.885f, -9.767f, -8.451f, -7.307f, + -5.958f, -4.551f, -3.146f, -0.038f, 1.947f, 3.956f, 5.522f, 7.436f, 8.500f, + 9.032f, 10.535f, 11.873f, 12.526f, 13.033f, 13.221f, 13.379f, 13.166f, 12.697f, + 14.148f, 14.514f, 15.292f, 16.834f, 16.598f, 10.659f, 6.757f, 1.395f, 5.655f, + 16.483f, 30.479f, 36.429f, 39.284f, 38.778f, 38.116f, 38.473f, 35.717f, 34.973f, + 32.970f, 31.186f, 32.543f, 32.628f, 32.703f, 31.206f, 27.660f, 23.557f, 22.102f, + 22.557f, 21.479f, 19.944f, 18.801f, 17.963f, 16.702f, 15.289f, 15.465f, 18.459f, + 18.188f, 17.720f, 17.417f, 18.128f, 18.370f, 20.550f, 22.339f, 22.661f, 21.328f, + 20.158f, 20.065f, 21.326f, 22.093f, 23.166f, 23.159f, 22.636f, 23.723f, 25.182f, + 26.800f, 22.999f, 23.439f, 23.237f, 23.496f, 21.935f, 19.634f, 17.168f, 15.065f, + 13.606f }, + { -29.534f, -27.961f, -22.956f, -18.956f, -14.821f, -11.152f, -6.854f, -2.664f, 0.725f, 2.638f, + 3.891f, 5.683f, 8.864f, 12.793f, 15.253f, 16.825f, 18.966f, 20.803f, 21.445f, 19.979f, + 20.365f, 19.236f, 17.333f, 18.271f, 19.375f, 20.764f, 22.492f, 23.920f, 25.774f, 27.776f, + 28.984f, 29.814f, 30.773f, 31.589f, 32.798f, 34.030f, 36.004f, 37.317f, 36.174f, 35.986f, + 38.018f, 38.196f, 37.196f, 35.409f, 34.328f, 33.372f, 33.204f, 33.549f, 33.603f, 33.264f, + 33.317f, 32.678f, 31.019f, 29.619f, 28.161f, 26.334f, 26.137f, 28.603f, 30.733f, 32.035f, + 34.574f, 35.394f, 31.757f, 29.125f, 26.711f, 19.442f, 18.437f, 14.780f, 10.968f, 10.291f, + 9.964f, 5.686f, 2.002f, -0.522f, -2.655f, -3.096f, -4.585f, -4.673f, -7.226f, -9.234f, + -9.328f, -12.226f, -11.672f, -10.940f, -12.566f, -13.284f, -12.341f, -9.406f, -6.610f, -7.340f, + -6.690f, -11.415f, -11.423f, -10.876f, -10.877f, -10.812f, -10.341f, -9.501f, -8.511f, -7.478f, + -5.989f, -2.586f, -0.172f, 1.989f, 3.322f, 4.712f, 6.216f, 7.703f, 8.344f, 9.142f, + 10.783f, 11.327f, 11.988f, 12.708f, 13.082f, 13.127f, 12.463f, 13.626f, 15.046f, 16.219f, + 16.653f, 14.804f, 12.453f, 8.888f, 5.161f, 5.671f, 12.443f, 27.555f, 35.551f, 40.028f, + 38.296f, 37.431f, 33.713f, 30.903f, 33.248f, 32.149f, 30.877f, 30.868f, 31.076f, 30.726f, + 29.283f, 25.338f, 21.069f, 20.400f, 20.691f, 20.446f, 19.291f, 18.589f, 16.656f, 15.875f, + 15.408f, 15.954f, 18.097f, 17.648f, 17.735f, 18.036f, 18.038f, 17.625f, 19.620f, 21.021f, + 21.217f, 20.225f, 19.223f, 18.931f, 20.259f, 21.322f, 22.082f, 22.047f, 21.664f, 23.020f, + 24.685f, 26.210f, 22.593f, 23.058f, 23.034f, 23.247f, 21.798f, 19.634f, 17.137f, 15.045f, + 13.606f }, + { -29.534f, -27.974f, -22.890f, -18.785f, -14.578f, -10.827f, -6.558f, -2.305f, 0.938f, + 2.740f, 3.869f, 5.694f, 9.044f, 12.622f, 14.723f, 16.467f, 18.208f, 20.753f, + 21.808f, 20.839f, 20.784f, 20.986f, 17.658f, 18.415f, 19.949f, 21.132f, 22.732f, + 24.372f, 26.137f, 27.775f, 28.907f, 30.247f, 31.697f, 32.448f, 33.640f, 34.610f, + 35.569f, 37.032f, 39.020f, 38.414f, 37.602f, 38.913f, 39.401f, 37.492f, 35.496f, + 34.290f, 33.655f, 32.996f, 32.863f, 33.250f, 32.979f, 31.983f, 31.399f, 29.282f, + 27.799f, 26.327f, 25.710f, 25.333f, 27.185f, 30.251f, 30.214f, 28.887f, 28.155f, + 28.342f, 26.103f, 20.967f, 15.193f, 14.073f, 10.393f, 7.793f, 7.253f, 5.958f, + 3.090f, 1.048f, -5.203f, -7.980f, -7.079f, -6.085f, -8.684f, -10.049f, -12.651f, + -13.808f, -11.391f, -11.023f, -13.173f, -14.782f, -11.881f, -8.983f, -8.357f, -8.251f, + -9.817f, -12.472f, -10.932f, -11.434f, -11.722f, -11.460f, -11.451f, -10.559f, -9.863f, + -8.283f, -5.324f, -2.019f, -0.617f, 0.954f, 2.179f, 3.651f, 5.088f, 6.592f, + 7.460f, 7.925f, 9.543f, 10.155f, 10.947f, 11.228f, 12.255f, 12.857f, 13.077f, + 13.325f, 14.561f, 15.773f, 16.214f, 15.258f, 16.110f, 11.527f, 7.537f, 6.814f, + 15.178f, 29.386f, 36.680f, 39.885f, 38.505f, 36.454f, 30.448f, 29.434f, 32.364f, + 30.976f, 29.128f, 28.662f, 29.717f, 28.436f, 27.298f, 24.603f, 21.752f, 19.331f, + 19.581f, 19.388f, 18.506f, 17.644f, 15.546f, 15.179f, 15.988f, 16.453f, 17.598f, + 17.140f, 17.631f, 17.970f, 17.548f, 17.566f, 18.711f, 20.313f, 19.931f, 18.703f, + 18.483f, 17.921f, 19.281f, 20.608f, 20.910f, 21.007f, 20.679f, 22.283f, 24.270f, + 25.578f, 22.328f, 22.666f, 22.817f, 22.948f, 21.652f, 19.631f, 17.105f, 15.026f, + 13.606f }, + { -29.534f, -27.987f, -22.830f, -18.615f, -14.353f, -10.557f, -6.357f, -2.052f, 0.979f, + 2.602f, 3.667f, 5.633f, 9.040f, 12.119f, 13.627f, 15.963f, 17.762f, 20.302f, + 21.564f, 21.542f, 20.688f, 22.637f, 19.213f, 18.117f, 19.256f, 21.245f, 22.813f, + 24.642f, 26.458f, 28.060f, 29.009f, 30.428f, 32.286f, 33.468f, 34.548f, 35.412f, + 36.125f, 37.019f, 38.750f, 39.577f, 40.460f, 39.546f, 40.035f, 40.313f, 37.691f, + 35.281f, 34.236f, 33.291f, 33.114f, 33.167f, 32.943f, 31.795f, 31.038f, 29.889f, + 28.067f, 27.055f, 25.914f, 24.551f, 24.263f, 25.052f, 28.194f, 26.734f, 25.688f, + 24.140f, 20.004f, 15.112f, 11.071f, 11.525f, 10.160f, 4.655f, 4.730f, 5.589f, + 4.034f, 0.528f, -9.399f, -9.057f, -11.342f, -10.171f, -10.246f, -11.045f, -11.682f, + -13.169f, -14.031f, -12.946f, -13.498f, -14.663f, -14.623f, -12.763f, -12.163f, -12.372f, + -11.860f, -13.023f, -12.620f, -12.937f, -12.507f, -12.287f, -11.882f, -11.292f, -10.109f, + -7.715f, -5.758f, -3.350f, -1.318f, -0.539f, 1.076f, 2.900f, 4.607f, 5.453f, + 6.456f, 7.636f, 8.622f, 9.392f, 9.938f, 10.070f, 11.684f, 12.576f, 12.683f, + 12.814f, 13.856f, 15.124f, 15.500f, 15.533f, 18.877f, 14.373f, 9.980f, 6.975f, + 14.589f, 28.515f, 37.041f, 38.985f, 38.510f, 35.772f, 28.393f, 28.491f, 29.301f, + 29.374f, 26.920f, 27.505f, 28.115f, 25.988f, 24.798f, 24.750f, 23.322f, 18.844f, + 18.303f, 18.547f, 17.406f, 16.319f, 15.324f, 14.825f, 15.931f, 16.462f, 17.312f, + 16.460f, 16.743f, 16.842f, 17.264f, 17.381f, 18.130f, 19.436f, 18.624f, 17.337f, + 17.852f, 17.225f, 18.675f, 19.889f, 19.845f, 20.038f, 19.852f, 21.624f, 23.889f, + 24.998f, 22.138f, 22.289f, 22.586f, 22.614f, 21.497f, 19.623f, 17.071f, 15.006f, + 13.606f }, + { -29.534f, -28.001f, -22.779f, -18.453f, -14.153f, -10.330f, -6.216f, -1.902f, 0.910f, + 2.289f, 3.304f, 5.464f, 8.796f, 11.531f, 12.582f, 15.426f, 18.006f, 20.663f, + 21.889f, 21.635f, 20.390f, 22.862f, 21.672f, 19.553f, 19.298f, 20.047f, 22.604f, + 24.483f, 26.472f, 28.386f, 29.427f, 30.954f, 32.603f, 34.001f, 35.470f, 36.379f, + 36.937f, 37.740f, 38.452f, 39.735f, 40.121f, 42.287f, 41.385f, 40.972f, 39.963f, + 37.990f, 35.138f, 33.900f, 33.436f, 33.210f, 34.210f, 32.260f, 31.245f, 30.229f, + 29.520f, 28.297f, 26.938f, 24.928f, 23.110f, 22.302f, 23.908f, 24.618f, 23.923f, + 22.382f, 19.006f, 15.017f, 12.455f, 9.544f, 7.559f, 4.251f, 0.996f, 1.758f, + 1.971f, -3.298f, -8.223f, -9.677f, -11.470f, -14.336f, -13.239f, -12.221f, -11.387f, + -11.259f, -13.854f, -14.459f, -15.470f, -16.077f, -16.724f, -16.437f, -16.292f, -14.464f, + -12.084f, -13.583f, -14.285f, -14.064f, -13.161f, -13.121f, -12.676f, -11.660f, -10.516f, + -9.198f, -6.735f, -4.579f, -2.907f, -1.533f, -0.176f, 1.800f, 3.059f, 4.283f, + 5.635f, 7.188f, 8.645f, 9.505f, 9.243f, 9.700f, 11.500f, 12.528f, 12.594f, + 12.975f, 14.083f, 16.041f, 16.305f, 16.326f, 17.496f, 15.483f, 12.808f, 17.308f, + 20.881f, 33.139f, 36.927f, 37.378f, 37.691f, 36.097f, 27.341f, 25.597f, 24.510f, + 27.059f, 24.625f, 25.371f, 25.093f, 23.263f, 23.131f, 22.831f, 21.188f, 17.991f, + 17.088f, 17.466f, 17.359f, 16.038f, 15.533f, 15.194f, 15.795f, 15.672f, 16.828f, + 15.455f, 16.032f, 16.576f, 17.422f, 16.817f, 18.074f, 18.287f, 17.561f, 16.605f, + 16.974f, 16.696f, 18.151f, 19.144f, 19.013f, 19.095f, 19.220f, 21.063f, 23.487f, + 24.520f, 21.942f, 21.950f, 22.345f, 22.264f, 21.338f, 19.610f, 17.035f, 14.987f, + 13.606f }, + { -29.534f, -28.015f, -22.736f, -18.308f, -13.983f, -10.130f, -6.109f, -1.849f, 0.784f, + 1.916f, 2.870f, 5.218f, 8.471f, 11.252f, 12.264f, 15.101f, 18.355f, 21.524f, + 22.462f, 21.064f, 21.026f, 23.108f, 23.292f, 22.119f, 21.867f, 20.540f, 22.804f, + 24.767f, 26.622f, 28.761f, 30.237f, 31.700f, 33.080f, 34.192f, 36.120f, 37.358f, + 38.088f, 38.722f, 39.014f, 39.442f, 40.163f, 41.602f, 43.548f, 43.267f, 41.743f, + 39.174f, 37.844f, 35.388f, 33.799f, 32.710f, 33.728f, 32.260f, 31.410f, 30.604f, + 30.034f, 29.659f, 29.109f, 25.612f, 23.124f, 22.265f, 21.191f, 19.295f, 18.744f, + 18.097f, 15.585f, 11.892f, 9.064f, 5.901f, 3.615f, 3.179f, 1.165f, -1.619f, + -3.881f, -8.901f, -10.352f, -10.872f, -11.560f, -12.395f, -13.288f, -14.001f, -11.897f, + -12.184f, -15.458f, -15.702f, -18.367f, -19.163f, -19.256f, -18.277f, -17.536f, -16.564f, + -14.069f, -13.704f, -14.430f, -13.163f, -11.621f, -12.521f, -13.194f, -12.908f, -11.676f, + -10.065f, -7.791f, -5.126f, -3.892f, -2.426f, -1.050f, 0.291f, 2.337f, 3.523f, + 5.339f, 6.409f, 8.002f, 9.187f, 9.205f, 9.495f, 10.353f, 11.712f, 13.301f, + 14.219f, 13.473f, 13.579f, 16.883f, 17.302f, 16.770f, 15.698f, 14.292f, 27.906f, + 26.707f, 32.900f, 35.977f, 36.522f, 36.716f, 35.371f, 27.678f, 22.512f, 21.533f, + 25.829f, 23.296f, 23.718f, 23.794f, 22.832f, 21.303f, 20.435f, 19.671f, 17.348f, + 16.634f, 16.804f, 17.422f, 16.648f, 15.349f, 16.471f, 15.834f, 15.072f, 15.970f, + 15.009f, 16.029f, 17.028f, 17.535f, 16.827f, 18.217f, 17.488f, 16.603f, 16.215f, + 16.058f, 16.207f, 17.301f, 18.348f, 18.338f, 18.197f, 18.663f, 20.490f, 23.014f, + 24.121f, 21.677f, 21.659f, 22.099f, 21.918f, 21.176f, 19.590f, 16.997f, 14.967f, + 13.606f }, + { -29.534f, -28.029f, -22.703f, -18.185f, -13.847f, -9.944f, -6.029f, -1.889f, 0.622f, + 1.602f, 2.499f, 4.975f, 8.253f, 11.347f, 12.672f, 15.260f, 18.391f, 21.790f, + 23.161f, 20.783f, 21.722f, 24.116f, 23.286f, 22.228f, 22.993f, 22.804f, 23.695f, + 25.782f, 27.260f, 29.226f, 30.959f, 32.493f, 33.718f, 34.913f, 36.743f, 38.185f, + 39.207f, 39.741f, 39.735f, 39.921f, 40.615f, 42.232f, 43.643f, 44.702f, 44.549f, + 42.333f, 39.551f, 37.417f, 35.463f, 33.316f, 33.173f, 32.156f, 32.228f, 31.018f, + 30.456f, 29.746f, 29.401f, 27.337f, 24.162f, 22.378f, 21.063f, 18.321f, 17.558f, + 15.416f, 13.053f, 10.874f, 8.282f, 5.563f, 3.230f, 0.277f, -1.184f, -4.876f, + -7.920f, -10.708f, -11.831f, -10.077f, -10.743f, -15.370f, -16.181f, -14.547f, -16.749f, + -13.597f, -16.573f, -16.335f, -18.226f, -20.154f, -20.437f, -18.512f, -18.401f, -17.429f, + -16.410f, -15.725f, -15.754f, -13.252f, -11.177f, -12.835f, -13.375f, -12.488f, -11.531f, + -7.793f, -4.444f, -3.891f, -4.673f, -3.533f, -1.604f, 0.055f, 1.846f, 2.844f, + 4.312f, 5.411f, 6.952f, 8.507f, 10.308f, 10.923f, 11.289f, 13.007f, 13.941f, + 12.667f, 10.781f, 13.477f, 16.521f, 17.056f, 16.446f, 15.961f, 15.355f, 24.295f, + 24.730f, 32.362f, 35.371f, 36.234f, 34.646f, 33.528f, 29.121f, 20.609f, 20.391f, + 25.691f, 21.664f, 22.318f, 22.490f, 20.769f, 19.478f, 17.879f, 18.218f, 16.766f, + 16.112f, 16.249f, 16.830f, 16.091f, 15.472f, 17.211f, 16.123f, 15.153f, 14.830f, + 14.503f, 15.710f, 17.237f, 17.690f, 17.295f, 18.053f, 16.774f, 15.675f, 15.790f, + 15.456f, 15.730f, 16.271f, 17.501f, 17.656f, 17.413f, 18.068f, 19.790f, 22.451f, + 23.732f, 21.329f, 21.404f, 21.850f, 21.597f, 21.016f, 19.564f, 16.956f, 14.947f, + 13.606f }, + { -29.534f, -28.043f, -22.681f, -18.092f, -13.746f, -9.765f, -5.985f, -2.008f, 0.415f, + 1.425f, 2.302f, 4.813f, 8.194f, 11.489f, 13.177f, 15.800f, 18.297f, 21.572f, + 24.514f, 21.450f, 21.411f, 23.912f, 23.221f, 21.717f, 22.679f, 23.599f, 25.008f, + 26.671f, 28.067f, 29.875f, 31.634f, 32.898f, 34.231f, 35.658f, 37.457f, 39.003f, + 40.169f, 40.902f, 41.184f, 40.892f, 40.737f, 42.383f, 44.048f, 45.406f, 45.450f, + 43.888f, 41.659f, 39.526f, 36.999f, 34.632f, 33.085f, 32.178f, 31.103f, 29.807f, + 29.439f, 28.915f, 28.909f, 28.835f, 25.332f, 22.349f, 20.392f, 18.110f, 16.659f, + 14.273f, 12.009f, 10.714f, 8.808f, 5.544f, 1.769f, -1.764f, -4.036f, -6.365f, + -9.594f, -10.772f, -10.537f, -12.240f, -15.556f, -18.885f, -18.815f, -16.822f, -15.318f, + -13.424f, -14.931f, -18.736f, -20.346f, -18.771f, -19.232f, -17.751f, -16.910f, -15.285f, + -16.299f, -12.138f, -15.343f, -15.407f, -13.815f, -13.371f, -12.716f, -11.802f, -9.737f, + -4.041f, -3.994f, -4.914f, -5.454f, -4.005f, -1.779f, 0.014f, 0.960f, 2.606f, + 3.980f, 4.885f, 6.321f, 8.654f, 10.523f, 10.530f, 11.416f, 11.606f, 11.576f, + 12.159f, 13.322f, 14.796f, 17.320f, 17.542f, 20.302f, 20.325f, 17.920f, 19.447f, + 23.257f, 28.885f, 35.700f, 35.653f, 33.882f, 30.682f, 26.731f, 20.152f, 16.699f, + 21.651f, 19.705f, 21.078f, 21.264f, 18.545f, 15.996f, 16.039f, 16.079f, 15.905f, + 15.788f, 15.684f, 15.711f, 14.434f, 15.331f, 16.207f, 15.537f, 14.036f, 13.858f, + 13.708f, 15.205f, 17.406f, 17.259f, 17.671f, 17.548f, 15.743f, 14.992f, 15.254f, + 14.892f, 15.114f, 15.423f, 16.604f, 16.887f, 16.748f, 17.447f, 18.993f, 21.816f, + 23.282f, 20.924f, 21.159f, 21.602f, 21.310f, 20.863f, 19.529f, 16.913f, 14.927f, + 13.606f }, + { -29.534f, -28.058f, -22.670f, -18.031f, -13.679f, -9.596f, -5.997f, -2.195f, 0.148f, + 1.398f, 2.318f, 4.775f, 8.228f, 11.407f, 13.232f, 16.110f, 18.117f, 21.455f, + 25.728f, 22.263f, 20.929f, 22.397f, 24.382f, 22.630f, 23.363f, 24.145f, 26.054f, + 27.431f, 28.868f, 30.625f, 32.027f, 33.201f, 34.575f, 36.465f, 38.248f, 39.957f, + 41.298f, 42.273f, 42.524f, 42.095f, 41.815f, 42.613f, 43.471f, 44.921f, 45.874f, + 46.218f, 43.924f, 40.580f, 38.213f, 35.997f, 33.627f, 31.987f, 30.092f, 28.573f, + 27.146f, 26.522f, 26.461f, 25.918f, 24.203f, 21.635f, 19.567f, 17.595f, 15.215f, + 12.853f, 10.037f, 8.347f, 5.921f, 2.882f, -0.504f, -4.500f, -4.025f, -6.721f, + -10.140f, -11.451f, -10.280f, -13.711f, -17.063f, -17.190f, -18.878f, -18.165f, -18.540f, + -19.301f, -17.204f, -20.382f, -19.732f, -18.800f, -19.140f, -18.337f, -18.877f, -14.724f, + -14.050f, -15.821f, -16.531f, -16.509f, -16.085f, -14.984f, -13.229f, -10.916f, -7.740f, + -6.645f, -5.010f, -4.549f, -4.028f, -3.396f, -2.742f, -0.934f, 0.268f, 2.089f, + 3.506f, 5.429f, 7.074f, 7.837f, 8.445f, 7.943f, 8.790f, 9.821f, 11.368f, + 14.383f, 17.860f, 19.593f, 19.290f, 20.190f, 20.915f, 23.566f, 27.636f, 24.190f, + 25.229f, 29.579f, 35.006f, 35.648f, 32.134f, 28.318f, 24.576f, 19.461f, 17.437f, + 17.655f, 17.423f, 19.790f, 19.895f, 17.004f, 13.989f, 14.288f, 14.175f, 13.928f, + 14.684f, 15.231f, 15.383f, 13.293f, 14.440f, 15.253f, 13.752f, 12.637f, 13.963f, + 13.918f, 14.955f, 17.469f, 16.189f, 17.718f, 16.862f, 14.696f, 14.334f, 14.508f, + 14.083f, 14.322f, 14.709f, 15.621f, 16.049f, 16.098f, 16.874f, 18.255f, 21.146f, + 22.738f, 20.521f, 20.889f, 21.352f, 21.064f, 20.720f, 19.485f, 16.866f, 14.907f, + 13.606f }, + { -29.534f, -28.073f, -22.671f, -18.006f, -13.643f, -9.446f, -6.085f, -2.434f, -0.176f, + 1.480f, 2.512f, 4.863f, 8.291f, 11.179f, 12.853f, 15.685f, 17.796f, 21.503f, + 25.818f, 22.345f, 20.403f, 21.301f, 25.269f, 22.819f, 23.380f, 25.079f, 26.572f, + 28.134f, 29.565f, 31.072f, 32.438f, 33.595f, 35.346f, 37.262f, 38.978f, 41.127f, + 42.585f, 43.518f, 43.977f, 43.349f, 42.765f, 43.018f, 43.353f, 44.456f, 45.672f, + 46.454f, 45.429f, 42.885f, 39.905f, 36.911f, 34.441f, 32.245f, 30.254f, 28.399f, + 26.584f, 24.883f, 23.321f, 21.658f, 19.956f, 17.330f, 15.554f, 13.161f, 12.324f, + 11.395f, 9.985f, 6.681f, 4.479f, 1.428f, -1.510f, -5.450f, -9.344f, -7.249f, + -9.252f, -11.743f, -13.682f, -16.147f, -18.903f, -21.205f, -22.632f, -22.424f, -21.520f, + -21.351f, -21.973f, -21.859f, -18.554f, -17.816f, -17.978f, -16.080f, -15.433f, -15.681f, + -12.102f, -14.132f, -16.114f, -17.511f, -16.660f, -14.392f, -12.686f, -10.726f, -8.381f, + -7.091f, -6.420f, -3.451f, -2.352f, -3.119f, -4.783f, -2.816f, 0.481f, 0.727f, + 2.987f, 4.790f, 5.667f, 6.432f, 6.226f, 6.517f, 7.500f, 9.396f, 12.641f, + 15.406f, 16.536f, 16.975f, 16.960f, 17.657f, 19.778f, 23.767f, 25.538f, 25.788f, + 26.980f, 29.763f, 34.238f, 33.849f, 30.346f, 26.351f, 21.725f, 20.051f, 15.254f, + 16.098f, 14.532f, 17.790f, 17.974f, 15.402f, 12.378f, 12.876f, 13.000f, 12.385f, + 12.854f, 15.040f, 15.499f, 13.424f, 14.186f, 14.496f, 11.790f, 11.657f, 13.703f, + 13.837f, 14.804f, 16.686f, 15.355f, 16.833f, 15.930f, 13.761f, 13.591f, 13.446f, + 13.152f, 13.530f, 13.889f, 14.560f, 15.168f, 15.381f, 16.341f, 17.689f, 20.464f, + 22.115f, 20.179f, 20.569f, 21.097f, 20.852f, 20.588f, 19.430f, 16.816f, 14.887f, + 13.606f }, + { -29.534f, -28.088f, -22.684f, -18.017f, -13.636f, -9.331f, -6.259f, -2.720f, -0.517f, + 1.619f, 2.828f, 5.049f, 8.357f, 11.018f, 12.432f, 14.838f, 17.802f, 21.866f, + 25.525f, 21.993f, 19.439f, 20.912f, 25.116f, 22.876f, 23.309f, 25.577f, 27.265f, + 28.645f, 30.213f, 31.626f, 32.661f, 34.171f, 36.202f, 38.196f, 39.765f, 42.603f, + 43.950f, 45.148f, 45.093f, 44.393f, 43.229f, 42.213f, 42.709f, 46.260f, 45.670f, + 46.635f, 45.719f, 43.277f, 41.099f, 38.340f, 35.237f, 32.803f, 31.169f, 29.095f, + 26.998f, 25.099f, 22.913f, 20.449f, 18.039f, 15.876f, 13.917f, 11.721f, 9.849f, + 7.341f, 6.199f, 5.670f, 3.695f, 0.423f, -2.502f, -4.836f, -11.044f, -11.054f, + -10.677f, -12.871f, -15.499f, -17.881f, -20.051f, -21.816f, -24.062f, -24.569f, -23.453f, + -23.807f, -24.773f, -24.531f, -23.038f, -22.755f, -20.729f, -19.503f, -20.029f, -19.718f, + -19.258f, -19.298f, -19.739f, -19.611f, -16.406f, -14.688f, -13.129f, -11.399f, -8.533f, + -7.035f, -7.431f, -6.454f, -1.881f, -1.214f, -5.438f, -2.834f, 1.353f, 0.144f, + 0.495f, 1.809f, 2.647f, 4.088f, 4.951f, 5.555f, 7.658f, 10.236f, 12.170f, + 13.797f, 14.024f, 14.142f, 14.395f, 15.689f, 18.837f, 20.772f, 22.277f, 24.782f, + 25.755f, 27.104f, 30.609f, 30.616f, 29.007f, 24.856f, 20.114f, 17.979f, 12.709f, + 14.151f, 13.224f, 15.420f, 16.107f, 12.603f, 10.993f, 11.656f, 11.891f, 11.127f, + 11.363f, 13.983f, 14.267f, 13.315f, 13.733f, 13.774f, 11.391f, 12.143f, 13.187f, + 12.845f, 14.364f, 15.003f, 14.820f, 15.517f, 14.902f, 13.001f, 12.898f, 12.109f, + 12.082f, 12.691f, 13.008f, 13.525f, 14.236f, 14.641f, 15.745f, 17.239f, 19.762f, + 21.456f, 19.944f, 20.193f, 20.835f, 20.667f, 20.467f, 19.363f, 16.763f, 14.867f, + 13.606f }, + { -29.534f, -28.104f, -22.708f, -18.062f, -13.656f, -9.267f, -6.510f, -3.048f, -0.811f, + 1.780f, 3.234f, 5.304f, 8.422f, 10.947f, 12.298f, 14.460f, 18.539f, 22.721f, + 25.628f, 21.774f, 19.509f, 21.367f, 25.187f, 23.923f, 23.829f, 25.971f, 27.829f, + 29.277f, 31.001f, 32.284f, 33.323f, 34.760f, 36.763f, 38.689f, 40.631f, 43.515f, + 45.382f, 46.330f, 46.156f, 45.533f, 44.323f, 43.339f, 43.135f, 43.349f, 45.147f, + 46.411f, 45.694f, 43.685f, 41.734f, 39.479f, 36.592f, 34.153f, 32.279f, 30.051f, + 27.421f, 25.144f, 23.009f, 20.591f, 18.144f, 15.842f, 13.427f, 11.255f, 8.466f, + 6.099f, 5.413f, 4.325f, 2.964f, 0.689f, -2.316f, -6.218f, -9.384f, -12.082f, + -13.348f, -12.770f, -15.734f, -18.889f, -20.470f, -21.368f, -23.633f, -24.281f, -23.793f, + -25.244f, -26.750f, -26.759f, -28.048f, -26.906f, -24.208f, -24.984f, -24.951f, -24.078f, + -22.920f, -23.673f, -22.748f, -21.455f, -18.133f, -17.290f, -14.193f, -11.028f, -10.619f, + -8.136f, -8.274f, -6.547f, -3.246f, -1.819f, -1.557f, 1.058f, -0.581f, -1.139f, + -1.238f, 0.964f, 1.960f, 3.388f, 4.498f, 5.930f, 8.391f, 10.170f, 11.558f, + 12.219f, 11.957f, 11.590f, 11.824f, 14.214f, 17.641f, 19.007f, 19.504f, 22.167f, + 23.978f, 25.272f, 27.850f, 30.397f, 29.789f, 24.428f, 19.437f, 14.943f, 15.834f, + 12.611f, 12.159f, 13.552f, 14.155f, 10.270f, 10.943f, 11.073f, 10.693f, 9.959f, + 10.236f, 12.013f, 12.731f, 12.865f, 12.780f, 13.586f, 11.745f, 12.268f, 12.332f, + 12.532f, 13.946f, 13.497f, 14.646f, 14.880f, 13.927f, 12.549f, 11.909f, 10.737f, + 10.847f, 11.612f, 12.180f, 12.584f, 13.243f, 13.961f, 15.017f, 16.737f, 19.029f, + 20.803f, 19.837f, 19.785f, 20.563f, 20.494f, 20.356f, 19.284f, 16.707f, 14.848f, + 13.606f }, + { -29.534f, -28.119f, -22.744f, -18.137f, -13.699f, -9.263f, -6.812f, -3.418f, -1.005f, + 1.944f, 3.724f, 5.616f, 8.499f, 10.879f, 12.487f, 14.989f, 19.457f, 23.500f, + 25.618f, 21.625f, 20.876f, 22.729f, 25.362f, 24.860f, 24.232f, 26.407f, 28.325f, + 29.917f, 31.559f, 32.552f, 33.728f, 35.362f, 37.133f, 38.907f, 41.196f, 44.486f, + 46.516f, 47.267f, 47.044f, 46.068f, 44.974f, 44.024f, 43.733f, 44.768f, 45.564f, + 46.354f, 46.194f, 44.833f, 42.531f, 40.311f, 38.227f, 36.083f, 33.756f, 30.947f, + 28.037f, 25.600f, 23.215f, 21.016f, 18.549f, 16.077f, 13.593f, 10.999f, 8.564f, + 6.127f, 4.139f, 3.425f, 2.296f, -0.286f, -2.123f, -6.924f, -10.480f, -12.939f, + -14.381f, -14.881f, -15.452f, -20.155f, -22.058f, -21.590f, -23.436f, -24.017f, -26.714f, + -31.129f, -29.374f, -30.361f, -31.845f, -29.931f, -31.048f, -29.865f, -28.786f, -28.080f, + -26.981f, -26.236f, -24.565f, -23.769f, -22.428f, -20.885f, -18.227f, -14.108f, -12.381f, + -12.253f, -9.728f, -8.925f, -7.977f, -4.688f, -3.661f, -3.579f, -3.289f, -1.881f, + -1.096f, -0.255f, 1.925f, 4.492f, 5.790f, 6.769f, 7.916f, 9.510f, 11.251f, + 11.317f, 10.327f, 9.510f, 9.797f, 12.351f, 14.922f, 16.578f, 17.642f, 19.715f, + 22.302f, 22.996f, 25.829f, 29.310f, 29.469f, 24.190f, 18.764f, 17.115f, 20.900f, + 12.924f, 10.809f, 11.390f, 11.844f, 9.566f, 10.526f, 9.907f, 9.587f, 9.005f, + 9.265f, 11.094f, 11.565f, 12.105f, 11.935f, 13.042f, 11.428f, 11.482f, 11.463f, + 12.092f, 13.486f, 12.542f, 14.135f, 14.141f, 12.661f, 11.933f, 10.668f, 9.716f, + 9.785f, 10.462f, 11.285f, 11.666f, 12.222f, 13.316f, 14.226f, 16.084f, 18.290f, + 20.184f, 19.860f, 19.385f, 20.285f, 20.321f, 20.251f, 19.190f, 16.647f, 14.828f, + 13.606f }, + { -29.534f, -28.135f, -22.792f, -18.237f, -13.763f, -9.322f, -7.122f, -3.819f, -1.084f, + 2.092f, 4.266f, 5.989f, 8.640f, 10.861f, 12.794f, 15.873f, 19.765f, 23.512f, + 25.265f, 21.556f, 21.755f, 23.756f, 24.834f, 25.516f, 24.843f, 27.033f, 28.957f, + 30.354f, 31.962f, 32.968f, 34.191f, 35.807f, 37.461f, 39.066f, 41.412f, 44.614f, + 47.414f, 48.297f, 49.219f, 46.372f, 44.988f, 44.373f, 44.086f, 43.865f, 44.993f, + 45.954f, 45.620f, 45.415f, 43.619f, 41.663f, 39.577f, 37.498f, 34.821f, 31.342f, + 28.335f, 26.066f, 24.231f, 22.104f, 19.953f, 16.364f, 13.900f, 11.622f, 9.643f, + 7.011f, 4.521f, 3.119f, 1.585f, -0.144f, -2.885f, -6.321f, -9.610f, -12.141f, + -14.986f, -18.452f, -21.550f, -23.311f, -24.009f, -25.446f, -26.124f, -27.032f, -31.052f, + -33.349f, -33.689f, -34.031f, -34.491f, -34.426f, -32.783f, -31.462f, -30.646f, -31.366f, + -30.343f, -29.016f, -27.679f, -26.704f, -26.079f, -24.052f, -22.869f, -19.336f, -15.611f, + -12.328f, -12.455f, -10.783f, -9.002f, -8.007f, -6.290f, -5.935f, -4.078f, -2.966f, + -2.272f, -0.529f, 1.880f, 5.798f, 5.899f, 6.278f, 7.785f, 9.272f, 10.150f, + 9.645f, 8.390f, 7.513f, 7.119f, 8.806f, 11.351f, 12.856f, 14.439f, 16.922f, + 19.864f, 21.553f, 23.366f, 28.121f, 28.816f, 24.136f, 18.191f, 21.772f, 20.146f, + 12.761f, 9.115f, 9.024f, 9.246f, 8.577f, 9.525f, 8.804f, 8.175f, 8.298f, + 9.343f, 10.176f, 10.350f, 10.570f, 11.486f, 12.895f, 11.292f, 11.377f, 11.614f, + 11.629f, 12.712f, 12.019f, 12.902f, 12.850f, 11.325f, 11.024f, 9.925f, 9.131f, + 9.056f, 9.558f, 10.249f, 10.708f, 11.274f, 12.609f, 13.523f, 15.364f, 17.619f, + 19.621f, 19.992f, 19.031f, 20.005f, 20.139f, 20.147f, 19.082f, 16.585f, 14.808f, + 13.606f }, + { -29.534f, -28.150f, -22.849f, -18.356f, -13.844f, -9.435f, -7.396f, -4.233f, -1.088f, + 2.195f, 4.768f, 6.415f, 8.879f, 11.015f, 12.939f, 16.235f, 19.591f, 22.912f, + 24.804f, 22.013f, 22.876f, 24.295f, 24.474f, 26.007f, 25.408f, 27.589f, 29.257f, + 30.660f, 32.060f, 33.152f, 34.478f, 35.892f, 37.398f, 38.993f, 41.519f, 44.612f, + 47.087f, 47.881f, 48.713f, 46.593f, 44.978f, 44.576f, 43.702f, 43.021f, 46.470f, + 45.588f, 44.485f, 43.785f, 44.036f, 42.680f, 40.867f, 38.586f, 35.782f, 32.244f, + 29.686f, 27.101f, 25.055f, 23.266f, 21.124f, 17.652f, 14.720f, 11.911f, 9.927f, + 7.436f, 5.000f, 3.003f, 1.305f, -0.504f, -3.026f, -6.299f, -9.408f, -11.340f, + -14.012f, -16.639f, -19.694f, -21.241f, -23.057f, -27.099f, -26.724f, -26.803f, -29.794f, + -33.389f, -35.345f, -36.494f, -37.493f, -37.531f, -37.061f, -37.760f, -37.644f, -33.533f, + -32.985f, -31.161f, -29.548f, -29.229f, -29.885f, -29.165f, -26.443f, -23.311f, -18.715f, + -14.179f, -13.437f, -11.547f, -9.757f, -9.041f, -8.390f, -7.279f, -5.370f, -3.543f, + -2.002f, 0.775f, 3.462f, 3.880f, 4.151f, 4.580f, 6.216f, 7.760f, 7.898f, + 7.239f, 5.705f, 5.089f, 4.860f, 5.287f, 6.831f, 8.310f, 10.380f, 13.497f, + 16.489f, 18.907f, 23.479f, 26.890f, 27.274f, 24.623f, 20.179f, 23.316f, 18.426f, + 11.277f, 7.320f, 6.992f, 6.835f, 7.370f, 7.756f, 7.130f, 7.148f, 7.582f, + 8.039f, 8.568f, 9.100f, 9.204f, 10.942f, 12.697f, 11.232f, 11.146f, 11.129f, + 11.223f, 11.873f, 11.342f, 12.034f, 12.111f, 10.702f, 10.395f, 9.573f, 8.710f, + 8.446f, 8.827f, 9.279f, 9.819f, 10.518f, 11.833f, 12.990f, 14.761f, 17.085f, + 19.136f, 20.185f, 18.738f, 19.728f, 19.943f, 20.040f, 18.960f, 16.519f, 14.788f, + 13.606f }, + { -29.534f, -28.166f, -22.916f, -18.487f, -13.938f, -9.587f, -7.596f, -4.624f, -1.084f, + 2.226f, 5.101f, 6.838f, 9.141f, 11.223f, 12.796f, 15.917f, 19.555f, 22.187f, + 23.668f, 22.714f, 25.470f, 25.430f, 25.016f, 26.025f, 26.348f, 27.636f, 29.045f, + 30.669f, 32.034f, 33.133f, 34.522f, 35.937f, 37.361f, 39.153f, 41.301f, 44.481f, + 46.543f, 48.490f, 47.499f, 46.455f, 44.856f, 44.221f, 43.257f, 43.058f, 45.870f, + 45.261f, 44.434f, 43.487f, 43.285f, 42.670f, 42.023f, 39.765f, 37.201f, 34.085f, + 31.871f, 30.291f, 28.000f, 26.113f, 23.752f, 20.198f, 15.247f, 11.346f, 9.112f, + 6.817f, 4.435f, 1.986f, -0.081f, -1.423f, -1.672f, -4.853f, -7.836f, -10.239f, + -13.656f, -15.893f, -21.432f, -23.297f, -25.008f, -27.757f, -25.931f, -28.662f, -31.801f, + -34.383f, -36.273f, -37.302f, -38.636f, -39.603f, -39.769f, -39.880f, -40.519f, -39.688f, + -35.341f, -33.241f, -30.366f, -30.012f, -30.496f, -29.856f, -29.050f, -25.359f, -20.502f, + -16.541f, -14.519f, -13.356f, -11.710f, -10.961f, -9.862f, -8.962f, -5.987f, -3.819f, + -0.441f, -0.172f, -1.151f, -0.433f, 1.105f, 2.052f, 3.911f, 5.274f, 4.877f, + 4.027f, 2.860f, 2.486f, 2.491f, 2.179f, 2.373f, 3.323f, 5.698f, 9.633f, + 13.996f, 18.438f, 24.181f, 26.122f, 25.964f, 25.697f, 20.348f, 21.591f, 13.829f, + 8.209f, 5.686f, 5.130f, 4.350f, 4.702f, 5.482f, 6.041f, 6.509f, 6.594f, + 7.033f, 7.234f, 8.308f, 8.771f, 10.080f, 11.206f, 11.163f, 10.676f, 10.939f, + 11.149f, 11.040f, 10.008f, 11.859f, 11.854f, 10.566f, 9.818f, 8.889f, 8.347f, + 7.877f, 8.039f, 8.501f, 9.132f, 9.975f, 11.113f, 12.556f, 14.384f, 16.698f, + 18.754f, 20.366f, 18.488f, 19.458f, 19.733f, 19.925f, 18.824f, 16.452f, 14.768f, + 13.606f }, + { -29.534f, -28.181f, -22.992f, -18.622f, -14.040f, -9.755f, -7.702f, -4.952f, -1.132f, + 2.192f, 5.200f, 7.161f, 9.249f, 11.142f, 12.510f, 15.584f, 19.692f, 21.509f, + 21.763f, 22.793f, 27.139f, 26.841f, 25.537f, 25.721f, 27.149f, 27.702f, 28.928f, + 30.497f, 31.913f, 33.012f, 34.443f, 35.954f, 37.487f, 39.140f, 41.270f, 44.141f, + 45.625f, 50.892f, 46.969f, 46.556f, 44.527f, 43.767f, 43.905f, 43.947f, 43.911f, + 45.364f, 44.479f, 43.615f, 43.571f, 43.362f, 42.612f, 40.413f, 38.416f, 36.366f, + 33.774f, 32.517f, 31.378f, 30.967f, 26.327f, 22.452f, 18.067f, 13.217f, 8.474f, + 5.754f, 5.257f, 4.739f, 4.932f, 3.333f, 0.085f, -3.651f, -6.700f, -9.556f, + -11.028f, -14.223f, -19.413f, -24.457f, -26.387f, -27.145f, -23.729f, -29.225f, -32.410f, + -34.702f, -36.543f, -38.236f, -39.337f, -40.713f, -41.262f, -40.740f, -41.072f, -41.620f, + -41.311f, -36.186f, -32.683f, -31.031f, -30.568f, -31.328f, -30.155f, -26.215f, -21.917f, + -18.244f, -18.174f, -17.102f, -15.072f, -11.331f, -7.649f, -5.347f, -4.542f, -4.340f, + -3.549f, -4.652f, -5.087f, -3.833f, -2.317f, 0.225f, 1.592f, 1.970f, 1.506f, + 0.529f, -0.178f, -0.181f, -0.320f, -1.309f, -2.168f, -1.306f, 1.331f, 6.326f, + 13.335f, 19.033f, 23.647f, 23.986f, 22.407f, 23.199f, 18.835f, 16.774f, 6.502f, + 4.202f, 3.435f, 2.467f, 0.784f, 1.410f, 3.434f, 4.705f, 5.506f, 5.210f, + 6.794f, 6.460f, 7.874f, 8.354f, 9.332f, 10.071f, 10.977f, 9.788f, 10.435f, + 10.682f, 9.930f, 8.882f, 11.771f, 11.037f, 10.274f, 8.894f, 8.001f, 8.013f, + 7.372f, 7.231f, 7.768f, 8.587f, 9.503f, 10.530f, 12.083f, 14.160f, 16.381f, + 18.480f, 20.440f, 18.236f, 19.196f, 19.515f, 19.798f, 18.676f, 16.382f, 14.748f, + 13.606f }, + { -29.534f, -28.197f, -23.075f, -18.756f, -14.144f, -9.917f, -7.716f, -5.179f, -1.243f, + 2.149f, 5.127f, 7.308f, 9.098f, 10.659f, 12.330f, 15.720f, 19.565f, 21.039f, + 20.844f, 22.654f, 26.662f, 27.814f, 25.834f, 26.537f, 27.357f, 28.160f, 28.863f, + 30.495f, 31.668f, 32.970f, 34.436f, 36.075f, 37.586f, 39.266f, 41.370f, 43.920f, + 45.258f, 50.084f, 47.001f, 46.493f, 44.850f, 43.936f, 44.044f, 45.165f, 46.320f, + 45.642f, 44.514f, 43.655f, 43.534f, 43.715f, 42.759f, 40.832f, 38.833f, 36.922f, + 34.526f, 33.176f, 32.986f, 30.260f, 25.874f, 22.480f, 19.151f, 14.569f, 11.983f, + 9.279f, 7.991f, 8.033f, 7.268f, 3.887f, 0.084f, -3.033f, -6.410f, -8.221f, + -9.514f, -12.145f, -17.883f, -26.089f, -26.579f, -22.107f, -26.892f, -30.300f, -32.638f, + -35.044f, -37.679f, -39.119f, -39.993f, -41.755f, -42.903f, -43.223f, -43.700f, -42.830f, + -43.372f, -41.997f, -36.292f, -34.601f, -34.095f, -33.942f, -32.393f, -28.403f, -24.624f, + -22.029f, -20.486f, -19.775f, -16.827f, -14.769f, -9.855f, -8.346f, -8.618f, -8.488f, + -9.151f, -10.146f, -9.909f, -8.183f, -5.739f, -3.249f, -1.827f, -1.520f, -1.297f, + -2.264f, -3.094f, -3.301f, -4.183f, -5.786f, -6.555f, -4.387f, 0.251f, 5.885f, + 13.440f, 19.625f, 20.481f, 20.675f, 20.256f, 18.466f, 14.051f, 11.916f, 2.029f, + 0.569f, 1.063f, -1.057f, -3.035f, -2.642f, 0.420f, 2.822f, 3.504f, 4.575f, + 6.093f, 6.429f, 6.795f, 8.618f, 9.047f, 9.106f, 10.002f, 9.369f, 9.264f, + 9.205f, 8.955f, 8.185f, 10.472f, 9.382f, 9.889f, 8.150f, 7.254f, 7.508f, + 6.884f, 6.545f, 7.057f, 8.009f, 8.934f, 9.998f, 11.507f, 13.899f, 16.019f, + 18.280f, 20.321f, 17.928f, 18.938f, 19.294f, 19.656f, 18.519f, 16.311f, 14.728f, + 13.606f }, + { -29.534f, -28.212f, -23.164f, -18.882f, -14.247f, -10.052f, -7.657f, -5.285f, -1.376f, + 2.170f, 5.052f, 7.281f, 8.795f, 10.134f, 12.303f, 15.899f, 19.028f, 21.004f, + 21.935f, 23.366f, 26.410f, 28.243f, 27.065f, 28.901f, 28.227f, 28.759f, 28.946f, + 30.717f, 31.461f, 32.401f, 34.398f, 36.043f, 37.601f, 39.257f, 41.414f, 44.018f, + 45.061f, 46.548f, 47.243f, 46.147f, 45.218f, 44.775f, 44.949f, 46.380f, 47.213f, + 46.176f, 44.189f, 43.344f, 42.746f, 42.639f, 43.013f, 41.192f, 39.142f, 36.725f, + 34.687f, 32.871f, 31.428f, 28.235f, 24.966f, 21.988f, 18.928f, 14.888f, 12.325f, + 10.177f, 8.844f, 9.039f, 7.655f, 6.443f, 3.654f, 0.123f, -2.206f, -2.871f, + -7.154f, -13.120f, -17.663f, -23.013f, -25.482f, -27.321f, -28.059f, -31.223f, -33.384f, + -37.016f, -39.639f, -40.348f, -40.966f, -42.039f, -43.625f, -44.925f, -45.387f, -44.924f, + -45.018f, -44.108f, -40.355f, -37.364f, -36.852f, -36.250f, -34.423f, -31.084f, -28.057f, + -24.644f, -22.862f, -21.244f, -18.965f, -17.970f, -13.512f, -12.188f, -11.807f, -12.281f, + -14.086f, -14.789f, -15.181f, -13.296f, -9.883f, -7.509f, -5.438f, -4.993f, -4.729f, + -5.785f, -6.578f, -6.915f, -8.492f, -10.325f, -9.907f, -5.385f, 4.182f, 8.703f, + 14.988f, 17.319f, 18.466f, 18.292f, 19.194f, 11.180f, 11.506f, 4.940f, -2.073f, + -2.133f, -1.481f, -3.511f, -5.029f, -5.434f, -4.604f, -0.533f, 1.625f, 3.778f, + 4.961f, 5.718f, 6.420f, 7.852f, 8.803f, 8.516f, 8.474f, 9.142f, 8.839f, + 8.968f, 8.897f, 7.565f, 7.839f, 7.806f, 9.418f, 7.649f, 6.466f, 6.782f, + 6.431f, 5.960f, 6.545f, 7.337f, 8.269f, 9.374f, 10.881f, 13.454f, 15.546f, + 18.083f, 19.964f, 17.534f, 18.678f, 19.079f, 19.499f, 18.356f, 16.239f, 14.708f, + 13.606f }, + { -29.534f, -28.227f, -23.259f, -18.997f, -14.341f, -10.146f, -7.553f, -5.273f, -1.465f, + 2.296f, 5.123f, 7.163f, 8.582f, 10.014f, 12.276f, 15.501f, 18.370f, 21.279f, + 23.354f, 24.451f, 26.877f, 27.529f, 28.687f, 30.834f, 29.440f, 29.547f, 29.445f, + 30.724f, 31.430f, 32.247f, 33.949f, 35.798f, 37.487f, 39.032f, 41.409f, 43.819f, + 44.282f, 45.796f, 46.872f, 45.506f, 45.257f, 45.077f, 45.361f, 46.152f, 46.733f, + 45.757f, 44.154f, 43.399f, 42.843f, 42.593f, 42.294f, 42.614f, 40.913f, 36.995f, + 34.064f, 31.870f, 29.516f, 26.222f, 23.434f, 20.901f, 17.670f, 14.852f, 11.982f, + 9.299f, 6.850f, 6.852f, 5.851f, 2.854f, 3.336f, 2.588f, 1.160f, -1.018f, + -4.768f, -11.276f, -16.658f, -19.795f, -24.261f, -26.891f, -28.573f, -30.438f, -33.880f, + -33.617f, -35.514f, -43.055f, -41.887f, -42.893f, -44.186f, -45.181f, -46.922f, -47.533f, + -47.756f, -47.352f, -45.566f, -40.641f, -38.786f, -38.789f, -36.616f, -33.118f, -29.030f, + -26.842f, -24.822f, -23.982f, -21.311f, -19.199f, -16.791f, -14.618f, -14.846f, -16.229f, + -17.825f, -18.700f, -19.773f, -19.076f, -15.872f, -12.522f, -10.780f, -9.579f, -9.926f, + -10.420f, -10.734f, -10.742f, -12.531f, -14.250f, -12.139f, -3.315f, 4.943f, 11.241f, + 14.971f, 15.984f, 16.204f, 13.538f, 10.657f, 5.424f, 9.426f, -1.051f, -5.499f, + -4.279f, -3.783f, -5.539f, -8.507f, -6.938f, -7.245f, -4.074f, -0.047f, 2.883f, + 4.117f, 5.138f, 6.191f, 6.977f, 7.872f, 7.750f, 7.338f, 8.112f, 8.392f, + 9.374f, 8.911f, 7.061f, 6.174f, 7.332f, 8.659f, 6.777f, 5.591f, 5.828f, + 5.862f, 5.308f, 6.129f, 6.639f, 7.652f, 8.659f, 10.294f, 12.817f, 14.986f, + 17.815f, 19.400f, 17.066f, 18.412f, 18.871f, 19.329f, 18.191f, 16.166f, 14.687f, + 13.606f }, + { -29.534f, -28.241f, -23.357f, -19.098f, -14.425f, -10.196f, -7.434f, -5.172f, -1.454f, + 2.493f, 5.341f, 7.062f, 8.585f, 10.272f, 12.201f, 14.856f, 17.993f, 21.532f, + 23.606f, 24.934f, 26.607f, 26.456f, 29.791f, 31.995f, 30.181f, 30.371f, 29.206f, + 30.111f, 31.343f, 32.194f, 33.481f, 35.286f, 37.159f, 38.765f, 40.991f, 43.334f, + 44.809f, 47.002f, 45.583f, 45.112f, 45.185f, 44.956f, 44.727f, 44.632f, 44.653f, + 44.824f, 44.107f, 43.582f, 42.776f, 42.123f, 41.590f, 41.941f, 40.721f, 37.605f, + 34.239f, 31.114f, 28.051f, 25.263f, 22.620f, 18.774f, 16.392f, 14.549f, 12.074f, + 8.040f, 4.757f, 2.898f, 2.331f, 1.018f, -0.252f, -0.880f, -1.203f, -1.914f, + -5.049f, -8.427f, -12.921f, -18.044f, -18.404f, -20.627f, -24.911f, -31.190f, -32.786f, + -38.067f, -39.892f, -43.131f, -41.520f, -43.280f, -44.276f, -46.008f, -47.171f, -48.813f, + -49.225f, -49.776f, -49.929f, -47.004f, -42.804f, -40.935f, -39.501f, -35.695f, -30.560f, + -27.947f, -25.992f, -25.411f, -23.435f, -21.380f, -19.048f, -15.833f, -17.389f, -19.810f, + -21.959f, -23.147f, -24.113f, -24.198f, -22.583f, -19.599f, -17.502f, -15.755f, -15.298f, + -15.359f, -14.782f, -14.510f, -15.071f, -16.147f, -14.092f, -3.308f, 5.392f, 11.243f, + 11.993f, 11.809f, 13.048f, 10.623f, 3.137f, 4.660f, -1.376f, -6.393f, -7.392f, + -6.251f, -5.663f, -8.324f, -11.823f, -8.645f, -8.315f, -6.367f, -1.080f, 1.481f, + 2.989f, 4.080f, 5.094f, 6.417f, 7.115f, 7.276f, 6.953f, 7.458f, 7.757f, + 9.298f, 8.036f, 6.593f, 6.313f, 7.508f, 7.539f, 5.557f, 4.745f, 4.602f, + 4.869f, 4.430f, 5.419f, 5.939f, 7.129f, 7.989f, 9.759f, 12.089f, 14.422f, + 17.435f, 18.736f, 16.576f, 18.136f, 18.673f, 19.147f, 18.028f, 16.093f, 14.667f, + 13.606f }, + { -29.534f, -28.256f, -23.458f, -19.184f, -14.493f, -10.204f, -7.318f, -5.021f, -1.333f, + 2.678f, 5.562f, 7.050f, 8.709f, 10.471f, 12.261f, 14.941f, 18.120f, 21.594f, + 23.650f, 25.213f, 26.208f, 27.265f, 31.976f, 33.005f, 30.178f, 30.513f, 28.779f, + 29.413f, 30.957f, 31.859f, 33.084f, 34.740f, 36.588f, 38.304f, 40.360f, 41.886f, + 43.322f, 45.143f, 44.993f, 44.605f, 44.876f, 44.999f, 44.554f, 44.600f, 47.419f, + 44.489f, 43.915f, 43.661f, 42.751f, 41.608f, 40.969f, 41.241f, 40.916f, 38.699f, + 34.498f, 31.117f, 27.612f, 24.673f, 21.446f, 17.533f, 14.934f, 13.375f, 10.620f, + 6.332f, 3.352f, 1.268f, -0.748f, -2.888f, -5.310f, -6.095f, -6.641f, -6.863f, + -7.032f, -9.143f, -10.283f, -13.726f, -15.688f, -18.313f, -24.050f, -30.456f, -33.197f, + -34.567f, -37.521f, -38.502f, -41.763f, -43.094f, -44.221f, -45.848f, -47.423f, -48.425f, + -49.549f, -50.778f, -51.348f, -49.509f, -46.861f, -46.408f, -42.027f, -39.071f, -34.192f, + -30.473f, -28.290f, -27.710f, -25.809f, -23.461f, -21.517f, -17.942f, -19.302f, -21.895f, + -25.308f, -26.843f, -28.025f, -28.013f, -27.327f, -25.813f, -24.150f, -22.180f, -20.990f, + -19.967f, -18.624f, -18.237f, -17.356f, -15.800f, -12.388f, -0.104f, 6.095f, 9.295f, + 10.020f, 7.863f, 4.931f, -0.492f, -7.695f, -6.319f, -7.977f, -7.770f, -8.958f, + -8.902f, -7.998f, -11.148f, -12.915f, -11.655f, -10.037f, -8.435f, -2.524f, 0.172f, + 1.561f, 2.505f, 3.908f, 5.132f, 5.898f, 6.738f, 6.847f, 6.956f, 6.612f, + 8.245f, 6.773f, 6.452f, 6.558f, 7.222f, 6.025f, 4.489f, 3.860f, 3.481f, + 3.696f, 3.396f, 4.432f, 5.202f, 6.563f, 7.452f, 9.216f, 11.375f, 13.911f, + 16.961f, 18.121f, 16.140f, 17.851f, 18.481f, 18.958f, 17.872f, 16.021f, 14.647f, + 13.606f }, + { -29.534f, -28.270f, -23.561f, -19.256f, -14.546f, -10.180f, -7.208f, -4.856f, -1.136f, + 2.787f, 5.635f, 7.163f, 8.794f, 10.360f, 12.602f, 15.907f, 18.552f, 21.364f, + 24.289f, 25.706f, 26.665f, 29.431f, 35.043f, 33.821f, 30.889f, 30.106f, 28.749f, + 29.196f, 30.669f, 31.628f, 32.927f, 34.177f, 36.278f, 37.762f, 39.694f, 40.810f, + 42.965f, 44.213f, 44.436f, 44.354f, 44.541f, 44.975f, 44.910f, 46.184f, 51.917f, + 44.892f, 43.542f, 43.280f, 42.081f, 40.996f, 40.493f, 40.262f, 40.554f, 38.520f, + 34.527f, 30.898f, 27.533f, 24.079f, 20.799f, 17.158f, 14.436f, 11.130f, 7.991f, + 4.911f, 2.482f, 0.768f, -1.814f, -4.217f, -6.696f, -9.080f, -11.206f, -12.877f, + -13.381f, -12.770f, -14.040f, -14.761f, -16.316f, -20.562f, -26.311f, -30.344f, -32.479f, + -34.386f, -36.194f, -38.646f, -40.838f, -42.761f, -44.190f, -45.374f, -46.812f, -48.509f, + -48.937f, -49.266f, -49.658f, -50.201f, -49.067f, -48.652f, -48.502f, -43.523f, -38.655f, + -34.465f, -32.070f, -27.935f, -28.455f, -25.906f, -24.073f, -21.102f, -21.086f, -22.782f, + -26.825f, -29.328f, -30.885f, -31.342f, -30.836f, -29.788f, -28.219f, -26.843f, -26.188f, + -24.735f, -23.139f, -20.572f, -17.681f, -11.346f, -3.974f, 4.108f, 5.902f, 6.475f, + 5.497f, 4.637f, -7.703f, -11.868f, -15.891f, -15.991f, -11.229f, -8.968f, -10.584f, + -10.968f, -10.426f, -13.687f, -14.187f, -13.591f, -11.801f, -10.247f, -4.185f, -1.011f, + 0.407f, 1.604f, 2.607f, 3.753f, 5.131f, 5.689f, 6.032f, 6.178f, 5.519f, + 6.126f, 5.733f, 6.356f, 5.744f, 5.885f, 4.626f, 3.798f, 3.015f, 2.791f, + 2.931f, 2.555f, 3.646f, 4.464f, 5.867f, 6.981f, 8.625f, 10.714f, 13.438f, + 16.458f, 17.683f, 15.825f, 17.561f, 18.291f, 18.767f, 17.729f, 15.950f, 14.626f, + 13.606f }, + { -29.534f, -28.284f, -23.663f, -19.317f, -14.583f, -10.137f, -7.096f, -4.696f, -0.915f, + 2.846f, 5.582f, 7.433f, 8.847f, 10.203f, 13.080f, 16.724f, 18.754f, 20.833f, + 24.282f, 25.745f, 27.406f, 31.048f, 36.330f, 35.690f, 33.133f, 30.102f, 28.943f, + 29.207f, 30.555f, 31.477f, 32.761f, 34.083f, 35.700f, 37.371f, 39.230f, 40.781f, + 44.195f, 44.857f, 44.329f, 44.337f, 44.466f, 44.856f, 44.876f, 47.874f, 50.171f, + 44.569f, 43.164f, 42.604f, 41.604f, 40.885f, 40.080f, 39.882f, 39.463f, 37.705f, + 34.206f, 30.691f, 27.184f, 23.597f, 20.237f, 16.898f, 13.585f, 10.184f, 7.185f, + 4.202f, 2.021f, 0.608f, -1.815f, -4.644f, -6.665f, -9.197f, -11.251f, -13.315f, + -15.304f, -17.019f, -17.586f, -19.425f, -21.902f, -25.500f, -28.525f, -30.681f, -30.190f, + -33.971f, -36.926f, -38.188f, -40.360f, -42.082f, -43.787f, -44.867f, -46.313f, -48.051f, + -49.168f, -49.990f, -50.323f, -51.695f, -52.660f, -52.663f, -52.086f, -51.120f, -47.127f, + -41.718f, -36.516f, -33.254f, -30.413f, -28.087f, -26.305f, -23.966f, -22.699f, -23.773f, + -27.731f, -31.364f, -32.930f, -33.140f, -32.774f, -31.814f, -30.803f, -29.863f, -28.480f, + -27.083f, -25.661f, -21.075f, -13.200f, -5.293f, -1.135f, 3.136f, 3.915f, 1.294f, + 4.962f, -2.919f, -11.902f, -17.313f, -20.601f, -16.263f, -11.810f, -10.022f, -11.722f, + -12.476f, -12.435f, -15.269f, -15.811f, -15.283f, -13.562f, -11.463f, -5.724f, -2.094f, + 0.022f, 0.655f, 0.966f, 2.106f, 3.775f, 4.616f, 4.859f, 5.153f, 3.714f, + 4.107f, 4.751f, 5.378f, 4.229f, 3.987f, 3.837f, 3.135f, 2.412f, 2.177f, + 2.576f, 2.128f, 3.180f, 3.832f, 5.199f, 6.469f, 8.024f, 10.092f, 12.939f, + 15.993f, 17.470f, 15.657f, 17.273f, 18.098f, 18.579f, 17.600f, 15.880f, 14.605f, + 13.606f }, + { -29.534f, -28.297f, -23.765f, -19.369f, -14.607f, -10.091f, -6.970f, -4.535f, -0.703f, + 2.976f, 5.634f, 7.890f, 9.051f, 10.391f, 13.426f, 16.594f, 18.440f, 20.243f, + 22.892f, 24.990f, 28.035f, 32.532f, 36.854f, 38.580f, 34.267f, 30.317f, 29.145f, + 29.159f, 30.370f, 31.334f, 32.739f, 34.176f, 35.270f, 36.919f, 38.706f, 40.883f, + 44.714f, 43.020f, 43.284f, 44.033f, 44.343f, 44.580f, 44.523f, 47.603f, 47.302f, + 43.762f, 42.848f, 42.256f, 40.472f, 39.963f, 38.797f, 37.546f, 37.344f, 36.245f, + 33.963f, 30.432f, 26.754f, 22.973f, 19.607f, 16.596f, 13.623f, 10.343f, 6.937f, + 3.712f, 1.961f, 0.730f, -1.361f, -4.018f, -6.530f, -8.774f, -11.308f, -13.570f, + -15.820f, -17.478f, -19.352f, -21.683f, -23.746f, -26.202f, -28.703f, -30.415f, -32.430f, + -33.776f, -36.261f, -38.323f, -40.366f, -41.775f, -44.105f, -45.486f, -47.305f, -48.442f, + -49.270f, -50.387f, -50.861f, -50.847f, -54.319f, -54.008f, -53.493f, -53.357f, -51.651f, + -48.516f, -44.219f, -40.175f, -34.328f, -31.252f, -29.289f, -26.846f, -25.776f, -25.137f, + -28.915f, -32.286f, -34.250f, -34.652f, -33.895f, -33.241f, -32.567f, -31.067f, -30.199f, + -28.749f, -24.016f, -14.869f, -6.978f, -3.041f, -1.414f, 1.378f, -0.558f, -1.998f, + 0.894f, -7.336f, -12.491f, -16.910f, -18.034f, -11.441f, -10.923f, -11.745f, -12.605f, + -14.077f, -14.755f, -16.382f, -16.913f, -16.019f, -14.870f, -12.846f, -7.175f, -2.767f, + -1.154f, -0.263f, -0.575f, 0.476f, 2.344f, 3.552f, 3.816f, 3.470f, 1.886f, + 2.411f, 3.643f, 3.543f, 2.659f, 2.651f, 3.008f, 2.111f, 1.894f, 1.499f, + 2.338f, 1.958f, 2.635f, 3.284f, 4.776f, 5.914f, 7.485f, 9.504f, 12.384f, + 15.604f, 17.432f, 15.616f, 16.992f, 17.898f, 18.397f, 17.491f, 15.812f, 14.583f, + 13.606f }, + { -29.534f, -28.310f, -23.865f, -19.418f, -14.622f, -10.053f, -6.823f, -4.353f, -0.494f, + 3.312f, 6.080f, 8.521f, 9.524f, 10.901f, 13.512f, 15.913f, 17.875f, 19.721f, + 21.464f, 24.032f, 28.396f, 33.533f, 38.369f, 40.727f, 35.252f, 30.790f, 28.792f, + 29.093f, 30.393f, 31.368f, 32.864f, 34.127f, 35.174f, 36.212f, 38.517f, 40.609f, + 42.582f, 43.049f, 43.441f, 43.913f, 43.972f, 44.203f, 44.083f, 45.400f, 44.427f, + 43.201f, 42.829f, 41.937f, 40.227f, 39.140f, 37.746f, 36.578f, 35.864f, 35.616f, + 33.380f, 30.843f, 27.020f, 23.499f, 19.911f, 16.754f, 14.525f, 11.228f, 6.841f, + 3.628f, 1.852f, 0.586f, -1.137f, -2.923f, -5.782f, -8.952f, -11.171f, -13.405f, + -15.659f, -17.516f, -19.722f, -22.314f, -24.465f, -27.204f, -29.567f, -31.264f, -32.654f, + -35.927f, -37.097f, -39.090f, -39.039f, -41.361f, -44.041f, -46.327f, -47.989f, -49.096f, + -50.034f, -50.927f, -52.064f, -52.513f, -52.219f, -54.406f, -54.728f, -54.190f, -52.654f, + -51.051f, -47.700f, -44.040f, -36.869f, -34.173f, -31.011f, -29.138f, -28.683f, -28.492f, + -32.067f, -34.320f, -35.340f, -35.230f, -34.316f, -33.491f, -33.131f, -32.310f, -31.243f, + -27.982f, -20.640f, -12.366f, -8.173f, -3.668f, -1.699f, -0.601f, -2.591f, -4.580f, + -1.862f, -9.472f, -13.231f, -17.996f, -15.373f, -11.910f, -11.991f, -13.780f, -14.779f, + -16.175f, -16.119f, -17.617f, -18.108f, -16.107f, -15.055f, -14.239f, -8.235f, -4.022f, + -2.938f, -1.967f, -2.366f, -1.420f, 0.799f, 2.227f, 3.146f, 2.599f, 0.766f, + 1.304f, 2.293f, 1.839f, 1.503f, 1.932f, 1.727f, 1.109f, 1.067f, 1.105f, + 2.201f, 1.883f, 1.938f, 2.651f, 4.559f, 5.406f, 7.036f, 8.993f, 11.826f, + 15.274f, 17.451f, 15.643f, 16.723f, 17.690f, 18.226f, 17.402f, 15.746f, 14.561f, + 13.606f }, + { -29.534f, -28.322f, -23.963f, -19.468f, -14.634f, -10.034f, -6.660f, -4.133f, -0.252f, + 3.892f, 7.005f, 9.223f, 10.125f, 11.318f, 13.357f, 15.412f, 17.427f, 19.181f, + 21.082f, 23.500f, 27.868f, 32.256f, 38.374f, 41.107f, 36.953f, 31.126f, 28.822f, + 29.196f, 30.511f, 31.491f, 32.768f, 34.150f, 35.086f, 36.263f, 38.174f, 39.741f, + 41.400f, 41.964f, 43.024f, 43.123f, 43.430f, 43.660f, 43.855f, 43.528f, 43.209f, + 42.752f, 41.875f, 40.553f, 38.939f, 37.190f, 36.109f, 35.056f, 33.721f, 33.029f, + 32.872f, 30.329f, 27.781f, 23.718f, 20.412f, 17.604f, 14.865f, 11.355f, 7.507f, + 4.183f, 2.337f, 0.594f, -0.752f, -2.569f, -5.069f, -8.144f, -10.702f, -13.340f, + -15.781f, -17.828f, -19.914f, -22.578f, -25.087f, -27.876f, -30.008f, -31.964f, -33.364f, + -35.422f, -37.899f, -39.210f, -41.172f, -43.127f, -43.612f, -46.116f, -47.961f, -49.507f, + -50.660f, -51.800f, -52.594f, -52.543f, -53.388f, -53.397f, -54.210f, -56.069f, -53.792f, + -51.842f, -49.528f, -46.813f, -40.523f, -36.768f, -33.698f, -31.622f, -30.876f, -32.009f, + -34.441f, -36.191f, -36.372f, -35.917f, -34.430f, -33.236f, -33.170f, -32.932f, -31.976f, + -25.591f, -18.940f, -13.467f, -7.788f, -4.698f, -2.778f, -3.641f, -5.479f, -7.340f, + -3.983f, -10.146f, -15.984f, -20.606f, -15.610f, -12.953f, -13.893f, -16.748f, -16.424f, + -18.239f, -17.794f, -19.173f, -19.294f, -16.429f, -15.518f, -15.323f, -9.317f, -5.915f, + -5.363f, -3.888f, -4.614f, -3.353f, -0.626f, 1.190f, 1.587f, 1.217f, -0.365f, + 1.186f, 0.881f, 0.680f, 1.004f, 1.271f, 0.666f, 0.454f, -0.084f, 0.795f, + 1.873f, 1.899f, 1.572f, 1.934f, 4.279f, 4.993f, 6.645f, 8.612f, 11.373f, + 14.962f, 17.408f, 15.669f, 16.467f, 17.474f, 18.069f, 17.335f, 15.682f, 14.539f, + 13.606f }, + { -29.534f, -28.334f, -24.057f, -19.523f, -14.648f, -10.037f, -6.503f, -3.877f, 0.053f, + 4.606f, 8.163f, 9.820f, 10.517f, 11.314f, 12.976f, 15.085f, 17.144f, 18.852f, + 21.065f, 23.475f, 26.692f, 30.034f, 36.042f, 38.981f, 35.986f, 30.475f, 28.984f, + 29.660f, 30.923f, 31.472f, 32.583f, 34.013f, 35.046f, 36.318f, 37.753f, 39.232f, + 40.537f, 41.454f, 42.389f, 42.829f, 42.827f, 43.016f, 43.259f, 43.073f, 42.652f, + 41.916f, 40.664f, 39.029f, 37.366f, 36.418f, 34.697f, 33.107f, 32.330f, 31.368f, + 30.658f, 30.357f, 28.538f, 24.919f, 21.053f, 18.108f, 14.723f, 10.881f, 7.737f, + 4.902f, 2.616f, 1.111f, -0.702f, -2.622f, -3.848f, -1.082f, -10.763f, -13.736f, + -15.577f, -17.367f, -19.386f, -21.960f, -25.113f, -27.378f, -29.949f, -32.231f, -34.182f, + -36.060f, -38.398f, -40.490f, -42.137f, -41.229f, -41.576f, -47.266f, -49.195f, -50.654f, + -51.707f, -52.752f, -53.873f, -53.814f, -53.588f, -53.649f, -53.606f, -54.441f, -54.937f, + -53.153f, -50.829f, -47.594f, -42.681f, -39.790f, -36.175f, -34.035f, -33.372f, -33.860f, + -34.230f, -36.632f, -36.503f, -36.040f, -34.530f, -32.524f, -32.679f, -33.122f, -33.318f, + -26.400f, -19.361f, -11.135f, -6.458f, -5.040f, -5.111f, -5.431f, -7.474f, -9.115f, + -7.606f, -10.183f, -17.355f, -19.542f, -15.284f, -13.630f, -16.555f, -18.592f, -17.881f, + -20.177f, -19.909f, -20.398f, -20.389f, -18.706f, -16.929f, -16.707f, -11.680f, -8.583f, + -7.543f, -6.179f, -6.014f, -4.664f, -1.685f, 0.123f, 0.349f, -0.458f, -0.786f, + 0.755f, -0.018f, -0.103f, 0.495f, 0.475f, -0.011f, -0.275f, -1.118f, 0.164f, + 0.781f, 1.742f, 1.694f, 1.527f, 3.769f, 4.618f, 6.269f, 8.354f, 11.096f, + 14.637f, 17.242f, 15.647f, 16.220f, 17.254f, 17.926f, 17.288f, 15.620f, 14.517f, + 13.606f }, + { -29.534f, -28.346f, -24.147f, -19.589f, -14.670f, -10.062f, -6.382f, -3.611f, 0.416f, + 5.238f, 9.080f, 10.140f, 10.450f, 10.922f, 12.405f, 14.589f, 16.934f, 18.977f, + 20.675f, 23.406f, 26.017f, 29.509f, 34.427f, 35.391f, 33.664f, 30.224f, 29.057f, + 30.060f, 31.096f, 31.429f, 32.339f, 33.620f, 34.951f, 36.182f, 37.454f, 38.904f, + 40.320f, 41.065f, 41.574f, 41.434f, 42.052f, 42.429f, 42.589f, 42.347f, 42.205f, + 41.210f, 39.372f, 37.878f, 36.383f, 35.127f, 33.408f, 31.428f, 30.619f, 29.582f, + 28.854f, 28.630f, 27.080f, 25.384f, 21.871f, 18.062f, 13.975f, 10.171f, 7.609f, + 5.193f, 2.689f, 1.101f, -0.073f, -2.665f, -4.023f, -2.046f, -11.689f, -14.986f, + -16.086f, -17.500f, -19.942f, -22.199f, -25.298f, -27.535f, -30.827f, -33.121f, -34.890f, + -36.762f, -38.854f, -41.645f, -43.421f, -41.306f, -43.800f, -49.437f, -51.123f, -52.706f, + -52.893f, -53.800f, -55.300f, -55.791f, -55.091f, -54.836f, -53.640f, -53.164f, -52.022f, + -50.825f, -50.226f, -47.961f, -44.660f, -42.392f, -38.751f, -36.528f, -36.154f, -35.650f, + -34.795f, -36.035f, -35.424f, -35.264f, -35.050f, -32.687f, -29.779f, -28.215f, -31.034f, + -30.069f, -20.790f, -7.978f, -5.862f, -6.561f, -6.482f, -7.875f, -9.706f, -10.778f, + -10.088f, -10.482f, -15.688f, -19.237f, -17.660f, -17.307f, -19.980f, -20.314f, -20.210f, + -22.106f, -22.027f, -21.392f, -21.503f, -21.280f, -19.619f, -18.095f, -14.282f, -11.223f, + -10.227f, -8.432f, -6.626f, -5.014f, -2.511f, -1.198f, -1.093f, -2.151f, -1.360f, + -0.318f, -0.531f, -0.445f, -0.568f, -0.434f, -0.635f, -1.208f, -1.694f, -0.520f, + -0.846f, 0.936f, 1.734f, 1.815f, 3.122f, 4.187f, 5.876f, 8.126f, 10.954f, + 14.304f, 16.978f, 15.567f, 15.977f, 17.033f, 17.798f, 17.259f, 15.561f, 14.494f, + 13.606f }, + { -29.534f, -28.357f, -24.233f, -19.669f, -14.705f, -10.104f, -6.328f, -3.384f, 0.786f, + 5.595f, 9.363f, 10.102f, 9.965f, 10.356f, 11.788f, 14.058f, 16.827f, 19.045f, + 20.267f, 22.859f, 25.924f, 29.927f, 34.218f, 33.043f, 32.331f, 29.971f, 29.489f, + 30.342f, 31.125f, 31.464f, 32.392f, 33.614f, 34.549f, 35.661f, 37.236f, 38.283f, + 39.357f, 40.715f, 40.726f, 40.863f, 40.969f, 41.379f, 41.658f, 41.436f, 41.158f, + 40.152f, 38.504f, 36.882f, 35.365f, 33.586f, 31.993f, 29.976f, 28.608f, 27.648f, + 26.848f, 26.222f, 24.923f, 23.574f, 20.673f, 17.748f, 13.730f, 9.636f, 7.055f, + 4.907f, 2.623f, 0.881f, -0.730f, -2.825f, -5.985f, -9.648f, -12.423f, -12.322f, + -16.888f, -18.765f, -20.703f, -22.978f, -25.657f, -28.969f, -31.848f, -34.082f, -36.145f, + -38.258f, -40.744f, -43.079f, -44.356f, -44.408f, -48.907f, -51.196f, -53.113f, -54.413f, + -55.396f, -55.727f, -56.472f, -57.140f, -57.047f, -56.287f, -55.374f, -54.019f, -52.874f, + -51.236f, -50.220f, -49.178f, -46.402f, -43.892f, -41.444f, -40.119f, -39.512f, -39.140f, + -35.560f, -34.719f, -33.307f, -34.146f, -33.136f, -29.953f, -26.614f, -26.930f, -26.165f, + -27.843f, -19.159f, -7.234f, -7.028f, -8.552f, -10.044f, -10.346f, -11.080f, -11.933f, + -12.170f, -11.459f, -14.951f, -21.494f, -21.009f, -21.345f, -23.163f, -22.711f, -22.967f, + -23.817f, -24.293f, -22.137f, -21.441f, -21.508f, -20.910f, -18.376f, -14.039f, -11.642f, + -10.766f, -9.680f, -6.728f, -5.060f, -3.363f, -2.428f, -2.479f, -3.091f, -2.284f, + -1.662f, -1.967f, -1.598f, -1.759f, -1.241f, -1.283f, -1.980f, -1.776f, -1.109f, + -2.057f, -0.431f, 1.168f, 2.528f, 2.520f, 3.673f, 5.438f, 7.812f, 10.809f, + 13.996f, 16.692f, 15.450f, 15.734f, 16.813f, 17.685f, 17.243f, 15.503f, 14.470f, + 13.606f }, + { -29.534f, -28.368f, -24.314f, -19.765f, -14.758f, -10.158f, -6.357f, -3.243f, 1.080f, + 5.623f, 8.962f, 9.739f, 9.350f, 9.786f, 11.284f, 13.779f, 16.879f, 18.698f, + 20.175f, 22.439f, 25.559f, 29.375f, 33.521f, 32.170f, 31.037f, 29.088f, 29.691f, + 30.510f, 30.996f, 31.641f, 32.534f, 33.548f, 34.562f, 35.581f, 36.855f, 37.945f, + 38.272f, 39.433f, 39.821f, 40.117f, 40.293f, 40.542f, 40.670f, 40.340f, 39.834f, + 38.726f, 37.160f, 36.262f, 34.677f, 32.493f, 30.624f, 28.909f, 27.070f, 25.731f, + 25.180f, 24.739f, 23.749f, 22.123f, 20.956f, 18.831f, 13.975f, 9.863f, 6.870f, + 4.074f, 2.300f, 0.383f, -1.633f, -3.804f, -5.856f, -9.499f, -6.875f, -9.636f, + -16.768f, -19.287f, -21.890f, -24.336f, -26.898f, -30.166f, -33.455f, -35.653f, -38.286f, + -40.137f, -42.407f, -43.757f, -45.144f, -48.705f, -50.864f, -53.103f, -55.086f, -56.289f, + -57.721f, -58.203f, -58.428f, -59.212f, -58.618f, -57.261f, -56.624f, -55.736f, -54.007f, + -52.578f, -50.753f, -51.612f, -50.635f, -47.171f, -45.364f, -44.670f, -43.759f, -42.497f, + -39.878f, -36.685f, -35.484f, -32.945f, -31.639f, -27.549f, -29.918f, -28.699f, -22.012f, + -19.779f, -17.860f, -11.159f, -13.407f, -14.314f, -12.075f, -11.640f, -12.358f, -14.442f, + -13.229f, -13.530f, -19.156f, -23.967f, -24.103f, -24.671f, -25.279f, -25.224f, -25.445f, + -25.982f, -25.865f, -22.907f, -20.388f, -19.875f, -18.282f, -16.428f, -12.503f, -11.325f, + -9.983f, -9.461f, -6.984f, -5.842f, -4.196f, -2.954f, -3.055f, -3.795f, -3.499f, + -2.347f, -2.919f, -2.903f, -2.640f, -2.023f, -2.005f, -2.517f, -1.638f, -1.973f, + -2.487f, -1.663f, 0.121f, 2.805f, 2.081f, 3.133f, 4.925f, 7.368f, 10.517f, + 13.737f, 16.448f, 15.327f, 15.486f, 16.596f, 17.585f, 17.237f, 15.447f, 14.446f, + 13.606f }, + { -29.534f, -28.378f, -24.390f, -19.877f, -14.832f, -10.215f, -6.460f, -3.214f, 1.228f, + 5.417f, 8.199f, 9.160f, 8.904f, 9.380f, 10.936f, 13.516f, 17.014f, 18.875f, + 20.090f, 22.676f, 25.267f, 28.274f, 32.206f, 31.292f, 29.722f, 28.603f, 29.592f, + 30.434f, 30.834f, 31.897f, 32.681f, 33.604f, 34.403f, 35.464f, 36.301f, 37.259f, + 37.901f, 37.831f, 38.742f, 39.240f, 39.256f, 39.710f, 39.660f, 39.227f, 38.455f, + 37.141f, 35.724f, 34.894f, 33.442f, 31.418f, 29.638f, 27.773f, 26.381f, 25.080f, + 23.765f, 23.152f, 22.005f, 21.415f, 20.761f, 18.049f, 15.358f, 10.737f, 6.819f, + 3.683f, 2.048f, 0.428f, -1.689f, -3.746f, -5.343f, -8.218f, -12.313f, -12.753f, + -16.312f, -16.871f, -20.462f, -27.158f, -29.030f, -31.675f, -34.769f, -37.336f, -39.475f, + -41.084f, -42.577f, -45.459f, -48.685f, -51.286f, -53.542f, -55.358f, -57.113f, -58.733f, + -60.083f, -60.824f, -61.198f, -61.068f, -60.573f, -59.552f, -58.489f, -56.977f, -55.491f, + -54.697f, -54.244f, -54.230f, -53.604f, -52.000f, -50.578f, -50.386f, -47.022f, -44.266f, + -43.653f, -42.018f, -38.660f, -35.051f, -31.600f, -29.770f, -35.644f, -30.183f, -23.677f, + -21.905f, -19.725f, -16.904f, -15.810f, -13.880f, -12.219f, -12.404f, -13.500f, -16.341f, + -15.265f, -16.742f, -25.725f, -26.711f, -26.270f, -26.684f, -26.956f, -26.728f, -27.341f, + -27.790f, -27.184f, -25.346f, -21.737f, -18.612f, -17.158f, -15.505f, -13.454f, -11.799f, + -9.605f, -8.542f, -7.663f, -6.407f, -4.808f, -3.040f, -2.634f, -2.942f, -2.669f, + -1.889f, -1.580f, -2.044f, -3.545f, -2.800f, -2.544f, -3.129f, -1.957f, -3.023f, + -2.683f, -2.384f, -0.988f, 2.082f, 1.877f, 2.635f, 4.358f, 6.871f, 10.033f, + 13.505f, 16.245f, 15.217f, 15.231f, 16.380f, 17.495f, 17.233f, 15.393f, 14.422f, + 13.606f }, + { -29.534f, -28.388f, -24.461f, -20.006f, -14.927f, -10.268f, -6.604f, -3.281f, 1.204f, + 5.141f, 7.517f, 8.497f, 8.709f, 9.363f, 10.726f, 12.879f, 17.082f, 20.240f, + 19.888f, 22.634f, 25.739f, 27.667f, 31.135f, 30.397f, 28.360f, 27.665f, 29.073f, + 30.184f, 30.727f, 31.864f, 32.551f, 33.334f, 34.060f, 35.101f, 35.666f, 36.717f, + 37.710f, 37.306f, 37.848f, 38.423f, 38.223f, 38.624f, 38.457f, 37.664f, 36.792f, + 35.605f, 34.170f, 33.350f, 32.111f, 30.185f, 28.655f, 27.042f, 25.527f, 24.574f, + 23.569f, 22.269f, 20.913f, 19.335f, 18.544f, 17.752f, 14.922f, 11.454f, 7.222f, + 3.862f, 1.885f, 0.493f, -1.626f, -3.977f, -5.459f, -7.445f, -10.458f, -13.063f, + -16.494f, -17.437f, -19.341f, -23.788f, -29.118f, -34.081f, -36.541f, -38.192f, -38.094f, + -40.308f, -44.458f, -48.641f, -51.340f, -53.947f, -55.843f, -57.878f, -60.110f, -61.738f, + -62.749f, -63.573f, -63.488f, -63.183f, -62.669f, -61.658f, -60.221f, -59.064f, -58.346f, + -58.230f, -58.224f, -58.008f, -56.849f, -56.743f, -54.346f, -53.580f, -52.462f, -49.706f, + -47.753f, -43.200f, -42.720f, -40.368f, -36.154f, -37.645f, -37.495f, -31.810f, -25.641f, + -23.630f, -20.464f, -17.279f, -15.055f, -14.771f, -13.916f, -14.135f, -17.196f, -16.827f, + -18.251f, -23.099f, -28.906f, -29.351f, -28.329f, -28.207f, -27.746f, -27.690f, -28.908f, + -28.946f, -28.767f, -26.605f, -24.239f, -21.778f, -19.360f, -18.272f, -16.251f, -14.538f, + -11.909f, -9.512f, -7.724f, -7.041f, -4.864f, -4.763f, -3.866f, -3.351f, -3.062f, + -3.265f, -1.684f, -1.065f, -4.951f, -3.634f, -2.992f, -4.036f, -2.966f, -3.868f, + -3.199f, -2.859f, -1.915f, 0.688f, 1.921f, 2.198f, 3.830f, 6.441f, 9.427f, + 13.232f, 16.004f, 15.105f, 14.970f, 16.164f, 17.414f, 17.226f, 15.339f, 14.396f, + 13.606f }, + { -29.534f, -28.397f, -24.527f, -20.149f, -15.044f, -10.313f, -6.738f, -3.392f, 1.042f, + 4.906f, 7.164f, 7.858f, 8.595f, 9.763f, 10.702f, 12.084f, 17.048f, 21.488f, + 19.829f, 21.654f, 25.829f, 27.243f, 30.159f, 29.585f, 27.127f, 26.722f, 28.517f, + 29.763f, 30.338f, 31.390f, 32.176f, 33.106f, 33.955f, 34.638f, 35.498f, 36.202f, + 37.090f, 37.289f, 37.071f, 37.993f, 37.471f, 37.818f, 37.567f, 36.528f, 35.297f, + 34.147f, 32.982f, 32.277f, 31.004f, 29.362f, 27.846f, 26.263f, 25.082f, 24.224f, + 23.561f, 22.093f, 20.347f, 18.554f, 16.419f, 15.158f, 13.669f, 10.489f, 8.095f, + 4.249f, 1.732f, 0.482f, -1.484f, -3.763f, -6.006f, -7.599f, -10.952f, -14.080f, + -16.490f, -20.040f, -21.256f, -23.752f, -26.918f, -31.284f, -34.424f, -36.180f, -38.977f, + -44.286f, -47.409f, -51.039f, -53.956f, -56.273f, -58.690f, -61.270f, -63.215f, -64.281f, + -65.524f, -65.831f, -65.849f, -65.580f, -65.101f, -63.939f, -62.454f, -62.387f, -62.227f, + -61.926f, -62.220f, -61.545f, -60.390f, -58.735f, -57.545f, -56.723f, -55.936f, -54.978f, + -53.802f, -49.995f, -47.845f, -43.019f, -41.055f, -39.531f, -39.131f, -32.266f, -27.786f, + -24.611f, -20.992f, -17.226f, -18.535f, -19.094f, -17.674f, -19.341f, -20.375f, -21.349f, + -22.887f, -28.105f, -30.796f, -31.153f, -30.356f, -30.199f, -29.330f, -29.399f, -30.163f, + -30.078f, -30.064f, -28.595f, -26.904f, -24.293f, -22.293f, -20.463f, -17.969f, -16.586f, + -14.147f, -12.248f, -10.240f, -9.754f, -8.383f, -8.503f, -8.109f, -6.376f, -6.149f, + -5.758f, -4.098f, -1.867f, -6.142f, -5.067f, -3.904f, -4.794f, -4.077f, -4.724f, + -4.003f, -3.289f, -2.586f, -0.638f, 2.026f, 1.800f, 3.444f, 6.107f, 8.821f, + 12.836f, 15.611f, 14.950f, 14.710f, 15.945f, 17.338f, 17.209f, 15.286f, 14.371f, + 13.606f }, + { -29.534f, -28.406f, -24.589f, -20.304f, -15.180f, -10.348f, -6.806f, -3.474f, 0.823f, + 4.711f, 7.034f, 7.301f, 8.316f, 10.174f, 10.902f, 11.734f, 17.049f, 21.297f, + 19.888f, 21.168f, 25.164f, 27.067f, 29.707f, 28.838f, 26.255f, 26.579f, 28.334f, + 29.442f, 30.160f, 31.015f, 31.533f, 32.606f, 33.731f, 34.518f, 35.142f, 35.702f, + 36.194f, 36.311f, 36.760f, 37.437f, 37.019f, 38.157f, 36.910f, 35.507f, 34.452f, + 33.032f, 32.414f, 31.511f, 29.947f, 28.514f, 27.316f, 25.890f, 24.864f, 24.321f, + 23.603f, 22.084f, 20.014f, 17.972f, 16.114f, 14.115f, 12.907f, 10.843f, 8.866f, + 5.264f, 1.781f, 0.282f, -1.384f, -3.805f, -6.084f, -8.413f, -11.214f, -14.763f, + -17.296f, -20.750f, -24.594f, -27.559f, -30.573f, -34.035f, -36.409f, -37.864f, -41.541f, + -46.356f, -49.918f, -53.394f, -56.312f, -58.929f, -61.316f, -63.870f, -65.759f, -67.162f, + -67.895f, -68.247f, -68.303f, -68.202f, -67.168f, -66.439f, -66.255f, -66.445f, -66.282f, + -66.464f, -65.982f, -64.518f, -63.030f, -61.532f, -59.694f, -58.007f, -56.370f, -54.604f, + -52.691f, -50.044f, -49.320f, -46.449f, -41.935f, -43.417f, -41.852f, -33.813f, -29.902f, + -27.200f, -24.686f, -22.419f, -21.522f, -21.080f, -20.511f, -20.548f, -21.111f, -22.110f, + -26.659f, -30.517f, -32.656f, -33.055f, -32.541f, -31.865f, -31.466f, -31.513f, -32.212f, + -31.597f, -31.004f, -30.329f, -28.782f, -26.508f, -24.280f, -22.740f, -20.747f, -18.637f, + -16.775f, -14.148f, -13.267f, -12.385f, -11.377f, -10.372f, -10.246f, -8.773f, -8.677f, + -8.116f, -6.056f, -3.810f, -6.034f, -6.610f, -4.993f, -4.995f, -5.141f, -5.818f, + -4.744f, -3.567f, -3.024f, -1.555f, 1.875f, 1.454f, 3.195f, 5.758f, 8.295f, + 12.274f, 14.989f, 14.705f, 14.455f, 15.724f, 17.266f, 17.177f, 15.233f, 14.344f, + 13.606f }, + { -29.534f, -28.415f, -24.646f, -20.467f, -15.332f, -10.374f, -6.767f, -3.458f, 0.637f, + 4.483f, 6.802f, 6.819f, 7.777f, 10.010f, 11.174f, 12.005f, 17.187f, 20.490f, + 19.930f, 22.512f, 25.997f, 27.915f, 29.914f, 28.369f, 25.489f, 26.868f, 28.060f, + 29.221f, 29.721f, 30.522f, 31.005f, 32.145f, 33.514f, 34.612f, 34.889f, 35.057f, + 35.660f, 35.416f, 36.435f, 36.892f, 36.254f, 37.578f, 36.299f, 35.228f, 33.691f, + 32.229f, 31.701f, 30.699f, 29.611f, 28.269f, 27.118f, 25.640f, 24.685f, 24.212f, + 23.667f, 21.994f, 20.030f, 17.881f, 15.414f, 13.261f, 11.565f, 10.856f, 8.164f, + 5.879f, 2.581f, 0.025f, -1.872f, -3.851f, -6.363f, -8.647f, -10.837f, -15.527f, + -18.318f, -22.023f, -25.701f, -29.020f, -32.281f, -35.799f, -39.375f, -42.434f, -45.841f, + -49.164f, -52.693f, -55.965f, -58.881f, -61.446f, -64.132f, -66.411f, -68.505f, -69.944f, + -70.659f, -70.696f, -70.859f, -70.592f, -69.779f, -69.969f, -70.300f, -70.376f, -70.401f, + -70.220f, -69.546f, -67.935f, -66.622f, -65.067f, -62.965f, -60.875f, -58.671f, -56.469f, + -53.931f, -51.555f, -49.920f, -47.575f, -45.088f, -46.487f, -44.948f, -35.657f, -30.625f, + -29.462f, -29.928f, -25.073f, -22.579f, -22.276f, -22.447f, -20.944f, -19.763f, -22.689f, + -28.253f, -32.541f, -34.579f, -33.985f, -33.778f, -33.389f, -33.087f, -32.424f, -33.639f, + -33.351f, -33.041f, -32.063f, -31.160f, -29.059f, -26.105f, -24.452f, -22.988f, -20.403f, + -18.135f, -16.641f, -15.605f, -14.352f, -13.345f, -12.226f, -10.953f, -10.205f, -10.157f, + -9.843f, -7.841f, -5.945f, -4.781f, -6.994f, -5.900f, -5.227f, -6.299f, -6.664f, + -5.248f, -3.772f, -3.340f, -2.202f, 1.333f, 1.240f, 2.947f, 5.247f, 7.842f, + 11.578f, 14.149f, 14.342f, 14.212f, 15.502f, 17.195f, 17.125f, 15.180f, 14.317f, + 13.606f }, + { -29.534f, -28.424f, -24.699f, -20.634f, -15.498f, -10.396f, -6.610f, -3.311f, 0.552f, + 4.176f, 6.226f, 6.358f, 7.123f, 9.121f, 11.197f, 12.566f, 17.387f, 20.279f, + 20.222f, 24.531f, 28.245f, 28.975f, 29.130f, 27.201f, 25.122f, 27.345f, 27.448f, + 28.618f, 29.187f, 30.259f, 30.769f, 31.394f, 33.034f, 34.565f, 35.009f, 34.817f, + 34.713f, 34.940f, 36.067f, 36.025f, 39.017f, 36.902f, 35.509f, 34.061f, 32.519f, + 31.766f, 31.117f, 30.275f, 29.225f, 27.792f, 26.726f, 25.680f, 24.600f, 24.153f, + 23.232f, 21.721f, 19.515f, 17.275f, 15.056f, 13.052f, 10.706f, 9.717f, 8.150f, + 5.713f, 2.206f, -0.229f, -2.259f, -4.206f, -6.762f, -9.062f, -11.834f, -15.071f, + -19.282f, -23.061f, -26.561f, -30.032f, -33.770f, -37.361f, -41.058f, -44.884f, -48.761f, + -51.964f, -55.208f, -58.472f, -61.426f, -64.283f, -66.604f, -68.682f, -70.516f, -72.331f, + -73.069f, -73.337f, -73.749f, -73.012f, -73.030f, -73.888f, -74.292f, -74.362f, -74.445f, + -73.666f, -72.476f, -71.236f, -69.774f, -68.254f, -66.332f, -64.095f, -61.704f, -59.246f, + -55.997f, -54.073f, -51.848f, -49.835f, -44.330f, -45.061f, -46.617f, -38.392f, -31.420f, + -31.147f, -31.677f, -26.919f, -23.818f, -23.435f, -23.572f, -20.618f, -19.935f, -22.433f, + -28.733f, -34.865f, -36.438f, -35.524f, -35.224f, -34.145f, -34.343f, -34.437f, -35.516f, + -35.144f, -34.793f, -33.883f, -32.600f, -30.523f, -28.266f, -26.237f, -24.566f, -22.538f, + -20.014f, -18.037f, -17.565f, -16.486f, -14.860f, -14.043f, -12.961f, -11.016f, -10.621f, + -10.584f, -9.891f, -7.771f, -4.423f, -5.956f, -6.602f, -5.890f, -6.987f, -6.924f, + -5.580f, -4.152f, -3.609f, -2.761f, 0.595f, 1.220f, 2.559f, 4.554f, 7.401f, + 10.840f, 13.202f, 13.870f, 13.986f, 15.284f, 17.122f, 17.049f, 15.126f, 14.289f, + 13.606f }, + { -29.534f, -28.432f, -24.750f, -20.802f, -15.672f, -10.421f, -6.361f, -3.045f, 0.590f, + 3.835f, 5.363f, 5.876f, 6.591f, 7.996f, 10.727f, 13.037f, 17.572f, 20.322f, + 20.844f, 25.311f, 28.418f, 28.762f, 27.787f, 25.926f, 25.098f, 26.894f, 27.034f, + 27.933f, 28.472f, 30.071f, 30.787f, 31.622f, 31.695f, 35.147f, 35.900f, 34.803f, + 34.485f, 34.963f, 35.722f, 36.296f, 40.417f, 37.221f, 35.875f, 34.420f, 32.599f, + 31.719f, 30.575f, 29.680f, 28.472f, 27.265f, 26.086f, 25.429f, 24.267f, 23.430f, + 22.513f, 20.862f, 18.663f, 16.527f, 14.397f, 12.566f, 10.397f, 8.795f, 7.018f, + 5.676f, 1.571f, -0.369f, -2.692f, -5.103f, -7.340f, -9.798f, -12.470f, -15.599f, + -19.575f, -23.803f, -27.052f, -30.944f, -34.713f, -38.454f, -42.413f, -46.935f, -50.510f, + -54.322f, -57.743f, -60.974f, -63.940f, -66.487f, -68.608f, -71.032f, -72.385f, -74.307f, + -75.251f, -76.030f, -76.114f, -75.838f, -76.534f, -77.502f, -77.914f, -78.331f, -78.395f, + -77.371f, -75.927f, -74.607f, -72.989f, -71.152f, -69.349f, -67.039f, -64.629f, -61.718f, + -58.480f, -56.451f, -54.730f, -54.943f, -48.811f, -47.295f, -48.091f, -41.995f, -34.822f, + -31.304f, -32.248f, -29.554f, -26.990f, -24.546f, -24.324f, -22.565f, -20.648f, -22.129f, + -29.555f, -36.736f, -37.720f, -37.030f, -36.392f, -35.673f, -35.459f, -36.990f, -37.186f, + -36.529f, -36.224f, -34.726f, -32.839f, -30.976f, -29.175f, -26.983f, -24.927f, -23.666f, + -22.007f, -19.885f, -18.647f, -17.811f, -16.484f, -15.438f, -14.554f, -13.161f, -11.395f, + -11.199f, -11.341f, -9.810f, -6.297f, -4.716f, -6.502f, -6.551f, -7.150f, -7.006f, + -5.843f, -4.618f, -3.797f, -3.273f, -0.093f, 1.316f, 2.020f, 3.832f, 6.917f, + 10.160f, 12.306f, 13.334f, 13.778f, 15.076f, 17.044f, 16.947f, 15.071f, 14.261f, + 13.606f }, + { -29.534f, -28.441f, -24.798f, -20.966f, -15.851f, -10.455f, -6.076f, -2.713f, 0.734f, + 3.573f, 4.537f, 5.396f, 6.270f, 7.228f, 9.787f, 13.078f, 17.679f, 20.175f, + 21.135f, 24.598f, 26.014f, 27.239f, 27.410f, 25.550f, 24.751f, 25.858f, 26.748f, + 27.459f, 28.068f, 29.988f, 30.894f, 31.873f, 31.460f, 35.205f, 35.759f, 34.504f, + 34.692f, 34.744f, 35.478f, 36.892f, 38.728f, 37.607f, 38.627f, 36.351f, 33.113f, + 31.433f, 30.188f, 29.515f, 28.296f, 27.057f, 25.743f, 24.954f, 23.828f, 22.531f, + 21.528f, 19.805f, 17.688f, 15.577f, 13.779f, 11.869f, 10.019f, 7.918f, 6.725f, + 4.699f, 1.150f, -1.022f, -3.406f, -6.013f, -8.099f, -10.716f, -13.281f, -16.593f, + -20.533f, -24.431f, -28.243f, -31.671f, -35.715f, -39.403f, -43.757f, -47.531f, -52.376f, + -55.945f, -59.558f, -62.831f, -65.977f, -68.638f, -70.540f, -72.950f, -74.757f, -76.592f, + -77.714f, -78.475f, -78.510f, -78.772f, -80.003f, -80.808f, -81.514f, -81.949f, -81.463f, + -80.411f, -79.219f, -77.756f, -76.135f, -74.228f, -71.915f, -69.878f, -67.349f, -64.314f, + -62.168f, -58.375f, -55.696f, -55.463f, -52.291f, -47.217f, -45.091f, -43.167f, -40.145f, + -35.150f, -31.644f, -29.549f, -27.914f, -25.586f, -24.547f, -23.979f, -22.493f, -22.262f, + -30.333f, -38.386f, -37.727f, -37.701f, -36.927f, -37.067f, -38.570f, -39.174f, -38.430f, + -37.686f, -37.407f, -35.306f, -32.781f, -31.142f, -29.287f, -27.052f, -24.892f, -23.915f, + -23.379f, -21.625f, -20.439f, -19.234f, -17.962f, -16.568f, -15.924f, -15.035f, -13.040f, + -11.661f, -11.872f, -10.880f, -8.476f, -5.011f, -5.810f, -7.092f, -7.573f, -7.262f, + -6.165f, -4.914f, -3.925f, -3.738f, -0.728f, 1.293f, 1.435f, 3.283f, 6.383f, + 9.593f, 11.601f, 12.798f, 13.583f, 14.886f, 16.958f, 16.819f, 15.014f, 14.232f, + 13.606f }, + { -29.534f, -28.449f, -24.844f, -21.123f, -16.032f, -10.507f, -5.831f, -2.394f, 0.942f, + 3.487f, 4.084f, 5.006f, 6.006f, 6.867f, 8.671f, 12.328f, 17.287f, 20.103f, + 20.365f, 23.005f, 23.767f, 25.155f, 26.605f, 24.384f, 23.879f, 25.468f, 26.443f, + 26.874f, 27.951f, 29.668f, 31.114f, 32.050f, 31.544f, 34.708f, 34.776f, 34.459f, + 35.050f, 34.734f, 35.433f, 36.552f, 36.915f, 39.246f, 39.492f, 37.503f, 33.973f, + 31.094f, 29.887f, 29.118f, 28.072f, 26.829f, 25.641f, 24.544f, 23.177f, 21.717f, + 20.344f, 18.570f, 16.586f, 14.734f, 12.914f, 11.088f, 9.234f, 7.283f, 5.839f, + 2.612f, 1.254f, -1.856f, -4.278f, -6.806f, -9.102f, -11.652f, -14.697f, -18.243f, + -21.950f, -25.875f, -29.485f, -33.110f, -37.382f, -41.621f, -45.736f, -49.732f, -53.601f, + -57.902f, -61.203f, -64.643f, -67.615f, -70.731f, -73.041f, -74.888f, -76.814f, -78.248f, + -79.801f, -80.621f, -81.418f, -82.346f, -83.452f, -84.405f, -85.232f, -85.344f, -84.643f, + -83.778f, -82.622f, -80.844f, -79.290f, -77.341f, -74.804f, -72.649f, -70.499f, -68.789f, + -65.639f, -60.000f, -57.496f, -56.639f, -53.072f, -47.641f, -45.599f, -43.307f, -42.045f, + -40.412f, -37.913f, -34.236f, -28.073f, -24.571f, -25.167f, -22.814f, -22.108f, -22.593f, + -31.195f, -41.053f, -39.003f, -35.789f, -37.644f, -39.786f, -40.653f, -40.963f, -38.778f, + -38.404f, -38.345f, -36.333f, -33.878f, -32.077f, -30.437f, -28.305f, -26.004f, -24.672f, + -24.347f, -22.553f, -21.656f, -20.969f, -19.876f, -18.011f, -17.298f, -16.775f, -15.481f, + -13.026f, -12.322f, -11.423f, -9.751f, -6.683f, -6.006f, -7.696f, -8.217f, -7.611f, + -6.609f, -5.152f, -4.125f, -4.100f, -1.443f, 0.914f, 0.905f, 2.968f, 5.827f, + 9.124f, 11.148f, 12.321f, 13.394f, 14.719f, 16.861f, 16.666f, 14.956f, 14.203f, + 13.606f }, + { -29.534f, -28.457f, -24.890f, -21.271f, -16.214f, -10.584f, -5.697f, -2.163f, 1.177f, + 3.589f, 4.101f, 4.784f, 5.574f, 6.454f, 7.747f, 10.875f, 15.811f, 19.378f, + 18.463f, 20.594f, 21.996f, 23.377f, 25.172f, 23.327f, 23.598f, 25.441f, 26.392f, + 26.470f, 27.743f, 29.222f, 30.761f, 31.904f, 30.639f, 34.497f, 34.252f, 34.616f, + 35.102f, 34.779f, 34.815f, 36.258f, 38.766f, 41.023f, 39.952f, 37.447f, 33.991f, + 31.032f, 29.842f, 28.729f, 27.702f, 26.444f, 25.343f, 23.759f, 22.296f, 20.675f, + 18.963f, 17.353f, 15.501f, 13.747f, 12.028f, 10.196f, 8.305f, 6.418f, 4.155f, + 2.626f, 0.280f, -2.981f, -5.259f, -7.693f, -10.322f, -13.052f, -16.483f, -20.005f, + -23.704f, -27.691f, -31.793f, -35.661f, -39.920f, -43.991f, -48.372f, -52.124f, -56.221f, + -60.128f, -62.785f, -66.058f, -69.343f, -72.066f, -74.815f, -77.136f, -79.058f, -81.066f, + -82.858f, -84.430f, -85.488f, -86.080f, -86.821f, -87.594f, -88.455f, -88.703f, -87.775f, + -86.666f, -85.465f, -84.018f, -82.157f, -80.134f, -77.860f, -75.999f, -74.046f, -70.885f, + -66.248f, -63.010f, -61.190f, -58.235f, -53.737f, -49.893f, -46.474f, -44.504f, -43.799f, + -44.913f, -43.812f, -42.389f, -33.607f, -26.396f, -26.242f, -25.638f, -23.493f, -25.435f, + -31.830f, -43.533f, -43.407f, -34.652f, -39.394f, -42.159f, -42.861f, -42.406f, -37.526f, + -39.489f, -38.825f, -37.444f, -34.799f, -32.516f, -31.133f, -28.706f, -27.101f, -26.043f, + -25.932f, -23.650f, -22.806f, -22.212f, -21.363f, -19.533f, -18.225f, -18.349f, -16.786f, + -14.412f, -13.143f, -12.695f, -11.018f, -8.499f, -7.484f, -8.387f, -8.623f, -7.986f, + -6.958f, -5.601f, -4.434f, -4.270f, -2.226f, 0.129f, 0.432f, 2.765f, 5.276f, + 8.696f, 10.917f, 11.934f, 13.203f, 14.577f, 16.751f, 16.491f, 14.895f, 14.172f, + 13.606f }, + { -29.534f, -28.465f, -24.936f, -21.409f, -16.395f, -10.692f, -5.726f, -2.070f, 1.415f, + 3.802f, 4.402f, 4.726f, 4.947f, 5.667f, 7.174f, 9.537f, 13.555f, 16.814f, + 16.034f, 17.634f, 19.505f, 22.010f, 24.343f, 24.053f, 23.653f, 25.001f, 25.890f, + 26.063f, 27.460f, 28.546f, 30.025f, 31.076f, 30.885f, 34.665f, 33.758f, 34.590f, + 34.790f, 34.472f, 34.481f, 34.726f, 40.635f, 40.841f, 39.764f, 36.487f, 33.090f, + 31.044f, 29.672f, 28.211f, 27.095f, 25.819f, 24.268f, 22.774f, 21.208f, 19.429f, + 17.784f, 16.190f, 14.508f, 12.790f, 11.021f, 9.108f, 7.224f, 5.285f, 3.327f, + 1.202f, -1.186f, -3.664f, -6.092f, -8.833f, -11.673f, -14.796f, -18.361f, -22.083f, + -26.224f, -30.315f, -33.873f, -38.139f, -42.391f, -46.242f, -50.715f, -54.883f, -58.556f, + -62.578f, -66.486f, -69.138f, -71.826f, -74.809f, -77.452f, -80.037f, -82.503f, -84.633f, + -86.464f, -87.922f, -88.925f, -89.755f, -90.374f, -90.636f, -91.200f, -91.251f, -90.622f, + -89.697f, -88.392f, -86.679f, -84.945f, -82.865f, -80.715f, -79.147f, -75.460f, -72.083f, + -68.966f, -67.359f, -62.673f, -57.019f, -54.026f, -50.987f, -47.965f, -46.268f, -45.315f, + -43.454f, -42.497f, -38.997f, -33.051f, -30.810f, -31.090f, -28.802f, -27.769f, -28.757f, + -35.111f, -44.904f, -44.447f, -35.885f, -41.347f, -44.226f, -42.807f, -42.090f, -38.966f, + -40.640f, -41.152f, -38.778f, -36.149f, -33.993f, -32.380f, -29.865f, -28.287f, -27.317f, + -26.649f, -24.799f, -24.007f, -23.497f, -22.432f, -20.797f, -19.766f, -19.357f, -17.749f, + -15.634f, -14.125f, -13.421f, -12.368f, -10.276f, -9.148f, -9.235f, -8.946f, -8.366f, + -7.054f, -6.139f, -4.736f, -4.328f, -2.912f, -0.877f, -0.034f, 2.496f, 4.746f, + 8.264f, 10.823f, 11.635f, 13.003f, 14.456f, 16.625f, 16.299f, 14.833f, 14.142f, + 13.606f }, + { -29.534f, -28.473f, -24.983f, -21.536f, -16.576f, -10.834f, -5.935f, -2.138f, 1.647f, + 4.039f, 4.700f, 4.739f, 4.356f, 4.757f, 6.777f, 9.040f, 11.863f, 13.560f, + 14.086f, 15.436f, 17.281f, 20.298f, 22.967f, 24.598f, 22.641f, 23.894f, 25.203f, + 25.628f, 27.109f, 28.306f, 29.355f, 29.980f, 30.377f, 33.934f, 33.472f, 34.721f, + 34.691f, 34.373f, 34.520f, 37.729f, 39.925f, 40.075f, 38.559f, 35.680f, 32.677f, + 30.883f, 28.999f, 27.450f, 26.301f, 24.875f, 23.221f, 21.511f, 20.014f, 18.168f, + 16.588f, 15.041f, 13.503f, 11.646f, 9.853f, 8.036f, 6.075f, 4.102f, 1.972f, + 0.004f, -2.068f, -4.669f, -7.565f, -10.581f, -13.717f, -16.964f, -20.596f, -24.515f, + -28.970f, -33.042f, -36.947f, -40.756f, -44.822f, -48.869f, -52.695f, -56.778f, -60.861f, + -64.217f, -68.849f, -72.612f, -75.750f, -78.454f, -81.139f, -83.794f, -85.890f, -87.840f, + -89.475f, -91.154f, -92.300f, -92.512f, -93.199f, -93.885f, -93.826f, -93.588f, -93.254f, + -92.292f, -91.153f, -89.554f, -87.879f, -85.671f, -83.279f, -80.708f, -77.830f, -74.583f, + -71.990f, -65.318f, -60.900f, -56.819f, -53.999f, -51.755f, -48.264f, -45.884f, -45.309f, + -45.257f, -44.794f, -44.844f, -38.805f, -37.340f, -39.525f, -36.855f, -34.988f, -32.439f, + -28.764f, -38.518f, -40.601f, -36.376f, -41.082f, -41.211f, -40.121f, -39.620f, -41.208f, + -42.372f, -41.463f, -39.414f, -38.290f, -35.462f, -33.374f, -31.199f, -29.108f, -27.833f, + -27.310f, -26.277f, -25.238f, -24.844f, -23.780f, -22.254f, -21.313f, -20.278f, -19.060f, + -16.973f, -14.992f, -14.057f, -13.434f, -11.727f, -10.591f, -10.126f, -9.252f, -8.741f, + -7.215f, -6.468f, -4.953f, -4.521f, -3.400f, -1.811f, -0.493f, 2.111f, 4.259f, + 7.837f, 10.773f, 11.398f, 12.790f, 14.351f, 16.483f, 16.094f, 14.768f, 14.110f, + 13.606f }, + { -29.534f, -28.482f, -25.032f, -21.653f, -16.757f, -11.014f, -6.307f, -2.357f, 1.860f, + 4.271f, 4.848f, 4.729f, 4.060f, 4.241f, 6.298f, 9.082f, 11.604f, 12.126f, + 13.190f, 15.005f, 16.600f, 18.604f, 20.945f, 24.511f, 21.669f, 22.601f, 24.386f, + 25.082f, 26.401f, 27.791f, 28.686f, 29.534f, 29.902f, 34.281f, 33.428f, 34.716f, + 34.780f, 34.880f, 36.712f, 38.602f, 37.367f, 37.643f, 37.248f, 34.536f, 32.011f, + 30.334f, 28.548f, 26.683f, 25.165f, 23.513f, 21.989f, 20.140f, 18.612f, 16.937f, + 15.364f, 14.032f, 12.243f, 10.576f, 8.645f, 6.926f, 4.869f, 2.970f, 0.890f, + -1.160f, -3.549f, -6.458f, -9.446f, -12.647f, -15.912f, -19.309f, -23.174f, -27.167f, + -31.127f, -35.284f, -39.509f, -43.409f, -47.458f, -51.339f, -54.955f, -58.338f, -62.613f, + -65.920f, -69.460f, -72.743f, -77.224f, -81.347f, -84.177f, -86.605f, -89.003f, -90.757f, + -92.225f, -94.021f, -95.032f, -95.469f, -95.854f, -96.013f, -96.194f, -95.538f, -95.302f, + -94.383f, -93.025f, -90.716f, -89.004f, -86.694f, -84.267f, -82.164f, -79.894f, -77.417f, + -70.406f, -66.701f, -63.904f, -59.089f, -55.971f, -53.305f, -49.365f, -46.248f, -44.602f, + -45.221f, -47.560f, -50.233f, -49.334f, -48.384f, -44.747f, -45.377f, -41.624f, -35.427f, + -28.397f, -32.662f, -33.433f, -35.348f, -41.576f, -45.270f, -35.959f, -41.338f, -42.449f, + -43.149f, -41.864f, -41.348f, -39.856f, -36.505f, -33.878f, -32.063f, -30.187f, -28.770f, + -28.492f, -27.369f, -26.546f, -26.358f, -24.957f, -23.659f, -22.815f, -21.285f, -19.989f, + -18.181f, -15.897f, -15.061f, -14.389f, -12.898f, -12.200f, -10.768f, -9.502f, -9.232f, + -7.682f, -6.646f, -5.153f, -4.915f, -3.756f, -2.451f, -0.893f, 1.710f, 3.864f, + 7.469f, 10.704f, 11.186f, 12.566f, 14.253f, 16.326f, 15.882f, 14.702f, 14.079f, + 13.606f }, + { -29.534f, -28.491f, -25.084f, -21.762f, -16.943f, -11.234f, -6.795f, -2.701f, 2.026f, + 4.534f, 4.928f, 4.691f, 4.081f, 4.279f, 5.785f, 8.832f, 12.237f, 12.787f, + 12.875f, 15.614f, 16.860f, 17.546f, 19.615f, 24.084f, 21.261f, 21.552f, 23.367f, + 24.683f, 25.786f, 26.882f, 27.693f, 29.010f, 29.777f, 33.774f, 33.431f, 34.097f, + 35.283f, 36.818f, 38.256f, 37.949f, 36.646f, 35.523f, 34.764f, 33.235f, 31.159f, + 29.593f, 27.749f, 25.601f, 24.169f, 22.365f, 20.575f, 18.954f, 17.336f, 15.758f, + 14.304f, 12.746f, 11.063f, 9.343f, 7.675f, 5.632f, 3.785f, 1.655f, -0.307f, + -2.365f, -5.120f, -8.062f, -11.358f, -14.431f, -17.892f, -21.577f, -25.322f, -29.302f, + -33.414f, -37.874f, -42.311f, -46.454f, -50.472f, -54.356f, -58.173f, -61.689f, -64.980f, + -68.528f, -71.883f, -74.282f, -75.888f, -81.293f, -86.235f, -88.816f, -91.174f, -93.646f, + -94.834f, -95.748f, -96.847f, -97.549f, -97.639f, -97.416f, -97.153f, -96.805f, -96.303f, + -95.497f, -93.524f, -91.519f, -89.614f, -87.515f, -86.018f, -83.718f, -80.491f, -75.545f, + -71.170f, -68.752f, -65.377f, -60.783f, -57.688f, -54.922f, -50.827f, -47.997f, -45.578f, + -44.019f, -46.960f, -49.338f, -49.078f, -46.857f, -43.488f, -47.382f, -47.769f, -37.133f, + -30.462f, -29.737f, -30.305f, -33.004f, -40.162f, -49.216f, -37.686f, -41.383f, -44.147f, + -43.542f, -42.586f, -42.375f, -40.696f, -37.682f, -34.528f, -33.383f, -31.389f, -30.328f, + -29.727f, -28.826f, -28.256f, -27.857f, -25.765f, -25.117f, -23.718f, -22.641f, -21.209f, + -19.272f, -16.896f, -16.102f, -15.571f, -14.186f, -13.357f, -11.174f, -9.822f, -9.726f, + -8.104f, -6.947f, -5.446f, -5.296f, -4.108f, -2.754f, -1.201f, 1.422f, 3.624f, + 7.220f, 10.595f, 10.974f, 12.336f, 14.150f, 16.155f, 15.668f, 14.633f, 14.046f, + 13.606f }, + { -29.534f, -28.500f, -25.139f, -21.866f, -17.134f, -11.492f, -7.338f, -3.137f, 2.098f, + 4.860f, 5.116f, 4.700f, 4.182f, 4.484f, 5.520f, 8.187f, 12.853f, 13.938f, + 12.684f, 15.955f, 17.172f, 16.551f, 18.751f, 22.345f, 20.478f, 20.765f, 22.674f, + 24.381f, 25.176f, 26.512f, 27.264f, 29.285f, 29.941f, 32.355f, 32.876f, 34.087f, + 35.008f, 39.559f, 37.833f, 37.650f, 36.342f, 34.085f, 32.812f, 31.643f, 30.141f, + 28.582f, 26.893f, 24.777f, 23.046f, 21.343f, 19.529f, 17.683f, 16.190f, 14.732f, + 13.215f, 11.547f, 10.061f, 8.191f, 6.452f, 4.476f, 2.556f, 0.374f, -1.564f, + -3.956f, -6.934f, -9.925f, -13.000f, -16.837f, -19.852f, -23.260f, -27.280f, -31.321f, + -35.746f, -40.114f, -44.742f, -49.252f, -52.754f, -56.756f, -60.956f, -65.094f, -68.439f, + -72.126f, -75.880f, -78.078f, -80.454f, -83.587f, -86.799f, -90.089f, -91.856f, -93.275f, + -94.642f, -95.694f, -96.608f, -95.940f, -95.742f, -96.493f, -96.603f, -96.854f, -96.914f, + -96.137f, -94.693f, -93.106f, -91.923f, -89.494f, -86.512f, -82.569f, -79.735f, -77.433f, + -74.969f, -69.341f, -66.217f, -61.645f, -59.575f, -56.367f, -51.727f, -48.591f, -47.551f, + -46.081f, -46.767f, -48.075f, -47.274f, -44.757f, -43.307f, -47.395f, -44.306f, -34.622f, + -29.691f, -28.750f, -28.089f, -30.255f, -38.559f, -43.840f, -37.469f, -42.109f, -44.219f, + -44.265f, -43.603f, -42.797f, -40.858f, -38.577f, -35.251f, -34.543f, -33.224f, -32.085f, + -31.372f, -30.415f, -29.900f, -28.871f, -27.091f, -26.625f, -24.769f, -23.595f, -22.263f, + -20.015f, -17.919f, -17.129f, -16.582f, -14.973f, -13.598f, -11.525f, -10.018f, -9.888f, + -8.173f, -7.309f, -5.874f, -5.537f, -4.523f, -2.844f, -1.436f, 1.273f, 3.571f, + 7.100f, 10.444f, 10.750f, 12.109f, 14.035f, 15.975f, 15.458f, 14.563f, 14.014f, + 13.606f }, + { -29.534f, -28.509f, -25.199f, -21.966f, -17.333f, -11.788f, -7.880f, -3.633f, 2.026f, + 5.202f, 5.474f, 4.820f, 4.142f, 4.383f, 5.523f, 7.790f, 13.180f, 14.918f, + 13.058f, 15.918f, 17.131f, 15.714f, 17.999f, 20.211f, 19.544f, 20.408f, 22.228f, + 24.040f, 24.670f, 25.963f, 27.439f, 30.037f, 29.986f, 31.428f, 32.264f, 34.068f, + 34.994f, 39.101f, 38.156f, 36.648f, 34.971f, 33.315f, 31.818f, 30.650f, 29.335f, + 27.766f, 26.019f, 24.283f, 22.067f, 20.293f, 18.450f, 16.626f, 15.019f, 13.723f, + 12.017f, 10.513f, 8.727f, 7.052f, 5.307f, 3.378f, 1.229f, -0.796f, -3.124f, + -5.824f, -8.715f, -11.937f, -15.041f, -18.379f, -22.098f, -25.779f, -29.422f, -33.611f, + -38.203f, -42.181f, -46.389f, -50.716f, -54.522f, -58.712f, -62.773f, -67.165f, -71.149f, + -74.986f, -78.776f, -82.000f, -85.512f, -88.384f, -90.424f, -91.955f, -92.862f, -94.580f, + -96.448f, -97.359f, -98.589f, -99.221f, -99.614f, -99.858f, -100.164f, -99.836f, -99.150f, + -98.313f, -96.744f, -95.110f, -92.884f, -88.869f, -86.368f, -83.972f, -80.160f, -78.057f, + -74.023f, -70.083f, -65.973f, -62.870f, -59.764f, -56.508f, -52.574f, -48.107f, -47.504f, + -47.804f, -46.379f, -47.080f, -45.822f, -43.813f, -44.405f, -45.340f, -37.554f, -31.863f, + -31.038f, -29.454f, -27.635f, -29.660f, -34.735f, -37.570f, -35.984f, -43.775f, -44.839f, + -45.354f, -44.037f, -43.729f, -42.206f, -39.567f, -36.471f, -35.772f, -34.380f, -33.442f, + -32.882f, -31.903f, -30.729f, -29.430f, -28.427f, -27.600f, -25.861f, -23.776f, -22.341f, + -20.741f, -19.192f, -17.698f, -17.064f, -15.127f, -13.661f, -11.787f, -10.056f, -9.776f, + -8.061f, -7.456f, -6.381f, -5.766f, -4.995f, -2.906f, -1.616f, 1.181f, 3.661f, + 7.061f, 10.246f, 10.519f, 11.890f, 13.905f, 15.790f, 15.258f, 14.491f, 13.980f, + 13.606f }, + { -29.534f, -28.520f, -25.264f, -22.068f, -17.542f, -12.119f, -8.384f, -4.159f, + 1.778f, 5.415f, 5.846f, 5.005f, 3.989f, 3.948f, 5.423f, 7.870f, + 13.122f, 15.703f, 14.073f, 15.983f, 16.555f, 15.575f, 17.143f, 18.766f, + 18.768f, 20.261f, 21.979f, 23.597f, 24.293f, 25.627f, 27.431f, 30.188f, + 30.054f, 30.815f, 31.196f, 33.286f, 35.315f, 37.087f, 36.809f, 36.017f, + 32.970f, 32.152f, 30.860f, 29.752f, 28.695f, 26.795f, 25.194f, 23.571f, + 21.657f, 19.260f, 17.815f, 16.033f, 14.326f, 12.896f, 11.233f, 9.572f, + 7.869f, 6.243f, 4.358f, 2.376f, 0.150f, -2.217f, -5.122f, -7.874f, + -10.833f, -13.714f, -17.177f, -20.654f, -24.156f, -27.634f, -31.600f, -35.561f, + -39.610f, -44.051f, -47.815f, -52.013f, -56.258f, -60.499f, -64.475f, -68.567f, + -72.711f, -76.301f, -80.231f, -83.983f, -87.499f, -90.014f, -92.178f, -94.888f, + -97.331f, -99.292f, -100.316f, -100.195f, -100.405f, -101.016f, -101.100f, -100.931f, + -100.881f, -100.411f, -100.127f, -99.265f, -97.286f, -93.965f, -91.086f, -91.263f, + -87.689f, -83.478f, -80.389f, -76.942f, -74.598f, -70.413f, -66.722f, -63.495f, + -59.951f, -56.489f, -54.114f, -51.821f, -48.953f, -46.888f, -46.520f, -46.812f, + -46.482f, -46.259f, -46.328f, -40.425f, -32.337f, -28.435f, -29.518f, -30.646f, + -30.406f, -35.826f, -35.460f, -34.197f, -35.323f, -42.764f, -45.057f, -47.276f, + -46.005f, -44.721f, -42.898f, -39.997f, -37.843f, -37.636f, -35.686f, -35.140f, + -34.188f, -33.423f, -31.346f, -30.046f, -29.240f, -28.424f, -26.357f, -24.646f, + -22.791f, -21.271f, -20.223f, -18.438f, -17.195f, -15.191f, -13.799f, -11.920f, + -10.306f, -9.609f, -7.965f, -7.468f, -6.848f, -6.055f, -5.483f, -3.056f, + -1.721f, 1.069f, 3.780f, 7.025f, 9.989f, 10.284f, 11.683f, 13.763f, + 15.607f, 15.070f, 14.418f, 13.947f, 13.606f }, + { -29.534f, -28.530f, -25.334f, -22.173f, -17.764f, -12.480f, -8.835f, -4.684f, + 1.363f, 5.334f, 5.966f, 5.106f, 3.925f, 3.579f, 5.006f, 7.905f, + 12.438f, 15.562f, 14.791f, 15.942f, 16.086f, 15.836f, 16.553f, 18.085f, + 17.962f, 19.658f, 21.543f, 22.743f, 23.377f, 25.453f, 27.545f, 29.919f, + 30.303f, 30.445f, 30.547f, 32.694f, 34.395f, 35.364f, 36.174f, 33.405f, + 31.947f, 31.206f, 29.650f, 28.651f, 27.799f, 26.117f, 24.218f, 22.531f, + 20.927f, 19.053f, 17.010f, 15.721f, 14.022f, 12.232f, 10.609f, 8.644f, + 6.917f, 5.167f, 3.248f, 1.162f, -1.264f, -4.195f, -7.113f, -9.998f, + -13.126f, -15.990f, -19.136f, -22.696f, -26.447f, -29.931f, -33.478f, -37.169f, + -40.746f, -44.987f, -49.526f, -53.263f, -57.867f, -62.190f, -66.239f, -70.150f, + -74.022f, -77.828f, -81.512f, -85.192f, -88.267f, -91.128f, -93.285f, -96.114f, + -97.538f, -99.216f, -100.655f, -101.565f, -102.393f, -103.011f, -102.925f, -102.407f, + -101.900f, -100.994f, -100.049f, -96.143f, -95.019f, -92.344f, -89.960f, -87.666f, + -86.030f, -83.502f, -81.181f, -78.019f, -74.901f, -71.145f, -66.988f, -63.319f, + -60.767f, -57.424f, -54.535f, -53.563f, -53.479f, -50.292f, -48.456f, -48.775f, + -48.413f, -48.005f, -45.595f, -33.652f, -24.886f, -26.622f, -25.646f, -27.607f, + -33.390f, -46.759f, -40.597f, -34.429f, -37.045f, -41.620f, -45.960f, -48.466f, + -47.964f, -45.832f, -43.227f, -40.086f, -39.059f, -39.136f, -37.316f, -36.756f, + -35.672f, -34.104f, -32.492f, -30.761f, -29.887f, -29.185f, -27.510f, -26.411f, + -23.820f, -21.919f, -20.757f, -19.152f, -17.184f, -15.320f, -13.944f, -12.127f, + -10.707f, -9.396f, -8.018f, -7.701f, -7.210f, -6.269f, -5.953f, -3.277f, + -1.738f, 0.935f, 3.793f, 6.936f, 9.662f, 10.046f, 11.486f, 13.616f, + 15.431f, 14.897f, 14.344f, 13.913f, 13.606f }, + { -29.534f, -28.541f, -25.409f, -22.284f, -17.997f, -12.863f, -9.239f, -5.182f, + 0.827f, 4.882f, 5.675f, 4.977f, 4.024f, 3.572f, 4.593f, 7.553f, + 11.335f, 14.408f, 14.825f, 15.548f, 16.157f, 16.357f, 17.274f, 18.171f, + 16.601f, 18.853f, 20.987f, 21.970f, 22.498f, 24.762f, 27.268f, 29.398f, + 29.373f, 29.156f, 29.894f, 31.850f, 32.575f, 34.059f, 33.447f, 31.118f, + 30.801f, 29.932f, 28.567f, 27.599f, 26.563f, 25.237f, 23.217f, 21.652f, + 20.110f, 18.482f, 16.978f, 14.987f, 13.445f, 11.786f, 9.928f, 7.898f, + 5.871f, 4.019f, 1.970f, -0.446f, -3.066f, -5.981f, -9.161f, -12.129f, + -15.024f, -18.174f, -21.572f, -24.942f, -28.326f, -31.806f, -35.432f, -39.013f, + -42.361f, -46.062f, -50.089f, -54.290f, -58.988f, -63.670f, -67.669f, -71.483f, + -75.289f, -79.072f, -82.451f, -85.685f, -88.575f, -91.327f, -93.943f, -97.003f, + -99.249f, -100.363f, -102.115f, -102.842f, -103.651f, -104.203f, -104.153f, -103.421f, + -102.330f, -100.675f, -97.444f, -96.422f, -94.895f, -93.514f, -88.890f, -86.029f, + -85.011f, -84.855f, -83.222f, -79.440f, -74.634f, -71.781f, -67.450f, -63.312f, + -60.087f, -57.544f, -54.774f, -54.341f, -54.903f, -53.750f, -52.653f, -51.328f, + -50.196f, -43.521f, -35.361f, -26.721f, -24.580f, -22.993f, -21.173f, -28.377f, + -45.687f, -50.931f, -44.895f, -33.377f, -38.447f, -41.200f, -46.852f, -49.605f, + -50.145f, -47.223f, -42.905f, -39.911f, -40.304f, -40.157f, -38.662f, -37.776f, + -36.608f, -34.761f, -33.516f, -32.084f, -30.423f, -29.733f, -28.435f, -27.339f, + -24.810f, -22.578f, -20.799f, -19.320f, -17.229f, -15.350f, -14.119f, -12.448f, + -11.029f, -9.408f, -8.488f, -8.173f, -7.528f, -6.367f, -6.381f, -3.466f, + -1.753f, 0.817f, 3.623f, 6.790f, 9.280f, 9.792f, 11.294f, 13.476f, + 15.268f, 14.742f, 14.270f, 13.879f, 13.606f }, + { -29.534f, -28.553f, -25.490f, -22.404f, -18.243f, -13.260f, -9.619f, -5.633f, + 0.234f, 4.128f, 5.039f, 4.596f, 4.066f, 3.738f, 4.552f, 7.147f, + 10.425f, 13.471f, 14.800f, 15.302f, 15.966f, 16.910f, 18.076f, 18.209f, + 15.331f, 18.352f, 20.073f, 20.955f, 21.813f, 24.068f, 26.443f, 28.506f, + 28.211f, 28.538f, 28.632f, 29.646f, 30.598f, 32.463f, 30.418f, 30.182f, + 29.546f, 28.854f, 27.543f, 26.305f, 25.410f, 23.970f, 22.351f, 20.732f, + 19.184f, 17.702f, 16.356f, 15.332f, 13.903f, 11.393f, 9.156f, 6.909f, + 4.727f, 2.519f, 0.199f, -2.196f, -5.096f, -8.201f, -10.961f, -13.968f, + -17.206f, -20.050f, -23.341f, -26.980f, -30.466f, -33.549f, -36.989f, -40.781f, + -43.697f, -47.314f, -51.290f, -55.287f, -59.539f, -64.072f, -68.245f, -72.037f, + -75.933f, -79.821f, -83.344f, -86.095f, -89.255f, -91.830f, -94.456f, -97.266f, + -99.953f, -101.061f, -102.606f, -103.495f, -103.671f, -103.471f, -104.199f, -104.683f, + -104.391f, -103.329f, -99.427f, -96.784f, -95.356f, -94.476f, -91.113f, -86.507f, + -86.637f, -87.109f, -84.564f, -78.600f, -74.827f, -71.395f, -67.938f, -63.657f, + -59.243f, -59.244f, -56.334f, -56.079f, -56.740f, -56.664f, -56.283f, -54.544f, + -48.350f, -35.948f, -28.191f, -22.914f, -22.814f, -21.543f, -24.098f, -33.845f, + -51.503f, -51.701f, -46.389f, -35.203f, -37.837f, -42.067f, -47.365f, -49.227f, + -50.839f, -47.485f, -42.750f, -40.356f, -42.036f, -40.733f, -39.688f, -38.806f, + -37.688f, -35.316f, -34.049f, -33.379f, -31.605f, -30.890f, -28.780f, -27.079f, + -25.154f, -22.649f, -20.729f, -19.095f, -17.008f, -15.372f, -14.135f, -12.763f, + -11.458f, -9.968f, -9.335f, -8.596f, -7.854f, -6.522f, -6.698f, -3.552f, + -1.904f, 0.711f, 3.280f, 6.620f, 8.891f, 9.508f, 11.099f, 13.355f, + 15.121f, 14.603f, 14.196f, 13.844f, 13.606f }, + { -29.534f, -28.566f, -25.578f, -22.534f, -18.500f, -13.661f, -9.998f, -6.032f, + -0.360f, 3.246f, 4.297f, 4.072f, 3.748f, 3.642f, 4.686f, 6.998f, + 9.853f, 13.190f, 14.903f, 15.550f, 15.476f, 17.005f, 17.390f, 17.258f, + 15.066f, 17.561f, 18.829f, 19.718f, 21.539f, 23.817f, 25.559f, 27.395f, + 27.614f, 27.620f, 26.622f, 27.592f, 27.270f, 29.521f, 28.806f, 28.772f, + 28.746f, 27.886f, 26.542f, 25.296f, 23.975f, 22.882f, 21.402f, 19.760f, + 18.130f, 16.426f, 14.716f, 12.895f, 12.230f, 10.293f, 7.988f, 5.505f, + 3.123f, 0.710f, -1.787f, -4.443f, -7.187f, -10.026f, -13.213f, -15.734f, + -19.018f, -22.264f, -25.114f, -28.400f, -31.840f, -35.463f, -38.774f, -42.040f, + -45.475f, -49.028f, -52.292f, -56.278f, -60.039f, -64.044f, -68.371f, -72.151f, + -76.194f, -79.890f, -84.088f, -86.586f, -89.869f, -93.125f, -95.162f, -97.585f, + -100.841f, -101.820f, -102.894f, -103.375f, -103.521f, -103.920f, -106.377f, -106.594f, + -105.007f, -102.733f, -100.373f, -96.695f, -94.909f, -92.610f, -91.033f, -89.350f, + -88.954f, -88.429f, -84.568f, -79.833f, -75.037f, -71.625f, -68.392f, -64.448f, + -59.538f, -59.526f, -57.613f, -58.643f, -59.354f, -60.367f, -59.848f, -57.470f, + -39.381f, -24.372f, -24.592f, -24.100f, -23.665f, -22.266f, -25.302f, -41.784f, + -53.443f, -50.660f, -49.639f, -44.374f, -38.134f, -44.404f, -48.622f, -45.465f, + -50.705f, -48.448f, -43.253f, -42.327f, -43.609f, -41.551f, -40.504f, -39.259f, + -38.169f, -36.062f, -34.594f, -33.879f, -32.696f, -31.343f, -30.026f, -27.823f, + -25.472f, -23.072f, -21.002f, -18.871f, -17.202f, -15.908f, -14.382f, -13.125f, + -12.046f, -10.734f, -10.094f, -8.912f, -8.118f, -6.800f, -6.779f, -3.581f, + -2.244f, 0.560f, 2.846f, 6.449f, 8.561f, 9.178f, 10.898f, 13.261f, + 14.992f, 14.482f, 14.122f, 13.809f, 13.606f }, + { -29.534f, -28.579f, -25.671f, -22.674f, -18.767f, -14.059f, -10.393f, -6.391f, + -0.934f, 2.409f, 3.665f, 3.554f, 3.035f, 3.168f, 4.563f, 6.862f, + 9.313f, 12.669f, 14.703f, 15.783f, 15.575f, 16.694f, 16.210f, 15.949f, + 15.154f, 16.222f, 17.607f, 18.471f, 21.448f, 23.402f, 24.978f, 26.064f, + 26.029f, 26.045f, 24.397f, 24.737f, 24.432f, 28.346f, 28.041f, 27.789f, + 27.216f, 26.443f, 25.371f, 24.195f, 22.677f, 21.420f, 20.322f, 18.725f, + 16.990f, 15.111f, 13.083f, 11.149f, 9.000f, 8.000f, 6.040f, 3.632f, + 1.476f, -1.146f, -3.683f, -6.402f, -9.295f, -11.865f, -14.847f, -18.007f, + -20.456f, -23.636f, -27.100f, -30.194f, -33.493f, -36.952f, -40.365f, -43.723f, + -46.938f, -50.319f, -53.674f, -57.279f, -60.901f, -64.143f, -68.145f, -71.992f, + -75.940f, -79.066f, -83.273f, -85.663f, -89.854f, -92.927f, -93.944f, -97.704f, + -100.371f, -101.251f, -102.688f, -103.379f, -103.731f, -104.088f, -105.697f, -105.992f, + -100.427f, -96.745f, -96.020f, -96.065f, -96.033f, -93.495f, -93.008f, -91.754f, + -90.304f, -86.792f, -83.431f, -80.012f, -75.333f, -72.426f, -67.924f, -64.719f, + -60.325f, -57.911f, -58.451f, -59.528f, -61.135f, -63.189f, -62.844f, -55.211f, + -34.529f, -22.274f, -24.422f, -25.472f, -25.153f, -24.771f, -29.875f, -48.186f, + -53.771f, -51.457f, -55.718f, -54.184f, -38.815f, -46.672f, -49.422f, -40.262f, + -51.273f, -49.385f, -44.784f, -44.326f, -44.506f, -43.018f, -40.720f, -39.742f, + -38.552f, -36.263f, -34.834f, -33.986f, -33.395f, -32.186f, -30.595f, -28.865f, + -26.460f, -23.575f, -21.127f, -19.713f, -18.158f, -16.363f, -14.875f, -13.457f, + -12.638f, -11.288f, -10.519f, -9.200f, -8.273f, -7.042f, -6.579f, -3.689f, + -2.661f, 0.341f, 2.407f, 6.254f, 8.341f, 8.806f, 10.692f, 13.196f, + 14.879f, 14.375f, 14.049f, 13.774f, 13.606f }, + { -29.534f, -28.593f, -25.769f, -22.826f, -19.043f, -14.448f, -10.808f, -6.738f, -1.493f, + 1.697f, 3.200f, 3.117f, 2.226f, 2.648f, 4.267f, 6.493f, 8.802f, 11.722f, + 14.154f, 15.454f, 15.693f, 16.034f, 15.340f, 15.769f, 15.559f, 15.099f, 16.275f, + 17.818f, 21.185f, 22.913f, 24.978f, 24.948f, 24.892f, 23.116f, 22.174f, 22.616f, + 23.306f, 26.061f, 26.888f, 26.638f, 25.744f, 25.083f, 24.121f, 22.838f, 21.599f, + 20.177f, 18.988f, 17.719f, 15.980f, 13.718f, 11.668f, 9.458f, 7.369f, 4.976f, + 3.870f, 1.766f, -0.583f, -2.900f, -5.633f, -8.328f, -10.725f, -14.099f, -16.538f, + -19.400f, -22.491f, -25.248f, -28.550f, -31.903f, -35.136f, -38.508f, -41.870f, -45.170f, + -48.543f, -51.754f, -54.814f, -58.202f, -61.641f, -64.909f, -68.484f, -71.584f, -75.151f, + -78.090f, -81.506f, -84.164f, -88.632f, -91.684f, -94.161f, -95.853f, -98.091f, -100.094f, + -101.659f, -102.479f, -103.170f, -103.570f, -104.791f, -104.557f, -97.878f, -92.728f, -94.181f, + -95.402f, -98.390f, -99.016f, -96.467f, -93.413f, -91.541f, -87.762f, -81.124f, -77.210f, + -74.971f, -69.934f, -66.904f, -64.695f, -61.259f, -58.549f, -59.045f, -59.982f, -62.389f, + -65.501f, -62.951f, -47.955f, -29.347f, -24.246f, -26.369f, -26.804f, -26.402f, -26.351f, + -32.950f, -50.722f, -54.080f, -53.548f, -59.764f, -59.281f, -43.919f, -46.340f, -51.217f, + -43.903f, -50.321f, -49.042f, -45.989f, -44.907f, -45.320f, -43.185f, -41.037f, -40.239f, + -38.729f, -35.814f, -35.109f, -34.392f, -33.788f, -32.720f, -30.966f, -29.361f, -26.996f, + -23.725f, -21.568f, -20.565f, -18.652f, -16.460f, -15.165f, -13.744f, -13.227f, -11.800f, + -10.731f, -9.324f, -8.431f, -7.152f, -6.286f, -3.980f, -2.990f, 0.119f, 2.005f, + 5.984f, 8.236f, 8.406f, 10.486f, 13.157f, 14.779f, 14.281f, 13.978f, 13.739f, + 13.606f }, + { -29.534f, -28.609f, -25.873f, -22.988f, -19.326f, -14.825f, -11.237f, -7.110f, -2.057f, + 1.090f, 2.803f, 2.720f, 1.628f, 2.384f, 4.256f, 6.154f, 8.507f, 11.092f, + 13.472f, 14.663f, 14.979f, 15.169f, 14.600f, 15.847f, 15.744f, 14.286f, 15.388f, + 17.670f, 20.148f, 22.383f, 23.811f, 24.267f, 23.420f, 20.425f, 19.993f, 20.969f, + 23.514f, 23.963f, 25.051f, 25.058f, 24.308f, 23.703f, 22.919f, 21.685f, 20.287f, + 19.041f, 17.558f, 16.476f, 14.704f, 12.564f, 10.010f, 7.946f, 5.591f, 3.625f, + 1.250f, -0.546f, -2.420f, -4.881f, -7.167f, -10.097f, -12.697f, -15.449f, -18.616f, + -21.222f, -23.946f, -26.940f, -29.833f, -33.234f, -36.736f, -40.361f, -43.982f, -47.381f, + -50.202f, -53.864f, -56.627f, -58.918f, -62.035f, -65.321f, -68.765f, -72.030f, -75.116f, + -77.044f, -80.876f, -82.282f, -86.640f, -88.421f, -90.747f, -92.777f, -94.397f, -97.215f, + -98.650f, -100.444f, -101.749f, -101.675f, -102.643f, -102.563f, -100.330f, -95.258f, -95.360f, + -97.548f, -97.193f, -96.413f, -94.624f, -92.369f, -90.604f, -88.767f, -81.912f, -75.383f, + -71.740f, -68.186f, -65.169f, -64.220f, -62.138f, -59.873f, -58.692f, -60.398f, -63.860f, + -67.101f, -58.198f, -39.585f, -25.351f, -25.863f, -28.419f, -28.987f, -28.447f, -29.056f, + -33.279f, -50.618f, -54.972f, -57.462f, -61.506f, -61.212f, -52.277f, -47.930f, -51.426f, + -52.379f, -52.189f, -49.111f, -46.924f, -45.260f, -44.968f, -42.498f, -41.857f, -40.469f, + -38.750f, -36.092f, -35.492f, -34.998f, -34.415f, -33.045f, -31.535f, -29.383f, -27.362f, + -24.354f, -22.256f, -20.318f, -18.806f, -16.735f, -15.414f, -14.136f, -13.732f, -12.400f, + -10.879f, -9.324f, -8.699f, -7.232f, -6.206f, -4.432f, -3.193f, 0.004f, 1.630f, + 5.602f, 8.203f, 8.011f, 10.289f, 13.131f, 14.686f, 14.197f, 13.908f, 13.703f, + 13.606f }, + { -29.534f, -28.625f, -25.981f, -23.159f, -19.614f, -15.194f, -11.669f, -7.537f, -2.636f, + 0.526f, 2.340f, 2.267f, 1.208f, 2.221f, 4.495f, 6.120f, 8.254f, 10.718f, + 12.663f, 13.751f, 14.142f, 14.431f, 14.044f, 14.912f, 15.052f, 13.857f, 14.690f, + 16.950f, 18.693f, 21.089f, 22.486f, 22.552f, 20.692f, 18.639f, 19.405f, 20.362f, + 22.085f, 22.791f, 23.443f, 23.563f, 22.857f, 22.258f, 21.500f, 20.459f, 19.219f, + 17.807f, 16.325f, 14.821f, 13.343f, 11.134f, 8.780f, 6.402f, 4.327f, 1.849f, + -0.035f, -2.405f, -4.451f, -6.577f, -9.038f, -11.698f, -14.758f, -17.417f, -19.992f, + -22.866f, -25.401f, -28.305f, -31.246f, -34.617f, -38.051f, -41.484f, -44.970f, -48.575f, + -51.730f, -54.921f, -58.090f, -60.157f, -62.181f, -64.587f, -68.156f, -71.808f, -74.595f, + -76.902f, -79.614f, -81.274f, -85.750f, -86.704f, -87.372f, -88.249f, -92.159f, -94.597f, + -94.316f, -96.088f, -99.244f, -98.786f, -99.335f, -99.234f, -98.451f, -96.049f, -94.720f, + -95.126f, -94.583f, -93.372f, -91.575f, -89.610f, -87.959f, -86.696f, -84.028f, -77.989f, + -69.963f, -65.161f, -65.129f, -63.505f, -61.658f, -59.676f, -59.265f, -61.706f, -65.692f, + -67.279f, -54.532f, -33.954f, -25.539f, -28.396f, -28.678f, -30.403f, -30.333f, -31.544f, + -32.083f, -50.645f, -56.236f, -59.025f, -62.403f, -63.093f, -55.724f, -49.158f, -51.518f, + -55.944f, -50.515f, -47.988f, -50.292f, -46.057f, -43.563f, -41.964f, -42.836f, -40.519f, + -38.900f, -36.802f, -35.790f, -35.429f, -35.137f, -33.909f, -31.510f, -29.474f, -27.648f, + -24.501f, -22.198f, -20.095f, -18.600f, -16.644f, -15.538f, -14.442f, -14.014f, -12.878f, + -11.174f, -9.619f, -8.998f, -7.329f, -6.467f, -4.910f, -3.383f, 0.029f, 1.267f, + 5.132f, 8.165f, 7.652f, 10.112f, 13.102f, 14.594f, 14.120f, 13.841f, 13.668f, + 13.606f }, + { -29.534f, -28.642f, -26.093f, -23.337f, -19.907f, -15.563f, -12.093f, -8.034f, -3.221f, + -0.023f, 1.760f, 1.689f, 0.644f, 1.794f, 4.390f, 6.101f, 7.821f, 9.965f, + 11.781f, 12.910f, 13.633f, 13.767f, 13.483f, 14.283f, 14.204f, 13.782f, 13.780f, + 15.632f, 16.917f, 19.031f, 21.122f, 19.408f, 17.770f, 18.060f, 18.566f, 18.674f, + 20.247f, 21.838f, 21.984f, 21.961f, 21.615f, 20.809f, 20.000f, 19.034f, 17.933f, + 16.422f, 15.103f, 12.963f, 11.800f, 9.542f, 7.290f, 4.908f, 2.614f, 0.335f, + -1.815f, -4.008f, -6.212f, -8.350f, -10.537f, -13.177f, -16.027f, -19.007f, -21.714f, + -24.445f, -27.063f, -29.806f, -32.989f, -35.853f, -38.654f, -42.147f, -45.844f, -48.810f, + -52.921f, -55.990f, -58.782f, -61.165f, -63.915f, -66.038f, -67.672f, -70.094f, -73.546f, + -75.620f, -79.010f, -80.663f, -84.199f, -86.333f, -87.065f, -88.920f, -90.359f, -91.795f, + -92.866f, -94.863f, -95.477f, -95.019f, -95.041f, -94.691f, -95.080f, -93.747f, -92.422f, + -92.154f, -91.399f, -90.140f, -88.876f, -86.993f, -86.384f, -84.402f, -83.393f, -80.114f, + -72.082f, -66.734f, -63.041f, -61.861f, -60.037f, -57.256f, -58.115f, -62.252f, -66.131f, + -66.691f, -52.512f, -30.808f, -27.358f, -29.115f, -30.117f, -31.287f, -31.880f, -33.409f, + -34.294f, -46.258f, -56.227f, -60.476f, -64.040f, -64.547f, -55.741f, -50.684f, -52.265f, + -58.216f, -51.266f, -47.500f, -51.014f, -46.825f, -42.656f, -41.078f, -43.667f, -40.882f, + -39.503f, -36.790f, -36.134f, -35.895f, -35.737f, -34.184f, -31.569f, -29.458f, -27.473f, + -24.133f, -22.296f, -20.243f, -18.393f, -16.923f, -15.529f, -14.741f, -14.149f, -13.235f, + -11.717f, -10.279f, -9.215f, -7.329f, -6.911f, -5.271f, -3.663f, 0.086f, 0.949f, + 4.663f, 8.060f, 7.356f, 9.961f, 13.051f, 14.498f, 14.047f, 13.777f, 13.632f, + 13.606f }, + { -29.534f, -28.660f, -26.209f, -23.522f, -20.202f, -15.940f, -12.508f, -8.591f, -3.794f, + -0.535f, 1.109f, 0.995f, -0.264f, 1.104f, 3.813f, 5.714f, 7.365f, 9.032f, + 10.936f, 12.205f, 12.972f, 13.352f, 12.751f, 13.679f, 12.956f, 13.108f, 12.889f, + 14.044f, 14.710f, 16.793f, 17.385f, 16.276f, 16.031f, 17.056f, 17.623f, 18.855f, + 19.619f, 20.072f, 20.562f, 20.433f, 20.167f, 19.554f, 18.625f, 17.735f, 16.738f, + 15.029f, 13.448f, 11.994f, 9.918f, 7.955f, 5.847f, 3.435f, 0.927f, -1.362f, + -3.443f, -5.784f, -7.668f, -10.255f, -12.559f, -15.042f, -17.791f, -20.273f, -23.170f, + -25.974f, -28.869f, -31.823f, -34.489f, -36.997f, -39.330f, -42.350f, -46.734f, -50.051f, + -52.375f, -56.620f, -59.162f, -61.151f, -64.050f, -66.752f, -69.109f, -69.726f, -71.180f, + -73.913f, -76.652f, -78.333f, -81.078f, -83.290f, -84.832f, -86.689f, -87.100f, -88.198f, + -88.790f, -91.094f, -89.939f, -90.839f, -89.991f, -90.096f, -90.340f, -89.558f, -88.371f, + -87.797f, -87.744f, -87.543f, -86.623f, -86.170f, -86.147f, -83.145f, -81.195f, -80.167f, + -76.078f, -67.497f, -63.243f, -59.935f, -58.122f, -55.479f, -56.866f, -61.513f, -65.285f, + -65.446f, -45.210f, -29.278f, -27.751f, -30.055f, -30.807f, -32.015f, -33.522f, -34.941f, + -36.170f, -42.145f, -55.598f, -61.516f, -65.545f, -65.623f, -57.231f, -47.700f, -55.799f, + -62.579f, -55.777f, -46.718f, -51.400f, -44.366f, -42.506f, -41.060f, -43.476f, -41.629f, + -39.424f, -36.967f, -36.244f, -36.311f, -35.890f, -34.314f, -31.724f, -29.196f, -27.193f, + -24.964f, -23.282f, -20.859f, -19.244f, -17.693f, -15.541f, -15.199f, -14.307f, -13.651f, + -12.203f, -10.843f, -9.405f, -7.194f, -7.298f, -5.464f, -3.979f, 0.012f, 0.751f, + 4.292f, 7.871f, 7.135f, 9.839f, 12.965f, 14.392f, 13.977f, 13.715f, 13.596f, + 13.606f }, + { -29.534f, -28.679f, -26.327f, -23.710f, -20.500f, -16.335f, -12.922f, -9.179f, -4.351f, + -0.987f, 0.460f, 0.259f, -1.311f, 0.566f, 3.475f, 5.199f, 6.954f, 8.325f, + 10.020f, 11.446f, 12.170f, 12.977f, 11.622f, 11.753f, 11.886f, 12.074f, 11.921f, + 12.717f, 13.020f, 14.461f, 14.179f, 14.378f, 15.013f, 16.179f, 17.104f, 17.618f, + 18.182f, 18.849f, 18.995f, 18.937f, 18.680f, 18.084f, 17.368f, 16.385f, 15.154f, + 13.707f, 12.121f, 10.593f, 8.931f, 6.507f, 4.123f, 1.907f, -0.462f, -3.004f, + -5.446f, -7.066f, -9.063f, -11.144f, -14.254f, -16.759f, -19.158f, -21.920f, -24.485f, + -27.083f, -29.970f, -32.651f, -35.260f, -37.577f, -40.199f, -42.810f, -46.238f, -51.142f, + -53.684f, -55.878f, -58.227f, -58.473f, -62.724f, -65.451f, -68.310f, -69.609f, -70.130f, + -72.290f, -74.587f, -76.010f, -76.844f, -78.733f, -80.315f, -81.844f, -82.682f, -83.855f, + -84.087f, -85.904f, -84.754f, -85.108f, -85.797f, -85.521f, -85.422f, -84.724f, -84.462f, + -84.385f, -84.424f, -83.869f, -83.259f, -81.987f, -80.241f, -79.294f, -78.091f, -76.902f, + -73.910f, -70.040f, -63.900f, -60.191f, -57.708f, -56.099f, -56.403f, -60.552f, -64.377f, + -58.612f, -33.135f, -29.585f, -29.748f, -30.749f, -31.594f, -33.042f, -34.381f, -36.180f, + -37.038f, -39.287f, -54.727f, -62.565f, -66.515f, -65.011f, -60.244f, -48.976f, -61.163f, + -66.003f, -59.804f, -47.996f, -51.473f, -44.111f, -40.678f, -41.344f, -42.585f, -41.199f, + -39.369f, -37.657f, -35.772f, -36.106f, -35.460f, -34.527f, -32.116f, -29.373f, -27.108f, + -25.856f, -24.251f, -21.998f, -19.993f, -17.473f, -15.403f, -15.121f, -14.506f, -14.031f, + -12.408f, -11.172f, -9.644f, -7.061f, -7.509f, -5.525f, -4.183f, -0.270f, 0.739f, + 4.068f, 7.646f, 6.985f, 9.745f, 12.838f, 14.274f, 13.906f, 13.657f, 13.560f, + 13.606f }, + { -29.534f, -28.699f, -26.448f, -23.900f, -20.797f, -16.754f, -13.351f, -9.764f, -4.920f, + -1.419f, -0.163f, -0.436f, -2.057f, 0.415f, 3.802f, 5.041f, 6.302f, 7.415f, + 8.900f, 10.339f, 11.433f, 12.028f, 10.438f, 10.259f, 11.541f, 11.037f, 10.900f, + 11.503f, 11.717f, 12.448f, 12.410f, 13.239f, 14.895f, 15.799f, 15.951f, 16.575f, + 16.908f, 17.279f, 17.577f, 17.525f, 17.216f, 16.737f, 15.897f, 14.955f, 13.633f, + 11.994f, 10.618f, 9.099f, 7.486f, 5.433f, 2.412f, 0.031f, -2.337f, -4.607f, + -7.067f, -9.246f, -10.518f, -12.412f, -14.635f, -17.469f, -20.246f, -22.962f, -25.853f, + -27.385f, -29.256f, -32.194f, -35.087f, -37.736f, -39.941f, -42.582f, -44.813f, -48.436f, + -51.958f, -54.424f, -56.702f, -56.494f, -60.981f, -65.562f, -67.200f, -68.009f, -69.290f, + -70.215f, -72.293f, -73.424f, -74.666f, -75.978f, -76.313f, -77.253f, -78.327f, -79.340f, + -79.038f, -79.744f, -80.258f, -80.260f, -80.008f, -79.932f, -79.345f, -79.102f, -78.386f, + -78.312f, -78.984f, -78.802f, -78.702f, -78.061f, -76.977f, -76.026f, -75.051f, -73.326f, + -71.266f, -68.212f, -64.177f, -61.556f, -59.061f, -56.384f, -55.490f, -58.801f, -61.812f, + -51.090f, -28.944f, -30.098f, -29.613f, -31.252f, -33.294f, -34.369f, -35.753f, -37.262f, + -37.987f, -41.753f, -48.575f, -62.960f, -66.517f, -63.690f, -62.559f, -52.649f, -66.301f, + -66.743f, -60.752f, -53.042f, -48.907f, -41.840f, -41.105f, -40.050f, -41.911f, -40.131f, + -39.924f, -36.759f, -35.993f, -36.886f, -35.274f, -34.501f, -32.344f, -29.252f, -26.824f, + -25.567f, -24.776f, -22.899f, -20.612f, -17.539f, -15.709f, -14.474f, -14.452f, -14.197f, + -12.562f, -11.508f, -9.850f, -7.028f, -7.534f, -5.528f, -4.209f, -0.680f, 0.907f, + 3.965f, 7.470f, 6.891f, 9.674f, 12.672f, 14.146f, 13.833f, 13.603f, 13.524f, + 13.606f }, + { -29.534f, -28.720f, -26.570f, -24.092f, -21.093f, -17.199f, -13.808f, -10.321f, -5.552f, + -1.949f, -0.792f, -1.028f, -2.272f, 0.320f, 3.949f, 4.999f, 5.360f, 6.048f, + 7.625f, 8.991f, 10.539f, 11.248f, 10.449f, 10.332f, 10.358f, 9.740f, 9.729f, + 9.901f, 10.378f, 10.707f, 11.095f, 12.455f, 13.514f, 14.524f, 14.987f, 15.309f, + 15.781f, 15.919f, 16.070f, 16.047f, 15.782f, 15.206f, 14.507f, 13.468f, 12.009f, + 10.585f, 9.045f, 7.587f, 5.828f, 3.722f, 0.968f, -1.754f, -4.206f, -6.632f, + -8.902f, -11.047f, -12.963f, -14.676f, -16.050f, -17.747f, -20.848f, -24.535f, -27.622f, + -28.975f, -31.253f, -33.138f, -36.351f, -37.969f, -39.849f, -43.071f, -44.851f, -46.933f, + -48.115f, -50.991f, -54.180f, -56.433f, -59.502f, -62.766f, -64.865f, -66.674f, -68.168f, + -68.185f, -69.609f, -70.331f, -71.452f, -72.200f, -72.597f, -72.893f, -72.327f, -73.942f, + -73.734f, -73.607f, -73.433f, -73.787f, -73.093f, -73.424f, -73.350f, -73.673f, -73.229f, + -73.447f, -73.759f, -73.772f, -73.611f, -73.372f, -72.971f, -72.477f, -71.792f, -70.711f, + -68.947f, -66.755f, -62.245f, -59.326f, -58.274f, -57.152f, -56.283f, -56.245f, -57.767f, + -47.085f, -29.405f, -31.128f, -30.672f, -32.575f, -34.970f, -35.634f, -36.951f, -38.484f, + -39.180f, -41.822f, -44.649f, -62.850f, -66.297f, -61.901f, -62.445f, -61.991f, -63.653f, + -64.781f, -60.295f, -53.722f, -46.253f, -40.696f, -40.418f, -40.233f, -40.903f, -39.499f, + -38.345f, -35.433f, -37.458f, -37.855f, -36.073f, -35.011f, -33.008f, -30.168f, -27.062f, + -26.107f, -25.047f, -23.219f, -21.671f, -18.339f, -16.600f, -14.472f, -13.940f, -14.207f, + -12.746f, -11.712f, -9.946f, -7.065f, -7.416f, -5.533f, -4.148f, -1.049f, 1.160f, + 3.917f, 7.422f, 6.832f, 9.623f, 12.480f, 14.009f, 13.756f, 13.552f, 13.489f, + 13.606f }, + { -29.534f, -28.742f, -26.693f, -24.284f, -21.387f, -17.665f, -14.303f, -10.844f, -6.296f, + -2.714f, -1.481f, -1.508f, -2.155f, -0.221f, 2.697f, 4.186f, 4.513f, 4.995f, + 6.367f, 7.740f, 9.363f, 10.889f, 10.540f, 10.050f, 8.581f, 8.414f, 8.246f, + 8.273f, 8.882f, 9.378f, 9.921f, 11.582f, 12.509f, 13.477f, 13.930f, 14.196f, + 14.476f, 14.806f, 14.948f, 14.590f, 14.145f, 13.726f, 13.025f, 11.878f, 10.535f, + 9.019f, 7.618f, 5.988f, 4.178f, 1.857f, -0.579f, -3.485f, -6.035f, -8.367f, + -10.686f, -13.017f, -14.963f, -17.049f, -18.959f, -20.788f, -22.650f, -26.986f, -29.907f, + -32.160f, -34.191f, -36.310f, -38.332f, -40.835f, -43.515f, -45.955f, -47.915f, -50.584f, + -52.990f, -54.885f, -57.494f, -59.403f, -59.956f, -60.386f, -61.565f, -62.858f, -64.918f, + -64.730f, -65.591f, -65.317f, -65.851f, -67.237f, -66.335f, -67.477f, -67.706f, -67.460f, + -68.665f, -67.821f, -66.477f, -66.976f, -66.832f, -66.715f, -67.148f, -67.255f, -66.680f, + -66.764f, -67.568f, -68.168f, -68.605f, -68.505f, -68.510f, -68.520f, -68.078f, -67.155f, + -66.600f, -64.817f, -60.897f, -57.567f, -57.080f, -56.040f, -55.577f, -55.034f, -53.348f, + -41.015f, -28.662f, -33.225f, -32.911f, -34.387f, -37.120f, -37.045f, -37.959f, -39.462f, + -40.588f, -44.393f, -43.740f, -58.306f, -66.456f, -61.622f, -63.612f, -64.730f, -60.411f, + -61.271f, -57.507f, -51.441f, -42.643f, -42.176f, -40.808f, -39.613f, -38.987f, -39.231f, + -36.030f, -36.045f, -38.070f, -38.160f, -36.532f, -35.768f, -34.103f, -30.880f, -27.302f, + -26.615f, -24.889f, -23.117f, -22.042f, -18.805f, -17.244f, -15.374f, -13.437f, -14.112f, + -12.772f, -11.520f, -10.027f, -7.152f, -7.270f, -5.577f, -4.124f, -1.256f, 1.378f, + 3.884f, 7.525f, 6.791f, 9.588f, 12.283f, 13.868f, 13.676f, 13.504f, 13.453f, + 13.606f }, + { -29.534f, -28.765f, -26.817f, -24.475f, -21.676f, -18.142f, -14.834f, -11.351f, -7.168f, + -3.777f, -2.281f, -1.947f, -2.149f, -1.250f, 0.108f, 2.262f, 3.840f, 4.734f, + 5.443f, 6.633f, 8.244f, 10.021f, 9.412f, 8.843f, 7.539f, 7.069f, 6.643f, + 6.971f, 7.440f, 7.972f, 8.876f, 10.309f, 11.581f, 12.464f, 12.958f, 12.909f, + 13.224f, 13.459f, 13.818f, 13.274f, 12.701f, 12.225f, 11.368f, 10.333f, 8.965f, + 7.587f, 6.068f, 4.389f, 2.454f, 0.057f, -2.478f, -5.137f, -7.701f, -10.240f, + -12.370f, -14.755f, -16.892f, -19.087f, -21.134f, -22.974f, -25.197f, -28.527f, -30.985f, + -33.726f, -35.869f, -38.290f, -40.597f, -42.535f, -44.553f, -46.188f, -48.157f, -50.548f, + -52.858f, -54.458f, -56.264f, -57.770f, -59.499f, -61.013f, -62.739f, -64.579f, -64.511f, + -64.627f, -64.717f, -63.865f, -63.258f, -64.339f, -62.878f, -62.991f, -63.940f, -62.219f, + -63.236f, -61.227f, -60.768f, -60.329f, -60.266f, -60.384f, -59.782f, -60.389f, -61.782f, + -62.257f, -63.260f, -64.208f, -64.251f, -64.643f, -64.578f, -64.136f, -64.080f, -63.282f, + -63.089f, -62.929f, -59.527f, -57.172f, -56.594f, -55.710f, -55.421f, -53.810f, -50.152f, + -41.045f, -29.868f, -33.586f, -34.079f, -35.397f, -37.009f, -37.603f, -38.661f, -40.410f, + -41.855f, -46.144f, -48.307f, -55.482f, -66.646f, -62.497f, -63.023f, -63.018f, -60.805f, + -59.302f, -54.264f, -47.324f, -42.488f, -42.891f, -42.053f, -40.554f, -38.854f, -39.661f, + -36.801f, -37.582f, -38.184f, -38.174f, -37.227f, -36.827f, -33.911f, -30.248f, -27.699f, + -26.437f, -24.570f, -22.756f, -22.112f, -19.549f, -17.678f, -16.097f, -13.267f, -13.929f, + -12.769f, -11.233f, -10.167f, -7.311f, -7.223f, -5.675f, -4.157f, -1.307f, 1.501f, + 3.895f, 7.724f, 6.758f, 9.569f, 12.105f, 13.731f, 13.590f, 13.461f, 13.417f, + 13.606f }, + { -29.534f, -28.789f, -26.940f, -24.667f, -21.961f, -18.616f, -15.387f, -11.875f, -8.141f, + -5.072f, -3.231f, -2.509f, -2.584f, -2.354f, -2.446f, -0.044f, 2.869f, 4.479f, + 4.976f, 5.619f, 7.532f, 9.288f, 9.371f, 8.429f, 6.561f, 6.002f, 5.370f, + 5.717f, 5.877f, 6.314f, 7.954f, 9.244f, 10.469f, 11.290f, 11.682f, 11.624f, + 11.749f, 12.115f, 12.202f, 11.925f, 11.403f, 10.773f, 9.754f, 8.633f, 7.410f, + 6.042f, 4.412f, 2.726f, 0.570f, -1.691f, -4.329f, -6.885f, -9.557f, -12.104f, + -14.277f, -16.591f, -18.881f, -21.167f, -23.240f, -25.174f, -27.389f, -30.900f, -33.754f, + -35.786f, -37.697f, -39.487f, -41.520f, -43.418f, -45.113f, -46.229f, -48.077f, -50.698f, + -52.204f, -54.002f, -55.987f, -57.486f, -58.903f, -59.247f, -58.849f, -59.625f, -60.127f, + -60.204f, -60.815f, -61.285f, -60.956f, -60.455f, -60.124f, -59.037f, -58.985f, -58.800f, + -58.098f, -57.573f, -56.460f, -54.978f, -54.761f, -54.471f, -54.751f, -56.165f, -58.308f, + -61.180f, -62.916f, -63.484f, -63.154f, -62.259f, -61.807f, -61.180f, -60.969f, -60.626f, + -59.965f, -60.109f, -57.037f, -56.322f, -55.908f, -54.766f, -54.755f, -53.327f, -48.734f, + -41.830f, -31.230f, -32.946f, -34.914f, -35.605f, -36.794f, -37.614f, -39.473f, -41.277f, + -42.868f, -46.380f, -53.877f, -55.267f, -65.968f, -63.645f, -61.742f, -64.248f, -59.501f, + -56.896f, -52.931f, -43.082f, -44.317f, -44.376f, -42.360f, -42.360f, -39.808f, -40.864f, + -38.991f, -38.118f, -38.164f, -38.507f, -38.129f, -36.471f, -32.835f, -29.725f, -28.572f, + -26.711f, -24.256f, -22.492f, -22.444f, -19.825f, -17.891f, -15.785f, -12.903f, -13.960f, + -12.988f, -11.166f, -10.261f, -7.507f, -7.243f, -5.813f, -4.180f, -1.296f, 1.563f, + 4.025f, 7.898f, 6.731f, 9.566f, 11.967f, 13.602f, 13.499f, 13.420f, 13.381f, + 13.606f }, + { -29.534f, -28.814f, -27.063f, -24.859f, -22.241f, -19.072f, -15.939f, -12.451f, -9.156f, + -6.432f, -4.361f, -3.409f, -3.508f, -3.272f, -3.925f, -1.836f, 1.320f, 3.414f, + 4.485f, 4.635f, 6.818f, 9.056f, 10.036f, 7.997f, 4.893f, 5.134f, 4.411f, + 4.379f, 3.944f, 4.709f, 6.610f, 8.259f, 9.337f, 10.079f, 10.443f, 10.304f, + 10.534f, 10.581f, 10.875f, 10.520f, 10.033f, 9.372f, 8.208f, 7.046f, 5.768f, + 4.365f, 2.681f, 0.854f, -1.252f, -3.632f, -6.203f, -8.641f, -11.234f, -13.744f, + -16.009f, -18.332f, -20.591f, -22.854f, -24.988f, -26.878f, -29.799f, -32.543f, -34.630f, + -36.881f, -38.682f, -40.540f, -42.584f, -44.233f, -46.042f, -47.030f, -47.654f, -49.895f, + -52.137f, -52.747f, -54.070f, -55.467f, -56.458f, -57.125f, -58.389f, -57.311f, -58.132f, + -58.004f, -58.066f, -57.625f, -56.490f, -55.814f, -55.149f, -54.041f, -53.731f, -53.537f, + -53.021f, -52.372f, -51.324f, -51.071f, -51.390f, -52.405f, -55.418f, -57.735f, -58.099f, + -59.274f, -60.660f, -61.458f, -62.413f, -62.231f, -61.843f, -60.263f, -59.619f, -59.531f, + -59.214f, -59.613f, -54.920f, -54.493f, -54.064f, -53.780f, -54.879f, -52.344f, -48.416f, + -41.576f, -30.404f, -32.080f, -34.820f, -36.338f, -37.196f, -37.903f, -40.421f, -41.811f, + -43.899f, -50.425f, -58.643f, -56.105f, -64.378f, -62.515f, -62.519f, -64.079f, -57.950f, + -57.402f, -51.465f, -45.396f, -48.283f, -45.512f, -44.688f, -43.057f, -40.947f, -40.586f, + -39.502f, -38.104f, -37.862f, -38.611f, -37.879f, -35.182f, -32.147f, -29.991f, -28.934f, + -26.708f, -24.372f, -23.214f, -22.667f, -19.411f, -17.453f, -14.925f, -12.301f, -14.377f, + -13.323f, -11.083f, -10.214f, -7.675f, -7.162f, -5.973f, -4.167f, -1.304f, 1.648f, + 4.318f, 7.903f, 6.714f, 9.573f, 11.885f, 13.487f, 13.403f, 13.383f, 13.345f, + 13.606f }, + { -29.534f, -28.841f, -27.185f, -25.052f, -22.515f, -19.500f, -16.469f, -13.102f, -10.152f, + -7.681f, -5.664f, -4.774f, -4.773f, -4.189f, -4.599f, -3.008f, -0.453f, 1.832f, + 3.453f, 3.304f, 5.562f, 8.402f, 8.673f, 5.818f, 3.073f, 4.332f, 3.426f, + 3.156f, 2.045f, 3.084f, 5.102f, 6.990f, 8.368f, 8.983f, 9.209f, 8.969f, + 9.216f, 9.272f, 9.379f, 9.192f, 8.589f, 7.779f, 6.654f, 5.538f, 4.062f, + 2.679f, 0.900f, -0.996f, -3.081f, -5.457f, -8.068f, -10.661f, -13.284f, -15.660f, + -17.972f, -20.301f, -22.427f, -24.535f, -26.214f, -28.234f, -30.524f, -33.039f, -35.281f, + -37.625f, -39.574f, -41.438f, -43.090f, -44.781f, -46.381f, -47.666f, -48.362f, -48.777f, + -50.529f, -52.062f, -52.880f, -53.935f, -54.810f, -55.688f, -55.771f, -54.899f, -54.050f, + -54.541f, -53.551f, -52.139f, -50.942f, -50.417f, -49.342f, -47.802f, -47.166f, -46.726f, + -46.945f, -46.517f, -47.350f, -48.831f, -50.575f, -50.247f, -54.257f, -59.321f, -59.754f, + -60.868f, -63.776f, -62.827f, -61.683f, -61.107f, -60.054f, -62.015f, -61.373f, -60.017f, + -58.736f, -56.597f, -52.811f, -52.270f, -51.111f, -50.594f, -52.276f, -51.022f, -52.523f, + -47.324f, -34.348f, -31.179f, -34.209f, -36.569f, -37.888f, -38.754f, -40.838f, -42.509f, + -44.546f, -55.690f, -59.999f, -55.623f, -62.995f, -61.444f, -63.117f, -61.527f, -58.992f, + -56.688f, -49.932f, -47.476f, -49.441f, -47.181f, -45.649f, -43.464f, -41.972f, -40.442f, + -39.019f, -37.573f, -39.019f, -38.758f, -36.719f, -34.103f, -31.216f, -30.416f, -29.115f, + -26.873f, -25.379f, -24.639f, -22.729f, -19.500f, -16.751f, -14.673f, -12.297f, -14.740f, + -13.708f, -10.924f, -10.057f, -7.864f, -6.955f, -6.153f, -4.189f, -1.341f, 1.800f, + 4.732f, 7.637f, 6.711f, 9.585f, 11.864f, 13.388f, 13.300f, 13.347f, 13.310f, + 13.606f }, + { -29.534f, -28.868f, -27.306f, -25.247f, -22.787f, -19.894f, -16.965f, -13.832f, -11.100f, + -8.739f, -7.071f, -6.514f, -6.199f, -5.367f, -5.264f, -4.010f, -1.949f, 0.473f, + 2.071f, 1.407f, 4.112f, 7.689f, 7.123f, 4.065f, 1.329f, 3.927f, 2.726f, + 2.093f, 0.628f, 2.003f, 4.093f, 5.634f, 7.036f, 7.750f, 7.806f, 7.863f, + 7.996f, 8.052f, 7.982f, 7.702f, 7.157f, 6.262f, 5.030f, 3.695f, 2.436f, + 0.873f, -0.875f, -2.804f, -5.025f, -7.445f, -9.996f, -12.449f, -14.900f, -17.422f, + -19.728f, -21.928f, -24.146f, -26.538f, -28.135f, -28.100f, -31.466f, -33.458f, -36.454f, + -38.700f, -40.431f, -42.100f, -43.217f, -44.779f, -46.285f, -47.488f, -48.712f, -50.001f, + -49.997f, -49.333f, -51.527f, -52.650f, -52.663f, -52.752f, -52.296f, -51.591f, -51.876f, + -49.877f, -49.846f, -48.453f, -47.612f, -45.640f, -43.999f, -42.601f, -41.872f, -40.566f, + -39.827f, -40.257f, -43.444f, -44.285f, -44.418f, -49.277f, -52.431f, -49.846f, -49.250f, + -51.485f, -53.093f, -53.007f, -53.989f, -57.366f, -58.728f, -55.954f, -56.348f, -57.811f, + -54.845f, -51.028f, -50.097f, -51.302f, -51.250f, -50.849f, -50.532f, -49.795f, -54.711f, + -55.841f, -41.369f, -30.052f, -35.086f, -36.197f, -38.237f, -39.494f, -40.796f, -42.762f, + -46.000f, -57.961f, -58.415f, -52.480f, -61.834f, -61.021f, -62.763f, -57.334f, -59.746f, + -56.141f, -48.866f, -49.375f, -48.618f, -46.456f, -46.093f, -43.402f, -42.699f, -39.884f, + -38.560f, -37.156f, -39.191f, -38.525f, -36.408f, -33.509f, -31.408f, -31.212f, -29.247f, + -27.720f, -26.684f, -25.130f, -22.335f, -19.521f, -16.306f, -14.704f, -13.004f, -14.736f, + -14.132f, -11.146f, -9.827f, -8.178f, -6.879f, -6.348f, -4.323f, -1.380f, 1.985f, + 5.142f, 7.089f, 6.724f, 9.588f, 11.897f, 13.305f, 13.191f, 13.314f, 13.275f, + 13.606f }, + { -29.534f, -28.896f, -27.425f, -25.447f, -23.056f, -20.256f, -17.429f, -14.621f, -12.009f, + -9.648f, -8.450f, -8.316f, -7.647f, -6.712f, -6.159f, -5.091f, -3.090f, -0.489f, + 0.716f, -0.598f, 2.662f, 6.687f, 6.126f, 3.295f, 0.141f, 3.432f, 2.396f, + 0.354f, -0.308f, 1.363f, 2.952f, 4.629f, 5.704f, 6.255f, 6.542f, 6.669f, + 6.773f, 6.694f, 6.471f, 6.149f, 5.650f, 4.859f, 3.582f, 2.223f, 0.705f, + -0.734f, -2.774f, -4.668f, -6.806f, -9.367f, -11.975f, -14.436f, -16.999f, -19.420f, + -21.852f, -23.934f, -26.084f, -27.989f, -29.728f, -29.559f, -32.114f, -34.179f, -37.191f, + -39.483f, -41.212f, -42.621f, -43.849f, -44.864f, -45.881f, -47.053f, -48.332f, -49.157f, + -50.793f, -51.338f, -49.641f, -48.583f, -49.519f, -47.551f, -47.934f, -47.787f, -46.860f, + -45.718f, -44.802f, -44.450f, -43.559f, -41.506f, -39.064f, -36.975f, -35.570f, -34.657f, + -34.089f, -35.312f, -38.876f, -36.796f, -42.686f, -41.775f, -40.405f, -41.808f, -42.784f, + -44.019f, -46.101f, -48.188f, -48.914f, -49.978f, -50.516f, -50.176f, -50.713f, -51.304f, + -49.931f, -49.314f, -51.185f, -51.803f, -51.373f, -51.015f, -50.659f, -50.540f, -52.108f, + -55.732f, -48.239f, -39.941f, -38.469f, -37.136f, -38.640f, -40.004f, -40.849f, -42.296f, + -47.623f, -57.078f, -52.694f, -50.947f, -58.938f, -59.665f, -60.955f, -57.243f, -61.526f, + -52.932f, -51.803f, -49.307f, -47.558f, -45.589f, -45.950f, -43.456f, -40.960f, -39.702f, + -37.850f, -37.867f, -39.455f, -40.243f, -37.775f, -33.687f, -33.081f, -31.723f, -29.256f, + -28.663f, -27.504f, -24.801f, -21.957f, -19.538f, -16.238f, -14.242f, -13.799f, -14.575f, + -14.131f, -11.848f, -9.614f, -8.580f, -7.164f, -6.527f, -4.558f, -1.413f, 2.124f, + 5.410f, 6.350f, 6.747f, 9.572f, 11.967f, 13.234f, 13.075f, 13.281f, 13.240f, + 13.606f }, + { -29.534f, -28.925f, -27.543f, -25.651f, -23.328f, -20.595f, -17.874f, -15.437f, -12.908f, + -10.527f, -9.681f, -9.820f, -9.039f, -7.929f, -7.062f, -6.141f, -4.199f, -1.478f, + -0.783f, -2.268f, 0.880f, 4.526f, 3.989f, 1.152f, -0.089f, 2.524f, 1.603f, + -1.061f, -1.327f, 0.302f, 1.547f, 3.382f, 4.391f, 4.946f, 5.301f, 5.447f, + 5.602f, 5.332f, 4.979f, 4.552f, 4.170f, 3.310f, 2.281f, 0.852f, -0.866f, + -2.591f, -4.529f, -6.522f, -8.839f, -11.338f, -13.763f, -16.342f, -18.906f, -21.358f, + -23.759f, -26.028f, -28.070f, -29.762f, -29.477f, -32.457f, -33.490f, -35.518f, -37.698f, + -39.888f, -42.014f, -42.990f, -44.277f, -44.964f, -45.795f, -46.599f, -47.849f, -48.804f, + -49.330f, -48.882f, -48.771f, -48.092f, -46.078f, -43.018f, -43.856f, -43.686f, -42.898f, + -42.461f, -42.019f, -39.741f, -37.328f, -34.863f, -33.100f, -31.302f, -30.139f, -29.434f, + -29.623f, -32.145f, -32.076f, -31.191f, -32.634f, -29.403f, -33.675f, -34.539f, -35.906f, + -39.079f, -42.208f, -44.463f, -46.104f, -46.776f, -46.208f, -46.636f, -46.961f, -47.862f, + -47.967f, -48.121f, -48.132f, -47.658f, -48.031f, -48.460f, -48.554f, -48.838f, -49.250f, + -51.005f, -48.956f, -43.934f, -38.006f, -38.083f, -39.136f, -40.309f, -41.096f, -42.259f, + -46.890f, -54.504f, -48.364f, -48.687f, -55.661f, -57.777f, -57.710f, -59.599f, -57.832f, + -52.558f, -49.740f, -48.373f, -46.693f, -45.287f, -44.768f, -43.311f, -40.312f, -39.127f, + -36.842f, -38.200f, -39.785f, -40.523f, -38.647f, -34.422f, -34.526f, -32.703f, -29.653f, + -29.144f, -27.532f, -24.911f, -22.295f, -19.850f, -16.473f, -14.309f, -14.364f, -14.276f, + -13.475f, -12.515f, -9.667f, -8.906f, -7.662f, -6.661f, -4.821f, -1.468f, 2.180f, + 5.475f, 5.587f, 6.766f, 9.531f, 12.050f, 13.169f, 12.954f, 13.247f, 13.206f, + 13.606f }, + { -29.534f, -28.955f, -27.659f, -25.861f, -23.604f, -20.921f, -18.326f, -16.246f, -13.819f, + -11.477f, -10.733f, -10.868f, -10.354f, -8.992f, -7.946f, -7.067f, -5.532f, -2.992f, + -2.647f, -3.641f, -0.913f, 2.299f, 2.357f, -0.734f, -1.257f, 1.481f, 0.411f, + -1.558f, -2.145f, -0.739f, 0.333f, 1.812f, 2.876f, 3.625f, 4.221f, 4.223f, + 4.404f, 3.993f, 3.620f, 3.043f, 2.455f, 1.850f, 0.758f, -0.785f, -2.618f, + -4.548f, -6.435f, -8.432f, -10.824f, -13.216f, -15.663f, -18.083f, -20.710f, -23.199f, + -25.491f, -27.726f, -29.611f, -31.925f, -30.650f, -33.727f, -35.054f, -36.846f, -38.376f, + -39.959f, -42.022f, -43.232f, -44.443f, -45.838f, -46.593f, -47.162f, -47.605f, -47.652f, + -48.005f, -47.686f, -46.252f, -43.988f, -42.446f, -42.107f, -39.167f, -39.273f, -38.598f, + -37.396f, -35.311f, -33.754f, -31.345f, -29.658f, -27.664f, -26.676f, -26.179f, -27.047f, + -29.074f, -25.725f, -27.033f, -28.612f, -22.450f, -25.693f, -29.777f, -30.510f, -31.927f, + -33.975f, -35.792f, -37.764f, -39.257f, -40.676f, -42.390f, -43.097f, -43.839f, -44.153f, + -44.406f, -43.961f, -43.621f, -43.326f, -44.201f, -44.133f, -45.874f, -45.496f, -45.554f, + -45.540f, -42.191f, -40.303f, -36.075f, -37.353f, -38.622f, -39.733f, -40.007f, -41.921f, + -47.599f, -53.604f, -47.404f, -47.213f, -54.977f, -56.310f, -56.238f, -56.760f, -55.964f, + -50.850f, -49.317f, -47.326f, -45.511f, -45.336f, -43.147f, -42.890f, -39.879f, -38.027f, + -35.719f, -37.709f, -40.547f, -40.391f, -39.579f, -34.912f, -34.626f, -34.114f, -30.492f, + -29.264f, -27.563f, -25.127f, -22.698f, -19.590f, -16.635f, -15.145f, -14.577f, -13.798f, + -12.869f, -12.768f, -10.114f, -9.088f, -7.998f, -6.785f, -5.063f, -1.554f, 2.188f, + 5.386f, 4.974f, 6.768f, 9.465f, 12.121f, 13.102f, 12.827f, 13.213f, 13.172f, + 13.606f }, + { -29.534f, -28.985f, -27.773f, -26.078f, -23.888f, -21.250f, -18.805f, -17.021f, -14.735f, + -12.512f, -11.679f, -11.605f, -11.617f, -10.237f, -9.017f, -7.987f, -6.957f, -5.008f, + -4.554f, -4.786f, -2.428f, 0.210f, 1.033f, -1.169f, -2.843f, 0.421f, 0.019f, + -2.935f, -3.175f, -2.026f, -0.956f, 0.370f, 1.028f, 2.228f, 2.780f, 2.458f, + 2.835f, 2.778f, 2.100f, 1.568f, 0.999f, 0.193f, -0.881f, -2.452f, -4.362f, + -6.159f, -8.173f, -10.545f, -12.700f, -14.928f, -17.539f, -19.991f, -22.422f, -24.999f, + -27.196f, -29.269f, -31.085f, -33.396f, -32.235f, -34.379f, -35.565f, -35.893f, -37.001f, + -39.999f, -41.574f, -43.068f, -44.599f, -45.956f, -47.192f, -47.821f, -47.748f, -47.303f, + -46.571f, -45.606f, -44.754f, -43.288f, -41.467f, -39.858f, -37.874f, -36.695f, -35.436f, + -32.338f, -30.412f, -28.999f, -27.070f, -24.154f, -21.754f, -21.444f, -24.639f, -22.571f, + -19.016f, -18.904f, -21.020f, -19.321f, -20.083f, -20.949f, -23.338f, -25.321f, -27.193f, + -29.294f, -31.694f, -33.746f, -35.970f, -38.292f, -38.144f, -38.873f, -39.928f, -41.133f, + -41.563f, -41.484f, -41.573f, -41.746f, -41.951f, -42.592f, -42.816f, -41.328f, -42.043f, + -43.708f, -39.965f, -36.733f, -35.142f, -35.716f, -36.590f, -37.431f, -38.524f, -41.005f, + -47.401f, -50.054f, -46.550f, -46.408f, -56.990f, -56.336f, -55.846f, -56.153f, -54.463f, + -49.210f, -49.435f, -45.696f, -44.357f, -44.613f, -42.644f, -41.523f, -38.895f, -37.126f, + -36.123f, -38.064f, -41.068f, -40.278f, -39.577f, -35.505f, -34.429f, -34.202f, -31.112f, + -29.376f, -27.748f, -24.601f, -22.534f, -19.122f, -16.445f, -15.404f, -14.592f, -13.426f, + -12.722f, -12.602f, -10.693f, -9.219f, -8.019f, -6.964f, -5.252f, -1.612f, 2.226f, + 5.257f, 4.626f, 6.740f, 9.387f, 12.155f, 13.024f, 12.697f, 13.175f, 13.139f, + 13.606f }, + { -29.534f, -29.017f, -27.885f, -26.303f, -24.182f, -21.591f, -19.323f, -17.750f, -15.625f, + -13.566f, -12.639f, -12.357f, -12.846f, -11.960f, -10.294f, -9.127f, -8.211f, -6.878f, + -6.152f, -5.860f, -4.111f, -2.496f, -1.543f, -2.104f, -2.271f, -0.567f, -0.337f, + -4.468f, -4.741f, -3.744f, -2.225f, -0.864f, -0.174f, 0.684f, 1.278f, 1.590f, + 1.273f, 1.438f, 0.812f, 0.096f, -0.558f, -1.562f, -2.601f, -4.027f, -5.938f, + -7.973f, -9.774f, -12.133f, -14.494f, -16.847f, -19.253f, -21.759f, -24.165f, -26.406f, + -28.470f, -30.405f, -32.139f, -34.070f, -33.756f, -35.563f, -36.500f, -36.639f, -37.682f, + -39.846f, -41.244f, -42.565f, -43.990f, -45.324f, -46.527f, -47.231f, -47.212f, -46.404f, + -45.314f, -44.186f, -43.074f, -41.479f, -40.498f, -38.026f, -36.004f, -33.352f, -31.967f, + -29.510f, -26.286f, -23.329f, -21.479f, -19.172f, -18.623f, -22.610f, -17.362f, -16.648f, + -12.513f, -11.930f, -10.454f, -12.209f, -15.450f, -17.239f, -18.852f, -21.067f, -22.776f, + -25.073f, -28.006f, -30.225f, -32.348f, -33.958f, -35.033f, -35.976f, -36.752f, -38.152f, + -39.291f, -39.341f, -39.250f, -39.446f, -40.005f, -40.911f, -40.611f, -40.017f, -39.217f, + -39.586f, -36.802f, -34.035f, -33.885f, -33.985f, -34.462f, -35.768f, -37.724f, -39.731f, + -43.953f, -47.384f, -45.401f, -48.352f, -56.961f, -55.645f, -55.895f, -55.314f, -53.319f, + -48.987f, -49.145f, -44.976f, -43.831f, -43.507f, -42.289f, -40.099f, -37.628f, -36.342f, + -37.437f, -39.628f, -40.661f, -40.180f, -39.540f, -36.080f, -34.176f, -33.623f, -31.170f, + -29.917f, -28.082f, -23.850f, -22.143f, -19.302f, -16.268f, -15.697f, -14.797f, -13.029f, + -12.534f, -12.152f, -11.098f, -9.333f, -7.918f, -7.148f, -5.290f, -1.533f, 2.329f, + 5.181f, 4.556f, 6.679f, 9.320f, 12.139f, 12.927f, 12.565f, 13.134f, 13.107f, + 13.606f }, + { -29.534f, -29.049f, -27.996f, -26.534f, -24.489f, -21.952f, -19.877f, -18.439f, -16.455f, + -14.550f, -13.682f, -13.369f, -14.048f, -14.056f, -11.624f, -10.604f, -9.383f, -8.206f, + -7.598f, -7.256f, -5.931f, -4.728f, -3.376f, -2.699f, -1.440f, -1.012f, -1.750f, + -5.836f, -6.210f, -5.179f, -3.480f, -1.910f, -1.264f, -0.741f, 0.001f, 0.291f, + 0.065f, -0.043f, -0.571f, -1.337f, -2.186f, -2.884f, -4.241f, -5.691f, -7.475f, + -9.424f, -11.698f, -13.930f, -16.107f, -18.557f, -21.037f, -23.362f, -25.662f, -27.853f, + -29.752f, -31.545f, -32.950f, -35.036f, -34.627f, -36.906f, -37.669f, -38.261f, -39.388f, + -39.784f, -39.026f, -41.687f, -42.964f, -44.005f, -45.070f, -45.597f, -46.072f, -45.381f, + -43.794f, -42.131f, -40.499f, -39.592f, -37.892f, -36.574f, -33.436f, -28.624f, -26.696f, + -25.350f, -22.660f, -18.388f, -16.738f, -18.756f, -18.736f, -15.032f, -15.937f, -11.869f, + -7.164f, -6.713f, -6.779f, -8.616f, -10.514f, -12.602f, -14.787f, -16.730f, -18.779f, + -21.905f, -25.356f, -27.666f, -29.490f, -31.763f, -33.153f, -34.152f, -35.141f, -36.560f, + -37.238f, -37.499f, -37.448f, -37.267f, -37.901f, -38.670f, -38.851f, -38.927f, -37.869f, + -36.248f, -33.506f, -31.976f, -31.653f, -32.061f, -33.683f, -34.535f, -36.364f, -39.783f, + -45.708f, -45.848f, -44.247f, -51.897f, -55.322f, -55.625f, -55.417f, -53.369f, -52.005f, + -49.338f, -47.841f, -44.478f, -43.509f, -43.362f, -41.668f, -39.569f, -36.815f, -36.236f, + -39.183f, -40.230f, -40.260f, -39.020f, -38.734f, -36.181f, -34.245f, -32.926f, -31.189f, + -30.141f, -28.782f, -23.926f, -22.068f, -19.930f, -16.496f, -16.892f, -15.010f, -12.318f, + -12.421f, -11.763f, -11.309f, -9.290f, -7.880f, -7.115f, -5.014f, -1.243f, 2.463f, + 5.160f, 4.670f, 6.600f, 9.285f, 12.068f, 12.807f, 12.432f, 13.087f, 13.075f, + 13.606f }, + { -29.534f, -29.082f, -28.105f, -26.772f, -24.808f, -22.332f, -20.445f, -19.099f, -17.207f, + -15.425f, -14.784f, -14.643f, -15.284f, -16.109f, -13.014f, -12.222f, -10.764f, -9.481f, + -9.170f, -8.847f, -7.434f, -6.247f, -4.917f, -3.180f, -2.006f, -1.737f, -4.371f, + -7.229f, -7.134f, -6.017f, -4.385f, -2.994f, -2.308f, -1.627f, -1.120f, -0.590f, + -0.801f, -1.392f, -1.937f, -2.677f, -3.619f, -4.513f, -5.608f, -7.348f, -9.182f, + -10.881f, -13.140f, -15.922f, -18.059f, -20.181f, -22.609f, -24.922f, -27.182f, -29.318f, + -31.152f, -32.754f, -34.873f, -36.540f, -35.821f, -37.067f, -38.185f, -38.627f, -38.993f, + -39.074f, -39.847f, -40.875f, -41.804f, -42.723f, -43.562f, -44.312f, -43.960f, -43.534f, + -42.569f, -41.829f, -39.761f, -36.924f, -34.574f, -31.366f, -28.257f, -25.930f, -23.151f, + -20.644f, -18.726f, -16.848f, -16.668f, -14.938f, -10.372f, -9.765f, -3.401f, -0.385f, + -1.964f, -3.164f, -3.932f, -5.126f, -6.538f, -7.989f, -10.370f, -13.935f, -16.916f, + -19.891f, -22.697f, -25.178f, -27.343f, -29.178f, -30.011f, -31.292f, -32.094f, -33.128f, + -34.321f, -34.562f, -35.306f, -35.773f, -36.761f, -37.002f, -37.042f, -36.807f, -36.823f, + -35.095f, -32.064f, -30.762f, -31.127f, -31.241f, -32.469f, -33.852f, -35.663f, -39.138f, + -44.352f, -43.554f, -44.789f, -51.792f, -54.294f, -54.810f, -54.121f, -51.793f, -50.846f, + -48.903f, -45.806f, -43.397f, -43.703f, -43.198f, -41.191f, -39.456f, -36.520f, -36.964f, + -39.718f, -39.700f, -38.960f, -37.686f, -37.335f, -36.033f, -34.067f, -32.663f, -31.171f, + -29.516f, -29.027f, -24.867f, -22.245f, -19.959f, -16.665f, -17.349f, -14.966f, -11.930f, + -13.140f, -11.848f, -11.322f, -9.029f, -7.815f, -6.678f, -4.355f, -0.780f, 2.552f, + 5.103f, 4.816f, 6.530f, 9.299f, 11.947f, 12.660f, 12.304f, 13.033f, 13.045f, + 13.606f }, + { -29.534f, -29.116f, -28.213f, -27.015f, -25.141f, -22.726f, -20.998f, -19.740f, -17.897f, + -16.225f, -15.878f, -15.984f, -16.704f, -17.730f, -14.564f, -13.595f, -12.300f, -11.231f, + -10.837f, -10.100f, -8.773f, -7.957f, -7.564f, -5.647f, -3.244f, -4.120f, -7.723f, + -8.454f, -7.925f, -6.881f, -5.479f, -4.286f, -3.547f, -2.843f, -2.244f, -2.214f, + -2.271f, -2.592f, -3.269f, -3.929f, -5.044f, -5.991f, -7.326f, -8.936f, -10.954f, + -12.583f, -14.440f, -16.951f, -19.426f, -21.855f, -24.243f, -26.563f, -28.571f, -30.692f, + -32.577f, -34.094f, -36.623f, -38.793f, -37.194f, -38.562f, -38.140f, -38.433f, -38.432f, + -38.974f, -39.618f, -39.940f, -40.712f, -41.252f, -41.748f, -42.160f, -42.187f, -41.836f, + -41.337f, -39.804f, -37.299f, -34.075f, -29.971f, -26.474f, -24.068f, -22.655f, -20.808f, + -16.803f, -14.674f, -14.935f, -12.496f, -8.891f, -2.837f, 4.160f, 5.147f, 3.317f, + 1.980f, 1.433f, -0.163f, -1.066f, -2.178f, -3.173f, -7.428f, -11.618f, -14.271f, + -16.869f, -19.424f, -21.993f, -23.817f, -25.302f, -26.585f, -29.043f, -30.512f, -31.592f, + -32.481f, -33.413f, -33.711f, -34.090f, -34.274f, -34.785f, -35.525f, -34.720f, -35.594f, + -34.668f, -32.953f, -32.393f, -32.222f, -30.976f, -32.114f, -34.049f, -35.706f, -37.924f, + -42.555f, -43.201f, -46.203f, -51.532f, -52.731f, -52.883f, -52.691f, -49.998f, -49.440f, + -47.337f, -44.577f, -43.756f, -43.926f, -42.482f, -40.899f, -38.447f, -37.888f, -37.889f, + -38.905f, -38.653f, -38.136f, -36.570f, -36.243f, -35.511f, -33.495f, -32.365f, -30.621f, + -29.387f, -28.645f, -25.148f, -21.991f, -18.991f, -16.376f, -16.463f, -14.906f, -12.350f, + -14.193f, -12.381f, -11.006f, -8.803f, -7.546f, -5.939f, -3.474f, -0.270f, 2.551f, + 4.889f, 4.850f, 6.502f, 9.364f, 11.789f, 12.486f, 12.181f, 12.971f, 13.015f, + 13.606f }, + { -29.534f, -29.150f, -28.318f, -27.262f, -25.484f, -23.128f, -21.510f, -20.367f, -18.558f, + -17.022f, -16.924f, -17.192f, -18.401f, -18.760f, -16.078f, -14.625f, -13.733f, -13.174f, + -12.446f, -11.225f, -10.269f, -9.590f, -9.397f, -8.125f, -5.573f, -6.787f, -9.325f, + -9.455f, -8.523f, -7.660f, -6.735f, -5.574f, -4.834f, -4.206f, -3.803f, -3.449f, + -3.536f, -4.140f, -4.542f, -5.364f, -6.343f, -7.506f, -8.808f, -10.487f, -12.469f, + -14.124f, -16.142f, -18.463f, -20.788f, -23.070f, -25.439f, -27.811f, -30.036f, -32.032f, + -33.497f, -37.120f, -37.597f, -39.365f, -40.195f, -39.276f, -38.943f, -38.201f, -37.651f, + -38.259f, -38.858f, -39.131f, -39.554f, -39.315f, -39.536f, -39.479f, -39.925f, -39.641f, + -38.824f, -37.459f, -35.423f, -32.191f, -28.171f, -23.794f, -21.091f, -18.729f, -15.987f, + -12.867f, -13.219f, -11.839f, -10.484f, -3.999f, 7.362f, 8.368f, 7.677f, 7.506f, + 6.350f, 4.482f, 3.779f, 2.027f, 0.725f, -1.237f, -5.238f, -8.569f, -10.771f, + -13.149f, -15.734f, -17.992f, -19.907f, -22.218f, -24.179f, -26.994f, -29.583f, -29.650f, + -31.907f, -30.570f, -31.367f, -32.454f, -32.666f, -32.788f, -33.170f, -32.686f, -32.704f, + -34.453f, -34.666f, -37.849f, -41.015f, -32.766f, -31.435f, -32.769f, -35.664f, -38.362f, + -43.336f, -43.047f, -48.993f, -50.900f, -49.922f, -50.310f, -50.144f, -48.813f, -47.001f, + -46.974f, -44.723f, -43.530f, -43.188f, -41.501f, -40.380f, -38.307f, -38.010f, -37.865f, + -37.834f, -36.836f, -36.582f, -35.920f, -34.815f, -33.967f, -32.914f, -31.381f, -30.238f, + -29.846f, -27.999f, -23.958f, -21.239f, -18.312f, -16.028f, -15.690f, -14.633f, -12.793f, + -14.274f, -12.942f, -10.527f, -8.908f, -7.096f, -5.239f, -2.676f, 0.163f, 2.466f, + 4.446f, 4.699f, 6.543f, 9.461f, 11.614f, 12.289f, 12.069f, 12.901f, 12.987f, + 13.606f }, + { -29.534f, -29.184f, -28.422f, -27.512f, -25.835f, -23.529f, -21.965f, -20.981f, -19.224f, + -17.869f, -17.943f, -18.213f, -20.192f, -19.254f, -17.137f, -15.653f, -15.152f, -14.913f, + -13.997f, -12.657f, -11.752f, -11.201f, -10.615f, -9.480f, -8.066f, -8.285f, -10.140f, + -10.264f, -9.080f, -8.004f, -7.371f, -6.813f, -5.882f, -5.482f, -5.015f, -4.963f, + -4.834f, -5.170f, -5.908f, -6.809f, -7.728f, -8.845f, -10.240f, -11.987f, -13.916f, + -15.701f, -17.708f, -20.037f, -22.155f, -24.452f, -26.680f, -29.018f, -31.273f, -33.374f, + -35.507f, -38.035f, -39.895f, -40.092f, -40.436f, -39.345f, -38.831f, -38.355f, -38.055f, + -37.988f, -37.952f, -37.902f, -38.660f, -37.434f, -34.946f, -36.646f, -37.187f, -37.349f, + -36.320f, -34.845f, -33.229f, -31.018f, -26.942f, -22.028f, -17.211f, -13.780f, -11.260f, + -10.025f, -12.152f, -9.350f, -3.998f, 7.620f, 11.303f, 12.084f, 11.646f, 10.955f, + 10.414f, 8.552f, 7.551f, 5.488f, 2.903f, 0.499f, -3.097f, -5.412f, -7.083f, + -9.402f, -12.188f, -14.798f, -17.232f, -19.700f, -21.367f, -24.488f, -26.825f, -27.129f, + -29.982f, -29.038f, -29.683f, -31.107f, -30.396f, -31.217f, -31.687f, -30.965f, -30.882f, + -32.166f, -37.263f, -42.559f, -43.693f, -40.560f, -34.876f, -34.149f, -36.421f, -38.886f, + -42.258f, -43.552f, -46.919f, -48.222f, -47.233f, -48.031f, -48.087f, -45.887f, -45.812f, + -45.765f, -44.101f, -43.199f, -42.590f, -41.037f, -39.978f, -37.811f, -39.147f, -37.146f, + -35.609f, -35.260f, -35.646f, -35.327f, -33.530f, -32.351f, -32.061f, -30.524f, -29.799f, + -29.637f, -27.156f, -22.647f, -20.701f, -18.449f, -16.088f, -15.428f, -13.722f, -12.558f, + -13.369f, -13.151f, -10.363f, -9.190f, -6.644f, -4.806f, -2.158f, 0.479f, 2.311f, + 3.790f, 4.383f, 6.658f, 9.560f, 11.441f, 12.074f, 11.970f, 12.820f, 12.960f, + 13.606f }, + { -29.534f, -29.220f, -28.525f, -27.761f, -26.192f, -23.924f, -22.372f, -21.577f, -19.910f, + -18.760f, -18.970f, -19.138f, -21.601f, -19.385f, -17.661f, -16.911f, -16.752f, -16.619f, + -15.609f, -14.027f, -13.031f, -13.019f, -12.072f, -10.980f, -10.020f, -9.251f, -11.418f, + -11.572f, -9.973f, -8.859f, -7.926f, -7.597f, -6.943f, -6.593f, -6.179f, -6.062f, + -6.089f, -6.443f, -7.032f, -8.019f, -9.262f, -10.203f, -11.765f, -13.297f, -15.145f, + -16.957f, -19.198f, -21.440f, -23.558f, -25.585f, -28.008f, -30.266f, -32.378f, -34.300f, + -37.064f, -39.742f, -40.891f, -40.847f, -41.046f, -39.568f, -39.222f, -38.931f, -38.547f, + -37.869f, -37.434f, -37.830f, -36.965f, -36.991f, -34.002f, -35.348f, -35.113f, -35.029f, + -34.088f, -32.734f, -30.743f, -28.367f, -24.647f, -19.307f, -13.797f, -8.364f, -6.048f, + -9.393f, -11.687f, -6.018f, 7.611f, 13.225f, 14.182f, 14.803f, 15.268f, 15.029f, + 14.418f, 12.950f, 11.715f, 9.358f, 6.203f, 3.131f, 0.446f, -1.517f, -3.446f, + -6.096f, -9.052f, -11.924f, -14.073f, -16.084f, -18.078f, -21.198f, -23.453f, -24.596f, + -24.756f, -26.914f, -28.058f, -29.378f, -30.018f, -30.102f, -31.709f, -31.800f, -31.042f, + -31.076f, -37.037f, -41.823f, -42.342f, -42.709f, -40.917f, -38.067f, -37.978f, -39.465f, + -40.034f, -42.068f, -44.619f, -45.095f, -44.625f, -45.663f, -45.806f, -43.775f, -44.058f, + -43.640f, -42.469f, -42.238f, -41.351f, -40.403f, -39.806f, -38.313f, -39.964f, -35.881f, + -33.971f, -34.486f, -34.278f, -34.821f, -33.651f, -31.778f, -31.123f, -29.963f, -29.484f, + -29.113f, -26.474f, -22.040f, -20.446f, -18.576f, -16.493f, -15.221f, -12.615f, -11.841f, + -12.377f, -12.810f, -10.604f, -9.138f, -6.264f, -4.538f, -1.866f, 0.710f, 2.062f, + 3.018f, 4.002f, 6.828f, 9.623f, 11.286f, 11.850f, 11.888f, 12.729f, 12.935f, + 13.606f }, + { -29.534f, -29.255f, -28.625f, -28.009f, -26.552f, -24.314f, -22.757f, -22.158f, -20.618f, + -19.659f, -20.005f, -20.094f, -22.232f, -19.386f, -18.104f, -18.185f, -18.324f, -18.399f, + -17.312f, -15.193f, -14.377f, -14.577f, -13.064f, -12.085f, -12.111f, -10.559f, -11.844f, + -12.585f, -11.464f, -10.060f, -8.876f, -8.383f, -8.068f, -7.622f, -7.407f, -7.134f, + -7.252f, -7.791f, -8.458f, -9.414f, -10.398f, -11.728f, -13.091f, -14.667f, -16.406f, + -18.534f, -20.629f, -22.709f, -25.027f, -26.968f, -29.177f, -31.313f, -33.225f, -34.836f, + -38.144f, -40.493f, -40.943f, -40.395f, -40.389f, -40.296f, -39.556f, -39.001f, -38.905f, + -38.008f, -36.997f, -37.076f, -37.099f, -36.280f, -35.739f, -34.874f, -33.837f, -33.098f, + -31.923f, -30.561f, -28.185f, -24.649f, -20.610f, -16.572f, -12.734f, -7.986f, -4.677f, + -8.951f, -6.802f, 7.619f, 14.027f, 15.950f, 17.187f, 18.286f, 18.841f, 18.929f, + 18.051f, 16.916f, 15.413f, 13.346f, 10.218f, 7.622f, 5.730f, 3.146f, -0.020f, + -2.904f, -5.068f, -7.548f, -9.935f, -12.022f, -14.087f, -16.802f, -19.343f, -19.816f, + -21.199f, -23.615f, -25.120f, -27.477f, -28.726f, -28.941f, -31.280f, -31.595f, -30.438f, + -30.926f, -34.598f, -38.931f, -40.583f, -41.894f, -40.755f, -38.524f, -38.168f, -37.533f, + -36.851f, -39.744f, -42.385f, -41.606f, -43.169f, -41.977f, -43.350f, -42.571f, -41.886f, + -41.639f, -40.537f, -40.230f, -39.806f, -39.438f, -39.034f, -38.607f, -39.319f, -35.333f, + -33.975f, -32.938f, -33.510f, -34.416f, -33.639f, -31.788f, -31.094f, -29.896f, -29.213f, + -28.993f, -26.248f, -21.897f, -20.052f, -18.500f, -16.601f, -14.970f, -11.895f, -10.908f, + -11.551f, -12.005f, -10.780f, -8.554f, -5.849f, -4.225f, -1.630f, 0.889f, 1.668f, + 2.251f, 3.682f, 7.003f, 9.620f, 11.159f, 11.624f, 11.824f, 12.627f, 12.912f, + 13.606f }, + { -29.534f, -29.291f, -28.724f, -28.254f, -26.913f, -24.704f, -23.161f, -22.734f, -21.345f, + -20.544f, -21.011f, -21.150f, -22.198f, -19.511f, -18.932f, -19.337f, -19.699f, -20.014f, + -18.920f, -16.627f, -15.807f, -15.862f, -14.267f, -13.303f, -13.583f, -11.930f, -13.174f, + -13.336f, -13.211f, -11.440f, -10.063f, -9.388f, -9.185f, -8.875f, -8.757f, -8.509f, + -8.581f, -9.041f, -9.779f, -10.719f, -11.744f, -12.874f, -14.484f, -15.969f, -17.670f, + -19.878f, -22.020f, -24.079f, -26.051f, -28.242f, -30.185f, -32.143f, -33.847f, -35.520f, + -38.806f, -40.499f, -40.490f, -40.043f, -40.629f, -40.326f, -39.447f, -39.087f, -38.852f, + -37.792f, -37.149f, -37.115f, -34.962f, -33.784f, -32.976f, -32.964f, -32.297f, -31.151f, + -29.724f, -27.835f, -25.246f, -21.674f, -17.385f, -12.792f, -9.300f, -7.320f, -7.770f, + -5.856f, 1.904f, 20.129f, 18.627f, 19.670f, 21.365f, 21.773f, 22.295f, 22.032f, + 22.043f, 21.201f, 19.845f, 17.857f, 14.981f, 11.861f, 9.515f, 6.924f, 4.218f, + 1.524f, -1.483f, -3.074f, -5.101f, -7.265f, -8.831f, -12.113f, -14.269f, -17.360f, + -19.484f, -21.452f, -23.408f, -24.180f, -25.965f, -27.746f, -29.273f, -29.523f, -28.376f, + -29.427f, -31.318f, -34.321f, -37.827f, -39.249f, -37.951f, -35.979f, -36.315f, -36.246f, + -36.057f, -36.792f, -39.124f, -39.137f, -39.767f, -40.348f, -39.789f, -40.413f, -39.754f, + -39.591f, -38.559f, -37.758f, -36.766f, -36.869f, -37.186f, -37.061f, -36.454f, -35.153f, + -32.557f, -32.474f, -32.559f, -33.611f, -33.421f, -31.211f, -30.532f, -29.793f, -29.087f, + -28.584f, -25.985f, -21.697f, -19.256f, -18.334f, -16.405f, -14.578f, -11.311f, -9.947f, + -10.758f, -11.185f, -10.559f, -7.793f, -5.288f, -3.883f, -1.387f, 0.984f, 1.119f, + 1.594f, 3.520f, 7.126f, 9.541f, 11.062f, 11.406f, 11.779f, 12.515f, 12.890f, + 13.606f }, + { -29.534f, -29.327f, -28.822f, -28.492f, -27.273f, -25.102f, -23.625f, -23.325f, -22.097f, + -21.447f, -21.970f, -22.282f, -22.130f, -19.996f, -20.123f, -20.714f, -21.321f, -21.683f, + -20.372f, -18.069f, -16.805f, -16.858f, -15.532f, -15.147f, -14.361f, -13.140f, -15.562f, + -14.525f, -13.964f, -12.622f, -11.158f, -10.659f, -10.166f, -9.901f, -9.735f, -9.804f, + -9.842f, -10.264f, -11.018f, -11.973f, -13.052f, -14.127f, -15.598f, -17.395f, -19.030f, + -21.034f, -23.318f, -25.216f, -27.403f, -29.238f, -31.083f, -32.863f, -34.121f, -36.627f, + -39.371f, -40.097f, -39.729f, -40.628f, -40.673f, -40.187f, -39.922f, -39.404f, -39.452f, + -37.887f, -37.687f, -35.356f, -32.379f, -31.820f, -31.114f, -31.257f, -30.054f, -29.096f, + -27.308f, -25.046f, -21.993f, -18.374f, -14.426f, -9.525f, -6.512f, -5.275f, -6.581f, + -2.772f, 12.361f, 21.680f, 21.157f, 22.874f, 23.886f, 25.062f, 25.654f, 26.036f, + 26.013f, 25.156f, 23.070f, 21.383f, 18.955f, 16.684f, 14.236f, 10.941f, 7.779f, + 6.156f, 2.760f, 1.067f, 1.192f, -2.300f, -4.468f, -7.348f, -11.745f, -14.519f, + -16.043f, -17.835f, -20.635f, -21.799f, -23.015f, -25.512f, -26.711f, -27.152f, -26.480f, + -26.945f, -28.445f, -30.438f, -32.462f, -35.125f, -33.932f, -33.981f, -34.954f, -35.380f, + -33.942f, -33.777f, -35.713f, -35.749f, -36.301f, -37.970f, -36.179f, -37.948f, -37.316f, + -37.015f, -36.388f, -35.472f, -34.393f, -33.769f, -34.263f, -34.455f, -34.272f, -34.227f, + -32.071f, -31.568f, -32.185f, -33.233f, -32.818f, -30.589f, -29.414f, -29.041f, -28.990f, + -27.786f, -25.231f, -20.881f, -18.121f, -17.904f, -16.551f, -14.051f, -10.346f, -9.239f, + -10.183f, -10.723f, -10.110f, -7.210f, -4.637f, -3.703f, -1.239f, 0.898f, 0.494f, + 1.103f, 3.541f, 7.150f, 9.403f, 10.989f, 11.204f, 11.751f, 12.392f, 12.871f, + 13.606f }, + { -29.534f, -29.364f, -28.917f, -28.723f, -27.631f, -25.521f, -24.176f, -23.950f, -22.890f, + -22.435f, -22.934f, -23.418f, -22.650f, -20.997f, -21.394f, -22.571f, -23.556f, -23.969f, + -22.079f, -19.020f, -17.521f, -17.624f, -16.621f, -16.550f, -14.910f, -15.107f, -17.655f, + -16.047f, -14.834f, -13.555f, -12.338f, -11.911f, -11.487f, -11.165f, -10.795f, -10.928f, + -11.138f, -11.503f, -12.128f, -12.946f, -14.149f, -15.400f, -16.944f, -18.614f, -20.502f, + -22.456f, -24.456f, -26.369f, -28.423f, -30.390f, -31.967f, -33.418f, -34.367f, -37.390f, + -39.850f, -39.987f, -39.512f, -39.898f, -40.106f, -40.095f, -39.921f, -39.646f, -39.121f, + -38.136f, -36.609f, -33.988f, -32.370f, -31.487f, -30.994f, -29.602f, -27.664f, -26.757f, + -25.100f, -22.494f, -19.437f, -15.270f, -9.412f, -5.591f, -2.915f, -2.442f, -3.742f, + 1.020f, 19.057f, 22.256f, 23.896f, 25.614f, 26.960f, 28.112f, 29.281f, 30.053f, + 30.414f, 28.755f, 26.490f, 24.221f, 21.912f, 19.636f, 17.300f, 14.986f, 12.506f, + 10.354f, 7.962f, 5.647f, 4.184f, 1.242f, -2.050f, -5.427f, -9.048f, -10.533f, + -12.626f, -13.898f, -16.623f, -18.849f, -20.234f, -22.356f, -23.742f, -24.505f, -23.910f, + -24.286f, -25.245f, -27.431f, -27.322f, -29.411f, -28.623f, -31.388f, -33.186f, -33.502f, + -31.353f, -31.371f, -32.186f, -32.032f, -32.062f, -33.170f, -32.727f, -34.398f, -35.093f, + -34.296f, -33.858f, -33.068f, -32.338f, -31.944f, -32.193f, -31.908f, -31.887f, -31.236f, + -32.877f, -32.303f, -28.789f, -29.788f, -31.615f, -29.651f, -28.314f, -28.496f, -27.869f, + -26.492f, -23.962f, -19.927f, -17.400f, -17.384f, -16.489f, -13.575f, -9.317f, -8.902f, + -10.024f, -10.533f, -9.694f, -6.738f, -4.075f, -3.688f, -1.296f, 0.530f, -0.063f, + 0.788f, 3.698f, 7.063f, 9.250f, 10.928f, 11.024f, 11.739f, 12.261f, 12.853f, + 13.606f }, + { -29.534f, -29.401f, -29.011f, -28.946f, -27.988f, -25.969f, -24.822f, -24.622f, -23.737f, + -23.552f, -23.998f, -24.499f, -23.823f, -22.489f, -22.748f, -24.520f, -25.864f, -26.558f, + -24.226f, -20.047f, -18.279f, -18.392f, -18.010f, -17.716f, -15.249f, -17.216f, -19.295f, + -17.850f, -16.162f, -14.709f, -13.579f, -13.001f, -12.690f, -12.432f, -12.153f, -12.082f, + -12.160f, -12.675f, -13.320f, -14.108f, -15.248f, -16.621f, -18.024f, -19.646f, -21.405f, + -23.486f, -25.467f, -27.443f, -29.220f, -31.040f, -32.551f, -33.756f, -34.888f, -37.656f, + -39.970f, -38.893f, -36.850f, -37.750f, -39.305f, -39.783f, -39.551f, -39.257f, -38.102f, + -37.224f, -34.763f, -33.560f, -33.132f, -32.224f, -30.688f, -28.152f, -25.772f, -23.693f, + -22.000f, -20.096f, -17.512f, -14.067f, -9.586f, -4.376f, 0.377f, -0.161f, -2.172f, + 7.220f, 23.520f, 24.376f, 26.294f, 27.840f, 29.368f, 31.392f, 32.590f, 33.751f, + 33.904f, 32.824f, 29.999f, 27.503f, 25.245f, 22.852f, 21.199f, 17.674f, 16.293f, + 13.060f, 10.843f, 8.636f, 5.960f, 3.443f, -0.473f, -2.657f, -6.312f, -7.635f, + -8.483f, -10.467f, -12.674f, -14.684f, -17.398f, -18.751f, -20.179f, -21.409f, -20.716f, + -21.607f, -22.510f, -23.731f, -23.688f, -24.386f, -26.251f, -28.410f, -28.295f, -31.517f, + -28.832f, -29.851f, -29.788f, -28.467f, -28.800f, -27.841f, -29.346f, -31.277f, -32.127f, + -31.935f, -31.536f, -31.007f, -30.491f, -29.776f, -29.537f, -29.477f, -29.605f, -29.142f, + -31.154f, -29.784f, -28.000f, -26.610f, -29.016f, -28.546f, -27.674f, -27.265f, -26.561f, + -25.129f, -22.617f, -19.136f, -17.047f, -17.036f, -15.764f, -13.300f, -9.214f, -9.026f, + -10.181f, -10.394f, -9.348f, -6.234f, -3.732f, -3.528f, -1.518f, -0.158f, -0.449f, + 0.629f, 3.901f, 6.895f, 9.135f, 10.861f, 10.870f, 11.738f, 12.122f, 12.838f, + 13.606f }, + { -29.534f, -29.437f, -29.104f, -29.158f, -28.342f, -26.454f, -25.544f, -25.342f, -24.631f, + -24.768f, -25.214f, -25.518f, -25.191f, -24.220f, -24.442f, -26.072f, -27.422f, -28.286f, + -26.022f, -21.678f, -18.641f, -18.630f, -18.370f, -18.332f, -16.236f, -18.461f, -19.984f, + -19.538f, -17.549f, -16.003f, -14.696f, -14.139f, -13.813f, -13.647f, -13.487f, -13.398f, + -13.554f, -13.758f, -14.438f, -15.300f, -16.386f, -17.658f, -19.100f, -20.618f, -22.397f, + -24.292f, -26.239f, -28.217f, -30.074f, -31.754f, -33.168f, -34.385f, -35.452f, -38.600f, + -39.864f, -38.224f, -36.341f, -37.951f, -39.092f, -39.259f, -38.619f, -37.819f, -36.806f, + -34.428f, -31.469f, -30.080f, -30.402f, -30.748f, -28.850f, -26.905f, -23.887f, -22.174f, + -19.384f, -17.263f, -14.808f, -12.069f, -7.682f, -2.584f, 3.293f, 2.693f, 0.856f, + 11.403f, 25.340f, 24.987f, 28.397f, 30.460f, 31.965f, 33.964f, 35.619f, 36.931f, + 37.184f, 36.720f, 34.325f, 31.103f, 28.843f, 26.792f, 24.124f, 21.764f, 20.310f, + 17.714f, 14.662f, 11.932f, 8.640f, 6.204f, 3.311f, 1.521f, -1.119f, -4.829f, + -6.365f, -6.918f, -9.310f, -10.715f, -13.591f, -14.882f, -16.648f, -17.422f, -18.524f, + -19.476f, -20.340f, -21.369f, -22.146f, -22.513f, -23.843f, -25.906f, -25.074f, -27.118f, + -26.324f, -24.801f, -25.047f, -25.220f, -25.060f, -23.983f, -26.288f, -28.047f, -28.427f, + -28.734f, -28.342f, -28.338f, -28.056f, -27.586f, -27.261f, -27.485f, -27.446f, -26.737f, + -27.403f, -26.304f, -26.965f, -24.432f, -26.560f, -27.871f, -27.536f, -26.231f, -25.328f, + -24.313f, -21.517f, -18.281f, -16.263f, -16.455f, -15.205f, -12.968f, -10.057f, -9.596f, + -10.306f, -10.247f, -9.017f, -5.845f, -3.546f, -2.975f, -1.740f, -1.088f, -0.669f, + 0.593f, 4.065f, 6.712f, 9.108f, 10.774f, 10.746f, 11.741f, 11.978f, 12.826f, + 13.606f }, + { -29.534f, -29.474f, -29.194f, -29.360f, -28.695f, -26.976f, -26.307f, -26.098f, -25.543f, + -25.981f, -26.519f, -26.530f, -26.337f, -25.862f, -26.418f, -27.330f, -28.175f, -28.664f, + -26.757f, -23.508f, -19.380f, -18.776f, -17.884f, -17.908f, -17.592f, -19.057f, -20.640f, + -20.764f, -19.075f, -17.300f, -15.952f, -15.323f, -14.969f, -14.915f, -14.736f, -14.715f, + -14.820f, -15.147f, -15.554f, -16.349f, -17.417f, -18.658f, -20.007f, -21.492f, -23.293f, + -25.210f, -27.202f, -28.870f, -30.647f, -32.308f, -33.671f, -34.914f, -36.152f, -38.679f, + -40.603f, -38.649f, -37.126f, -38.555f, -39.113f, -38.355f, -37.187f, -36.453f, -33.667f, + -30.094f, -26.687f, -24.930f, -24.986f, -26.577f, -26.551f, -23.944f, -22.191f, -20.465f, + -17.100f, -14.337f, -11.377f, -8.020f, -4.422f, 0.615f, 5.655f, 4.979f, 4.806f, + 15.538f, 26.548f, 27.910f, 31.102f, 32.988f, 35.317f, 37.544f, 39.378f, 41.254f, + 40.794f, 40.681f, 38.076f, 34.751f, 32.756f, 31.108f, 28.497f, 26.055f, 24.852f, + 22.610f, 19.156f, 16.218f, 13.435f, 10.641f, 8.397f, 5.876f, 3.717f, 0.587f, + -3.548f, -3.850f, -5.892f, -7.977f, -9.540f, -11.631f, -13.258f, -13.976f, -16.081f, + -17.710f, -19.120f, -20.434f, -22.107f, -22.382f, -23.509f, -23.373f, -22.897f, -22.385f, + -21.623f, -20.671f, -19.565f, -19.237f, -19.705f, -20.619f, -22.666f, -24.955f, -25.465f, + -25.595f, -25.440f, -25.517f, -25.740f, -25.259f, -25.376f, -25.353f, -24.747f, -24.772f, + -23.693f, -24.748f, -25.769f, -23.534f, -24.095f, -27.370f, -27.699f, -26.020f, -24.612f, + -23.674f, -20.655f, -17.586f, -15.560f, -15.422f, -14.963f, -12.317f, -10.791f, -10.173f, + -10.094f, -10.015f, -8.653f, -5.719f, -3.330f, -2.254f, -1.817f, -2.053f, -0.810f, + 0.654f, 4.146f, 6.597f, 9.197f, 10.652f, 10.651f, 11.742f, 11.833f, 12.815f, + 13.606f }, + { -29.534f, -29.511f, -29.283f, -29.551f, -29.046f, -27.533f, -27.071f, -26.872f, -26.435f, + -27.081f, -27.768f, -27.605f, -27.325f, -27.287f, -28.169f, -28.633f, -28.687f, -28.493f, + -27.041f, -25.066f, -21.698f, -20.145f, -18.059f, -17.493f, -18.949f, -19.314f, -21.763f, + -21.854f, -20.665f, -18.702f, -17.094f, -16.486f, -16.171f, -16.057f, -15.923f, -15.827f, + -16.007f, -16.265f, -16.843f, -17.420f, -18.324f, -19.450f, -20.916f, -22.358f, -24.112f, + -25.968f, -27.698f, -29.362f, -31.014f, -32.695f, -33.926f, -35.212f, -36.256f, -39.004f, + -40.615f, -40.078f, -38.134f, -38.227f, -38.281f, -37.481f, -36.208f, -33.612f, -28.901f, + -25.989f, -23.834f, -21.998f, -20.904f, -21.314f, -22.105f, -21.917f, -18.734f, -16.581f, + -14.122f, -10.313f, -8.927f, -5.196f, -0.509f, 2.950f, 7.134f, 4.606f, 9.709f, + 20.761f, 30.445f, 31.081f, 33.957f, 36.105f, 38.694f, 40.600f, 42.422f, 45.283f, + 45.363f, 44.526f, 41.257f, 39.681f, 36.528f, 34.387f, 31.255f, 31.034f, 28.884f, + 26.341f, 24.161f, 20.371f, 17.514f, 15.101f, 12.485f, 9.406f, 7.226f, 4.371f, + 0.835f, 0.127f, -1.877f, -4.205f, -5.743f, -7.715f, -9.984f, -10.748f, -12.855f, + -14.906f, -16.404f, -17.689f, -19.020f, -19.524f, -20.720f, -20.737f, -20.682f, -20.737f, + -17.143f, -16.406f, -16.696f, -16.443f, -16.085f, -16.777f, -19.127f, -21.659f, -22.330f, + -22.088f, -22.150f, -22.708f, -23.324f, -23.205f, -23.151f, -23.478f, -23.237f, -22.815f, + -22.350f, -22.629f, -23.623f, -22.794f, -21.607f, -25.430f, -27.821f, -25.798f, -24.417f, + -22.946f, -19.971f, -17.084f, -15.357f, -14.514f, -14.619f, -12.024f, -11.124f, -10.366f, + -9.742f, -9.612f, -8.216f, -5.668f, -3.013f, -1.874f, -1.726f, -2.785f, -0.938f, + 0.796f, 4.157f, 6.610f, 9.391f, 10.486f, 10.586f, 11.731f, 11.687f, 12.808f, + 13.606f }, + { -29.534f, -29.548f, -29.369f, -29.731f, -29.395f, -28.115f, -27.804f, -27.646f, -27.283f, + -28.017f, -28.834f, -28.760f, -28.515f, -28.655f, -29.377f, -29.918f, -29.364f, -28.785f, + -27.778f, -26.094f, -23.851f, -22.089f, -19.212f, -18.452f, -20.825f, -19.717f, -22.258f, + -22.737f, -21.983f, -19.942f, -18.363f, -17.560f, -17.274f, -17.051f, -17.022f, -17.024f, + -17.201f, -17.452f, -17.829f, -18.356f, -19.226f, -20.312f, -21.735f, -23.380f, -24.939f, + -26.539f, -28.167f, -29.798f, -31.230f, -32.712f, -34.173f, -35.362f, -36.474f, -38.876f, + -40.127f, -38.113f, -35.634f, -35.786f, -36.104f, -35.569f, -32.685f, -28.097f, -24.116f, + -23.006f, -22.459f, -21.131f, -18.891f, -16.382f, -15.200f, -17.952f, -17.091f, -14.534f, + -11.650f, -8.686f, -7.834f, -2.641f, 1.010f, 4.927f, 7.826f, 4.318f, 10.214f, + 24.158f, 33.203f, 33.550f, 37.091f, 39.504f, 41.982f, 43.132f, 45.144f, 48.242f, + 50.179f, 49.606f, 45.141f, 44.907f, 42.493f, 39.233f, 34.888f, 33.319f, 33.401f, + 30.803f, 28.674f, 25.159f, 22.342f, 19.191f, 16.587f, 13.667f, 13.080f, 7.915f, + 4.901f, 3.546f, 1.801f, -0.896f, -2.269f, -4.052f, -6.069f, -7.472f, -8.657f, + -10.829f, -12.169f, -13.229f, -14.930f, -15.776f, -17.101f, -17.938f, -18.601f, -18.991f, + -16.510f, -15.599f, -15.615f, -14.017f, -13.175f, -13.779f, -15.585f, -17.660f, -18.422f, + -18.123f, -18.838f, -19.934f, -20.748f, -21.033f, -21.006f, -21.306f, -21.005f, -20.468f, + -20.681f, -20.437f, -21.774f, -21.345f, -20.345f, -22.665f, -27.412f, -26.264f, -24.151f, + -22.260f, -19.649f, -17.235f, -15.222f, -13.924f, -14.107f, -12.349f, -11.402f, -10.225f, + -9.637f, -9.187f, -7.750f, -5.452f, -2.773f, -2.028f, -1.566f, -3.087f, -1.036f, + 1.002f, 4.149f, 6.768f, 9.644f, 10.277f, 10.547f, 11.702f, 11.547f, 12.803f, + 13.606f }, + { -29.534f, -29.584f, -29.454f, -29.901f, -29.740f, -28.711f, -28.491f, -28.411f, -28.094f, + -28.830f, -29.703f, -29.928f, -30.034f, -30.159f, -30.385f, -30.967f, -30.228f, -29.652f, + -28.800f, -26.612f, -24.262f, -23.327f, -21.711f, -21.647f, -22.080f, -20.094f, -22.243f, + -23.374f, -23.020f, -21.173f, -19.630f, -18.745f, -18.348f, -18.175f, -18.079f, -17.947f, + -18.156f, -18.443f, -18.817f, -19.415f, -20.084f, -21.170f, -22.377f, -23.859f, -25.507f, + -27.126f, -28.679f, -30.063f, -31.513f, -32.969f, -34.106f, -35.328f, -36.653f, -38.504f, + -39.493f, -34.807f, -32.519f, -33.094f, -34.522f, -31.425f, -29.165f, -26.281f, -21.458f, + -20.305f, -19.473f, -18.287f, -16.170f, -13.090f, -11.878f, -11.547f, -12.406f, -13.835f, + -10.015f, -5.705f, -5.653f, -1.318f, 3.137f, 7.415f, 10.343f, 7.216f, 11.007f, + 27.485f, 33.992f, 36.847f, 39.933f, 42.651f, 43.891f, 45.119f, 47.592f, 50.195f, + 54.232f, 54.504f, 53.321f, 49.957f, 47.186f, 44.130f, 41.553f, 36.182f, 35.967f, + 34.719f, 32.467f, 30.259f, 26.834f, 23.808f, 21.075f, 18.009f, 16.279f, 12.329f, + 9.283f, 6.744f, 5.360f, 3.444f, 1.199f, -0.191f, -1.912f, -3.614f, -5.637f, + -7.149f, -8.730f, -9.258f, -10.758f, -12.119f, -13.170f, -14.870f, -15.363f, -15.558f, + -15.473f, -15.600f, -15.363f, -13.474f, -10.692f, -10.665f, -11.383f, -13.028f, -13.863f, + -14.792f, -16.181f, -17.040f, -18.256f, -18.634f, -18.803f, -18.721f, -18.941f, -18.704f, + -18.992f, -18.471f, -19.603f, -19.053f, -19.112f, -20.308f, -25.678f, -25.675f, -23.446f, + -22.406f, -20.202f, -18.006f, -15.363f, -13.584f, -13.326f, -12.318f, -11.437f, -9.968f, + -9.592f, -8.978f, -7.361f, -5.168f, -2.821f, -2.324f, -1.506f, -2.966f, -1.028f, + 1.243f, 4.168f, 7.029f, 9.880f, 10.031f, 10.528f, 11.647f, 11.414f, 12.801f, + 13.606f }, + { -29.534f, -29.621f, -29.537f, -30.060f, -30.079f, -29.309f, -29.137f, -29.161f, -28.901f, + -29.604f, -30.470f, -31.011f, -31.582f, -31.739f, -31.708f, -31.943f, -31.133f, -30.521f, + -29.656f, -27.216f, -24.779f, -24.164f, -23.886f, -24.713f, -22.511f, -20.685f, -22.965f, + -24.219f, -24.095f, -22.240f, -20.702f, -19.747f, -19.196f, -19.042f, -18.892f, -18.941f, + -19.017f, -19.197f, -19.387f, -20.057f, -20.776f, -21.565f, -22.991f, -24.597f, -25.884f, + -27.312f, -28.772f, -30.353f, -31.650f, -32.793f, -34.197f, -35.299f, -36.300f, -38.283f, + -38.458f, -33.102f, -30.618f, -30.416f, -31.414f, -30.299f, -27.495f, -23.436f, -20.353f, + -17.952f, -17.492f, -15.962f, -12.847f, -10.374f, -8.570f, -8.551f, -7.216f, -7.309f, + -7.376f, -6.035f, -3.300f, 1.308f, 5.574f, 10.537f, 13.216f, 10.806f, 13.714f, + 30.686f, 33.469f, 39.470f, 42.250f, 45.070f, 48.119f, 50.100f, 51.129f, 53.740f, + 54.842f, 58.143f, 56.205f, 53.673f, 52.227f, 49.404f, 46.609f, 43.540f, 38.254f, + 38.453f, 36.634f, 34.878f, 30.672f, 28.028f, 25.511f, 22.651f, 19.750f, 16.425f, + 13.368f, 10.496f, 9.273f, 8.107f, 5.472f, 3.744f, 2.145f, 0.524f, -1.489f, + -3.774f, -5.210f, -6.137f, -7.067f, -7.792f, -9.240f, -11.015f, -11.316f, -11.191f, + -11.595f, -12.261f, -12.513f, -12.244f, -10.045f, -8.243f, -7.496f, -8.360f, -10.218f, + -12.127f, -13.483f, -14.796f, -15.627f, -16.064f, -16.455f, -16.307f, -16.329f, -17.003f, + -17.134f, -16.588f, -17.816f, -17.112f, -17.010f, -19.101f, -22.986f, -24.061f, -21.780f, + -22.797f, -20.460f, -18.224f, -15.696f, -13.326f, -12.407f, -11.848f, -11.145f, -9.779f, + -9.258f, -8.953f, -7.058f, -5.032f, -3.067f, -2.220f, -1.699f, -2.634f, -0.885f, + 1.464f, 4.227f, 7.306f, 10.018f, 9.763f, 10.522f, 11.559f, 11.294f, 12.802f, + 13.606f }, + { -29.534f, -29.657f, -29.619f, -30.210f, -30.410f, -29.896f, -29.766f, -29.892f, -29.732f, + -30.401f, -31.246f, -31.974f, -32.809f, -33.154f, -33.272f, -33.120f, -31.982f, -31.114f, + -30.544f, -28.229f, -26.114f, -25.074f, -24.689f, -25.656f, -23.616f, -22.364f, -24.647f, + -25.397f, -25.173f, -23.223f, -21.793f, -20.780f, -20.266f, -20.008f, -19.680f, -19.606f, + -19.652f, -19.931f, -20.011f, -20.547f, -21.285f, -22.309f, -23.533f, -24.704f, -26.010f, + -27.409f, -28.875f, -30.204f, -31.406f, -32.741f, -34.210f, -35.370f, -36.881f, -38.944f, + -37.894f, -32.179f, -28.125f, -27.113f, -27.085f, -26.181f, -24.396f, -22.593f, -19.857f, + -17.628f, -16.613f, -16.284f, -11.402f, -8.737f, -7.477f, -7.742f, -6.219f, -3.547f, + -5.022f, -3.526f, -0.966f, 3.531f, 7.714f, 12.252f, 14.930f, 13.390f, 16.273f, + 34.751f, 35.471f, 40.810f, 44.126f, 46.913f, 49.921f, 52.559f, 53.354f, 53.783f, + 54.745f, 57.704f, 57.832f, 56.617f, 55.528f, 54.423f, 53.092f, 48.284f, 45.877f, + 42.261f, 39.686f, 39.297f, 35.967f, 32.109f, 29.938f, 26.964f, 24.317f, 21.133f, + 17.980f, 14.571f, 13.242f, 12.443f, 10.243f, 7.775f, 6.108f, 5.016f, 3.069f, + 0.662f, -1.217f, -2.310f, -3.048f, -4.381f, -5.602f, -6.483f, -6.873f, -6.782f, + -6.754f, -8.034f, -8.768f, -9.364f, -8.466f, -6.575f, -4.932f, -4.342f, -6.106f, + -8.439f, -10.635f, -11.877f, -12.666f, -13.399f, -13.628f, -13.585f, -13.970f, -14.886f, + -14.955f, -14.707f, -14.554f, -14.580f, -15.549f, -18.788f, -20.236f, -21.408f, -19.634f, + -21.904f, -19.804f, -17.951f, -15.497f, -12.716f, -11.613f, -11.571f, -10.776f, -9.629f, + -8.913f, -8.856f, -6.777f, -4.953f, -3.144f, -1.609f, -2.166f, -2.366f, -0.680f, + 1.598f, 4.293f, 7.497f, 9.989f, 9.493f, 10.520f, 11.437f, 11.191f, 12.805f, + 13.606f }, + { -29.534f, -29.693f, -29.698f, -30.352f, -30.730f, -30.463f, -30.404f, -30.600f, -30.588f, + -31.212f, -32.076f, -32.881f, -33.744f, -34.307f, -34.551f, -34.359f, -32.871f, -31.748f, + -31.545f, -29.317f, -26.860f, -25.742f, -25.829f, -26.722f, -24.605f, -24.653f, -26.651f, + -26.670f, -26.152f, -24.243f, -22.709f, -21.737f, -21.129f, -20.851f, -20.580f, -20.399f, + -20.280f, -20.570f, -20.665f, -20.940f, -21.735f, -22.782f, -24.017f, -25.094f, -26.171f, + -27.345f, -28.679f, -30.048f, -31.318f, -32.782f, -34.099f, -35.307f, -36.338f, -38.541f, + -38.079f, -31.899f, -27.927f, -26.918f, -26.512f, -25.103f, -23.813f, -21.428f, -19.521f, + -17.979f, -16.634f, -15.268f, -10.279f, -7.247f, -7.081f, -6.175f, -2.822f, -0.304f, + 0.293f, -0.496f, 2.136f, 6.447f, 10.386f, 14.510f, 17.190f, 15.738f, 19.300f, + 33.271f, 36.796f, 42.863f, 46.371f, 47.114f, 48.083f, 53.708f, 51.171f, 53.808f, + 52.813f, 57.685f, 57.086f, 54.819f, 55.448f, 57.107f, 53.021f, 51.525f, 50.348f, + 48.832f, 44.822f, 41.551f, 38.218f, 35.814f, 33.586f, 31.448f, 28.715f, 25.224f, + 22.140f, 19.393f, 16.598f, 15.311f, 13.961f, 13.076f, 9.712f, 8.932f, 7.289f, + 4.777f, 3.218f, 1.871f, 1.158f, -0.654f, -1.791f, -2.429f, -2.527f, -2.354f, + -1.937f, -3.478f, -4.587f, -5.026f, -4.390f, -3.120f, -2.370f, -2.189f, -3.561f, + -4.999f, -7.318f, -8.291f, -9.360f, -10.460f, -10.953f, -11.018f, -11.603f, -12.471f, + -12.778f, -12.649f, -11.390f, -12.986f, -15.905f, -18.664f, -19.024f, -19.373f, -19.420f, + -19.685f, -18.951f, -17.522f, -14.939f, -12.185f, -11.103f, -11.175f, -10.263f, -9.275f, + -8.924f, -8.539f, -6.516f, -4.641f, -2.847f, -0.860f, -2.715f, -2.293f, -0.535f, + 1.603f, 4.311f, 7.523f, 9.763f, 9.243f, 10.511f, 11.279f, 11.109f, 12.812f, + 13.606f }, + { -29.534f, -29.728f, -29.775f, -30.485f, -31.035f, -31.004f, -31.073f, -31.273f, -31.428f, + -31.976f, -32.924f, -33.836f, -34.718f, -35.344f, -35.349f, -35.298f, -33.907f, -32.581f, + -32.137f, -30.267f, -27.628f, -26.278f, -26.484f, -27.824f, -24.923f, -26.778f, -28.332f, + -27.846f, -27.256f, -25.292f, -23.695f, -22.634f, -22.017f, -21.646f, -21.235f, -21.070f, + -21.061f, -21.322f, -21.184f, -21.497f, -22.006f, -23.158f, -24.318f, -25.379f, -26.279f, + -27.482f, -28.786f, -30.000f, -31.212f, -32.597f, -33.805f, -34.863f, -36.246f, -38.397f, + -38.487f, -33.668f, -29.882f, -27.675f, -25.909f, -24.736f, -22.482f, -20.721f, -19.021f, + -17.254f, -13.844f, -12.179f, -7.521f, -5.225f, -5.963f, -3.294f, 0.652f, 3.647f, + 5.690f, 7.180f, 8.077f, 9.770f, 14.334f, 18.198f, 20.578f, 17.591f, 27.170f, + 35.991f, 37.276f, 44.209f, 47.217f, 50.277f, 51.002f, 56.046f, 56.867f, 55.312f, + 53.638f, 55.995f, 53.885f, 54.624f, 56.882f, 59.152f, 56.383f, 53.399f, 51.643f, + 48.990f, 49.922f, 47.600f, 43.140f, 38.280f, 33.769f, 31.930f, 30.801f, 28.128f, + 24.882f, 22.061f, 20.100f, 17.927f, 17.282f, 16.274f, 14.150f, 12.350f, 10.356f, + 9.379f, 7.445f, 5.641f, 4.206f, 2.799f, 1.690f, 1.124f, 1.133f, 1.554f, + 1.553f, 0.390f, -0.687f, -1.374f, -0.752f, 0.653f, 0.036f, -0.702f, -1.565f, + -1.770f, -3.076f, -4.346f, -5.680f, -6.922f, -7.840f, -8.267f, -8.716f, -10.098f, + -10.904f, -10.920f, -9.690f, -11.964f, -14.099f, -17.819f, -18.230f, -18.905f, -21.728f, + -18.300f, -18.219f, -17.091f, -14.678f, -12.066f, -10.941f, -10.455f, -9.515f, -8.694f, + -9.043f, -8.112f, -6.276f, -4.064f, -2.388f, -0.329f, -3.039f, -2.338f, -0.509f, + 1.498f, 4.236f, 7.357f, 9.354f, 9.033f, 10.483f, 11.088f, 11.051f, 12.821f, + 13.606f }, + { -29.534f, -29.763f, -29.851f, -30.611f, -31.323f, -31.515f, -31.778f, -31.902f, -32.194f, + -32.652f, -33.756f, -34.890f, -35.914f, -36.396f, -35.991f, -35.873f, -34.898f, -33.280f, + -32.178f, -30.891f, -28.964f, -27.199f, -26.615f, -27.657f, -26.059f, -28.877f, -29.756f, + -28.953f, -28.353f, -26.241f, -24.625f, -23.594f, -22.781f, -22.382f, -21.991f, -21.631f, + -21.727f, -21.429f, -21.553f, -21.976f, -22.668f, -23.382f, -24.462f, -25.450f, -26.389f, + -27.350f, -28.569f, -29.994f, -31.151f, -32.482f, -33.574f, -34.502f, -35.499f, -37.678f, + -38.507f, -34.648f, -30.380f, -28.227f, -25.458f, -24.343f, -22.596f, -20.454f, -18.069f, + -15.262f, -11.635f, -8.796f, -5.008f, -5.120f, -2.321f, 1.090f, 4.407f, 7.754f, + 8.468f, 12.246f, 13.906f, 15.436f, 19.364f, 23.024f, 23.389f, 22.827f, 36.360f, + 39.719f, 37.895f, 44.402f, 49.795f, 53.974f, 56.689f, 60.713f, 63.793f, 61.864f, + 58.348f, 56.354f, 54.462f, 56.886f, 58.526f, 61.821f, 59.608f, 55.120f, 53.832f, + 54.269f, 52.010f, 52.056f, 48.928f, 37.842f, 36.434f, 40.614f, 41.033f, 34.306f, + 30.586f, 23.796f, 21.269f, 18.538f, 18.852f, 18.608f, 17.438f, 14.959f, 13.099f, + 11.711f, 10.040f, 8.408f, 7.023f, 5.760f, 5.071f, 4.587f, 4.690f, 4.387f, + 4.307f, 4.283f, 3.011f, 1.948f, 2.711f, 2.802f, 2.366f, 1.283f, 0.312f, + 0.371f, 0.116f, -0.638f, -1.872f, -3.361f, -4.504f, -5.281f, -6.660f, -8.027f, + -8.983f, -9.359f, -8.871f, -10.156f, -12.612f, -15.910f, -16.614f, -17.266f, -21.518f, + -18.298f, -17.948f, -17.007f, -14.534f, -11.932f, -10.928f, -10.066f, -8.772f, -8.081f, + -8.870f, -7.726f, -5.969f, -3.511f, -2.104f, -0.048f, -2.960f, -2.346f, -0.539f, + 1.371f, 4.067f, 7.029f, 8.818f, 8.879f, 10.426f, 10.872f, 11.022f, 12.832f, + 13.606f }, + { -29.534f, -29.798f, -29.925f, -30.731f, -31.591f, -31.997f, -32.508f, -32.490f, -32.854f, + -33.274f, -34.595f, -36.001f, -37.151f, -37.399f, -36.721f, -36.295f, -35.620f, -33.839f, + -32.353f, -31.090f, -29.551f, -28.120f, -27.986f, -28.019f, -27.363f, -30.655f, -31.189f, + -30.060f, -29.216f, -27.319f, -25.546f, -24.347f, -23.716f, -23.096f, -22.731f, -22.355f, + -22.109f, -22.162f, -22.131f, -22.592f, -22.993f, -23.887f, -24.722f, -25.596f, -26.385f, + -27.425f, -28.613f, -29.841f, -30.962f, -32.290f, -33.247f, -34.122f, -35.268f, -36.958f, + -38.303f, -34.549f, -29.791f, -28.336f, -25.887f, -23.638f, -22.392f, -19.992f, -16.213f, + -13.558f, -10.974f, -7.332f, -4.323f, -2.025f, 0.026f, 3.713f, 8.487f, 10.297f, + 11.538f, 15.765f, 19.845f, 21.324f, 21.649f, 25.657f, 24.985f, 27.071f, 33.589f, + 37.484f, 37.933f, 48.961f, 49.011f, 53.601f, 57.393f, 61.225f, 64.492f, 61.140f, + 61.248f, 64.002f, 58.716f, 59.202f, 61.194f, 61.879f, 66.521f, 58.542f, 56.199f, + 55.266f, 55.887f, 54.411f, 51.156f, 46.697f, 43.503f, 42.516f, 42.621f, 43.318f, + 39.063f, 30.166f, 22.427f, 20.733f, 21.698f, 26.463f, 24.261f, 17.954f, 16.376f, + 14.887f, 13.465f, 11.505f, 10.356f, 9.442f, 8.968f, 8.004f, 7.928f, 7.297f, + 7.676f, 7.249f, 6.695f, 5.995f, 4.529f, 4.734f, 4.280f, 3.452f, 2.325f, + 1.939f, 2.135f, 1.643f, 1.515f, 0.408f, -0.629f, -1.552f, -3.762f, -6.398f, + -7.605f, -8.208f, -7.984f, -9.757f, -10.943f, -13.936f, -14.617f, -14.656f, -17.633f, + -17.356f, -17.576f, -16.981f, -14.356f, -11.993f, -11.111f, -10.484f, -8.418f, -7.508f, + -8.352f, -7.362f, -5.587f, -3.231f, -2.014f, 0.102f, -2.590f, -2.266f, -0.497f, + 1.340f, 3.849f, 6.614f, 8.239f, 8.786f, 10.329f, 10.640f, 11.024f, 12.846f, + 13.606f }, + { -29.534f, -29.832f, -29.997f, -30.845f, -31.839f, -32.451f, -33.232f, -33.058f, -33.436f, + -33.948f, -35.518f, -37.095f, -38.171f, -38.292f, -37.418f, -36.726f, -36.307f, -34.756f, + -33.123f, -31.502f, -29.867f, -28.747f, -28.761f, -28.908f, -28.009f, -31.556f, -32.265f, + -31.238f, -30.001f, -28.125f, -26.216f, -25.194f, -24.364f, -23.764f, -23.368f, -22.915f, + -22.678f, -22.586f, -22.616f, -23.045f, -23.311f, -23.984f, -24.894f, -25.727f, -26.478f, + -27.407f, -28.399f, -29.550f, -30.872f, -31.954f, -32.900f, -33.775f, -34.585f, -36.328f, + -37.082f, -33.886f, -29.958f, -28.248f, -26.268f, -23.100f, -21.565f, -18.046f, -15.422f, + -12.570f, -10.595f, -6.328f, -3.569f, -0.489f, 3.265f, 6.408f, 9.455f, 11.422f, + 14.178f, 19.355f, 22.443f, 25.630f, 26.951f, 29.028f, 29.507f, 28.989f, 27.231f, + 34.638f, 41.267f, 48.114f, 51.427f, 57.115f, 60.801f, 61.360f, 61.228f, 64.379f, + 63.128f, 64.533f, 58.998f, 61.830f, 63.428f, 63.829f, 65.250f, 67.063f, 59.613f, + 52.945f, 54.297f, 55.089f, 52.480f, 49.791f, 47.889f, 41.154f, 37.840f, 40.548f, + 37.027f, 32.601f, 30.723f, 27.500f, 23.402f, 19.619f, 15.414f, 19.787f, 19.136f, + 17.443f, 16.360f, 14.985f, 14.063f, 13.253f, 11.940f, 11.201f, 11.002f, 10.593f, + 10.452f, 9.991f, 9.802f, 9.966f, 8.405f, 6.959f, 6.005f, 5.458f, 4.352f, + 4.087f, 3.757f, 3.634f, 3.054f, 3.268f, 2.681f, 2.052f, -0.202f, -4.190f, + -6.069f, -6.074f, -6.706f, -7.771f, -8.843f, -11.199f, -11.683f, -12.701f, -14.181f, + -15.497f, -16.966f, -16.995f, -14.403f, -12.476f, -11.911f, -11.522f, -8.628f, -7.050f, + -7.609f, -6.987f, -5.260f, -3.168f, -1.841f, 0.107f, -2.203f, -2.207f, -0.317f, + 1.477f, 3.648f, 6.199f, 7.706f, 8.749f, 10.186f, 10.406f, 11.060f, 12.862f, + 13.606f }, + { -29.534f, -29.865f, -30.067f, -30.955f, -32.067f, -32.879f, -33.917f, -33.645f, -34.037f, + -34.779f, -36.561f, -38.123f, -38.994f, -39.207f, -38.050f, -37.280f, -37.314f, -35.962f, + -34.044f, -32.459f, -30.926f, -29.592f, -28.654f, -29.181f, -29.001f, -31.932f, -33.079f, + -32.014f, -30.917f, -28.883f, -26.882f, -25.905f, -25.005f, -24.351f, -23.964f, -23.560f, + -23.241f, -23.123f, -23.031f, -23.402f, -23.620f, -24.154f, -24.846f, -25.605f, -26.340f, + -27.356f, -28.177f, -29.414f, -30.455f, -31.522f, -32.436f, -32.997f, -34.087f, -35.448f, + -36.426f, -33.035f, -29.069f, -26.591f, -23.809f, -24.026f, -20.620f, -17.058f, -14.125f, + -12.422f, -10.106f, -6.998f, -3.829f, 1.227f, 4.890f, 6.992f, 9.698f, 13.432f, + 17.480f, 21.931f, 24.825f, 28.139f, 29.352f, 32.432f, 34.984f, 29.966f, 26.926f, + 32.270f, 43.313f, 47.518f, 52.077f, 57.074f, 59.324f, 57.860f, 61.451f, 60.564f, + 56.136f, 63.179f, 60.424f, 64.867f, 65.911f, 65.904f, 65.849f, 66.460f, 67.233f, + 60.356f, 61.728f, 59.888f, 55.139f, 51.367f, 50.390f, 41.604f, 33.232f, 32.912f, + 31.476f, 30.213f, 27.974f, 25.901f, 24.078f, 16.777f, 17.619f, 21.980f, 22.074f, + 20.629f, 19.604f, 18.731f, 17.497f, 16.112f, 15.173f, 14.828f, 14.462f, 13.685f, + 12.944f, 13.164f, 12.697f, 13.156f, 11.325f, 10.018f, 8.425f, 7.647f, 6.656f, + 5.624f, 5.369f, 4.855f, 4.955f, 4.560f, 4.627f, 4.145f, 2.388f, -1.788f, + -4.010f, -4.229f, -4.470f, -4.980f, -6.673f, -8.112f, -9.531f, -11.397f, -12.461f, + -14.288f, -16.323f, -17.012f, -14.589f, -13.340f, -13.506f, -12.715f, -9.063f, -6.802f, + -6.871f, -6.747f, -5.021f, -3.069f, -1.438f, -0.110f, -1.977f, -2.296f, -0.064f, + 1.759f, 3.512f, 5.853f, 7.292f, 8.751f, 9.997f, 10.186f, 11.132f, 12.881f, + 13.606f }, + { -29.534f, -29.898f, -30.136f, -31.060f, -32.275f, -33.283f, -34.528f, -34.296f, -34.784f, + -35.793f, -37.646f, -39.066f, -39.842f, -40.242f, -38.885f, -38.134f, -38.478f, -36.873f, + -34.706f, -33.263f, -31.743f, -30.422f, -29.395f, -29.668f, -29.991f, -32.357f, -33.925f, + -32.472f, -31.796f, -29.628f, -27.603f, -26.534f, -25.694f, -25.060f, -24.537f, -24.129f, + -23.841f, -23.655f, -23.615f, -23.593f, -23.728f, -24.196f, -24.818f, -25.387f, -26.100f, + -26.987f, -27.753f, -28.791f, -29.886f, -30.990f, -31.830f, -32.523f, -33.494f, -34.595f, + -35.587f, -32.996f, -27.202f, -25.565f, -24.174f, -21.342f, -20.387f, -16.777f, -13.566f, + -10.837f, -8.183f, -6.319f, -3.052f, 1.609f, 4.504f, 7.617f, 11.171f, 15.869f, + 19.787f, 24.294f, 27.032f, 30.233f, 32.355f, 35.340f, 36.514f, 31.208f, 33.261f, + 37.336f, 45.255f, 48.612f, 54.592f, 55.795f, 55.996f, 57.871f, 61.181f, 50.058f, + 54.811f, 66.814f, 64.072f, 67.831f, 68.268f, 67.058f, 67.253f, 69.252f, 70.642f, + 63.685f, 64.799f, 61.835f, 58.447f, 53.136f, 52.478f, 44.059f, 41.375f, 39.762f, + 35.516f, 33.263f, 31.119f, 29.019f, 26.768f, 18.564f, 21.432f, 25.200f, 25.744f, + 24.076f, 22.912f, 21.599f, 20.599f, 19.035f, 17.973f, 17.676f, 17.916f, 17.113f, + 15.883f, 15.757f, 15.309f, 14.957f, 14.146f, 14.160f, 12.627f, 10.619f, 9.415f, + 8.129f, 7.215f, 6.650f, 6.565f, 6.752f, 6.554f, 5.990f, 4.479f, 0.194f, + -1.669f, -1.775f, -1.881f, -3.791f, -4.830f, -6.330f, -7.718f, -10.008f, -11.581f, + -13.594f, -15.668f, -17.111f, -14.867f, -14.176f, -15.190f, -13.783f, -9.408f, -6.763f, + -6.517f, -6.716f, -4.750f, -2.784f, -1.009f, -0.421f, -1.884f, -2.506f, 0.111f, + 2.068f, 3.445f, 5.607f, 7.034f, 8.767f, 9.765f, 9.995f, 11.240f, 12.901f, + 13.606f }, + { -29.534f, -29.930f, -30.203f, -31.162f, -32.464f, -33.662f, -35.045f, -35.037f, -35.766f, + -36.903f, -38.605f, -39.885f, -40.764f, -41.147f, -39.955f, -39.324f, -39.460f, -37.765f, + -35.565f, -33.697f, -32.267f, -31.154f, -30.085f, -30.644f, -30.611f, -32.864f, -34.844f, + -33.105f, -32.299f, -30.188f, -28.328f, -27.306f, -26.316f, -25.604f, -25.100f, -24.682f, + -24.270f, -24.014f, -23.815f, -23.689f, -23.635f, -24.040f, -24.557f, -25.269f, -25.880f, + -26.654f, -27.480f, -28.327f, -29.331f, -30.297f, -31.071f, -31.819f, -32.720f, -33.766f, + -34.879f, -33.176f, -26.322f, -23.308f, -21.822f, -20.487f, -17.679f, -16.012f, -13.666f, + -10.238f, -7.244f, -3.864f, -0.616f, 2.899f, 5.427f, 9.212f, 13.550f, 17.818f, + 21.834f, 25.781f, 29.174f, 31.843f, 34.010f, 36.246f, 38.432f, 36.798f, 33.094f, + 41.986f, 45.824f, 50.191f, 55.078f, 56.293f, 58.451f, 59.767f, 62.223f, 43.752f, + 50.794f, 67.688f, 70.406f, 70.052f, 69.117f, 63.696f, 70.126f, 71.314f, 71.351f, + 67.663f, 64.685f, 65.336f, 60.343f, 46.375f, 43.900f, 42.282f, 44.490f, 42.920f, + 38.355f, 35.324f, 32.589f, 30.783f, 28.288f, 21.516f, 23.365f, 28.146f, 27.917f, + 27.475f, 25.831f, 24.097f, 23.207f, 21.600f, 20.825f, 20.984f, 20.994f, 19.827f, + 18.838f, 18.500f, 17.900f, 17.468f, 17.210f, 17.975f, 17.574f, 15.223f, 12.740f, + 11.002f, 9.999f, 9.253f, 9.092f, 8.927f, 8.714f, 7.777f, 5.975f, 2.305f, + 0.996f, 0.330f, -0.224f, -1.565f, -1.660f, -4.767f, -5.769f, -8.239f, -10.835f, + -12.971f, -15.213f, -16.393f, -14.209f, -13.626f, -15.526f, -14.299f, -9.715f, -6.975f, + -6.686f, -6.665f, -4.474f, -2.413f, -0.818f, -0.520f, -1.848f, -2.653f, 0.095f, + 2.258f, 3.406f, 5.454f, 6.929f, 8.767f, 9.503f, 9.851f, 11.383f, 12.923f, + 13.606f }, + { -29.534f, -29.961f, -30.267f, -31.260f, -32.638f, -34.017f, -35.461f, -35.857f, -36.969f, + -37.955f, -39.294f, -40.519f, -41.519f, -41.542f, -40.771f, -40.561f, -40.357f, -39.228f, + -36.909f, -34.240f, -33.073f, -32.214f, -31.312f, -31.876f, -31.640f, -33.102f, -35.738f, + -33.567f, -32.719f, -30.720f, -28.809f, -27.911f, -27.043f, -26.151f, -25.504f, -24.993f, + -24.611f, -24.256f, -24.029f, -24.011f, -23.697f, -23.936f, -24.412f, -24.901f, -25.640f, + -26.364f, -27.068f, -27.849f, -28.851f, -29.647f, -30.386f, -31.087f, -31.844f, -32.562f, + -33.578f, -33.059f, -27.159f, -22.108f, -20.430f, -19.950f, -18.070f, -16.261f, -13.241f, + -10.260f, -6.193f, -2.897f, 0.290f, 3.561f, 6.698f, 11.480f, 15.531f, 19.703f, + 24.076f, 28.757f, 33.042f, 34.763f, 35.743f, 37.247f, 40.938f, 41.559f, 36.139f, + 41.786f, 47.617f, 50.333f, 54.167f, 57.506f, 58.875f, 60.048f, 63.931f, 45.464f, + 46.844f, 58.459f, 62.148f, 67.323f, 70.163f, 65.074f, 64.085f, 61.921f, 64.718f, + 68.014f, 64.066f, 55.470f, 47.427f, 44.967f, 46.293f, 45.467f, 44.695f, 42.304f, + 39.628f, 36.751f, 34.461f, 32.560f, 30.392f, 26.308f, 27.221f, 26.365f, 29.129f, + 30.014f, 29.283f, 27.057f, 25.363f, 24.271f, 23.724f, 23.965f, 23.575f, 22.238f, + 21.553f, 20.538f, 20.456f, 20.209f, 20.383f, 20.708f, 21.037f, 18.812f, 16.011f, + 13.553f, 12.162f, 11.586f, 11.444f, 11.179f, 10.669f, 9.166f, 6.605f, 4.505f, + 3.546f, 2.140f, 1.701f, 1.192f, 0.828f, -3.184f, -4.113f, -6.690f, -10.100f, + -12.563f, -14.259f, -13.592f, -11.527f, -11.231f, -13.753f, -13.408f, -9.831f, -7.401f, + -7.027f, -6.424f, -4.339f, -2.167f, -0.830f, -0.266f, -1.873f, -2.569f, -0.106f, + 2.237f, 3.342f, 5.362f, 6.940f, 8.722f, 9.230f, 9.769f, 11.561f, 12.947f, + 13.606f }, + { -29.534f, -29.992f, -30.331f, -31.356f, -32.799f, -34.342f, -35.786f, -36.703f, -38.255f, + -38.809f, -39.705f, -40.945f, -41.903f, -41.512f, -41.016f, -41.509f, -41.253f, -40.294f, + -37.750f, -34.810f, -33.576f, -33.194f, -33.580f, -33.944f, -33.404f, -33.687f, -36.595f, + -34.195f, -33.574f, -31.306f, -29.504f, -28.581f, -27.443f, -26.488f, -25.728f, -24.896f, + -24.388f, -23.826f, -23.427f, -23.486f, -23.466f, -23.723f, -24.094f, -24.688f, -25.265f, + -25.997f, -26.662f, -27.328f, -28.294f, -29.025f, -29.691f, -30.295f, -30.927f, -31.809f, + -32.704f, -32.553f, -27.695f, -21.315f, -19.332f, -18.813f, -17.339f, -16.439f, -12.382f, + -8.247f, -1.866f, -2.565f, 1.973f, 6.187f, 10.091f, 13.878f, 17.720f, 22.142f, + 27.261f, 31.443f, 34.158f, 36.615f, 37.662f, 39.117f, 43.283f, 45.749f, 42.028f, + 37.418f, 45.588f, 50.058f, 54.362f, 57.946f, 58.806f, 58.785f, 61.523f, 54.522f, + 68.556f, 65.387f, 56.185f, 55.833f, 61.785f, 53.469f, 45.248f, 51.153f, 55.077f, + 50.729f, 49.711f, 51.713f, 52.089f, 51.194f, 49.570f, 47.087f, 44.895f, 42.435f, + 39.925f, 38.000f, 35.469f, 34.070f, 32.325f, 29.781f, 25.055f, 25.108f, 28.907f, + 31.154f, 30.613f, 29.244f, 28.390f, 27.216f, 26.314f, 26.118f, 25.895f, 25.322f, + 24.296f, 23.290f, 22.890f, 23.026f, 23.868f, 24.367f, 22.542f, 21.006f, 18.755f, + 16.226f, 14.209f, 13.398f, 13.621f, 12.867f, 11.805f, 10.050f, 7.989f, 5.862f, + 5.183f, 3.816f, 3.799f, 3.866f, 2.355f, -1.271f, -3.158f, -5.788f, -9.007f, + -12.051f, -12.509f, -10.005f, -8.162f, -7.986f, -10.280f, -10.790f, -9.507f, -7.759f, + -7.123f, -6.153f, -4.260f, -2.118f, -0.777f, 0.136f, -1.947f, -2.276f, -0.388f, + 2.013f, 3.226f, 5.299f, 7.004f, 8.609f, 8.968f, 9.760f, 11.770f, 12.971f, + 13.606f }, + { -29.534f, -30.021f, -30.392f, -31.450f, -32.949f, -34.632f, -36.037f, -37.486f, -39.405f, + -39.415f, -39.986f, -41.245f, -42.063f, -41.677f, -41.180f, -42.140f, -41.749f, -39.617f, + -37.278f, -35.259f, -34.458f, -34.542f, -34.949f, -36.387f, -35.108f, -34.608f, -37.419f, + -35.128f, -34.376f, -31.985f, -30.338f, -29.132f, -27.764f, -26.778f, -25.893f, -24.854f, + -24.171f, -23.549f, -23.040f, -22.911f, -23.097f, -23.369f, -23.816f, -24.462f, -24.963f, + -25.736f, -26.458f, -27.073f, -27.818f, -28.472f, -28.933f, -29.424f, -29.835f, -30.363f, + -31.232f, -31.537f, -27.670f, -21.133f, -20.135f, -20.238f, -18.365f, -16.116f, -12.401f, + -7.152f, 0.227f, 0.211f, 3.366f, 8.179f, 12.527f, 15.930f, 20.568f, 23.501f, + 28.264f, 32.873f, 34.618f, 37.472f, 38.925f, 41.965f, 44.724f, 47.967f, 46.665f, + 34.138f, 42.174f, 49.514f, 53.494f, 57.663f, 59.135f, 57.934f, 59.343f, 67.793f, + 72.155f, 71.211f, 68.269f, 61.556f, 65.198f, 55.527f, 60.250f, 61.977f, 61.455f, + 60.184f, 58.561f, 57.189f, 55.140f, 52.625f, 50.113f, 47.347f, 45.276f, 43.001f, + 41.007f, 38.838f, 36.471f, 35.344f, 33.921f, 32.117f, 28.926f, 24.479f, 28.159f, + 31.978f, 31.217f, 30.280f, 29.680f, 29.285f, 28.998f, 28.235f, 28.060f, 28.147f, + 27.087f, 25.893f, 25.576f, 24.291f, 24.167f, 26.288f, 24.573f, 22.224f, 20.379f, + 17.957f, 16.762f, 15.861f, 16.049f, 14.285f, 11.962f, 10.721f, 9.342f, 7.556f, + 6.668f, 5.382f, 5.965f, 5.554f, 3.660f, 0.260f, -2.470f, -4.792f, -7.586f, + -11.288f, -10.556f, -6.848f, -5.585f, -5.498f, -6.653f, -7.492f, -8.653f, -7.838f, + -6.916f, -5.979f, -3.989f, -2.122f, -0.529f, 0.416f, -1.874f, -1.968f, -0.643f, + 1.678f, 3.077f, 5.242f, 7.054f, 8.421f, 8.746f, 9.835f, 12.006f, 12.997f, + 13.606f }, + { -29.534f, -30.050f, -30.452f, -31.542f, -33.092f, -34.881f, -36.237f, -38.116f, -40.207f, + -39.819f, -40.337f, -41.574f, -42.362f, -42.485f, -41.973f, -42.704f, -41.771f, -38.371f, + -36.714f, -36.065f, -36.139f, -36.383f, -35.717f, -37.323f, -35.904f, -35.056f, -38.154f, + -36.117f, -34.718f, -32.623f, -30.975f, -29.544f, -28.221f, -26.937f, -25.881f, -24.896f, + -24.114f, -23.362f, -22.691f, -22.511f, -22.821f, -22.857f, -23.280f, -23.763f, -24.379f, + -25.127f, -25.909f, -26.474f, -27.133f, -27.841f, -28.315f, -28.644f, -28.920f, -29.425f, + -30.176f, -30.612f, -26.915f, -20.666f, -19.435f, -18.100f, -16.637f, -14.720f, -11.983f, + -5.220f, 3.121f, 2.449f, 3.692f, 9.129f, 14.226f, 17.485f, 22.993f, 26.724f, + 28.818f, 30.889f, 33.818f, 36.834f, 41.878f, 44.016f, 45.951f, 48.946f, 49.787f, + 40.950f, 41.725f, 49.521f, 52.540f, 55.787f, 59.148f, 59.713f, 63.761f, 70.802f, + 73.505f, 72.402f, 69.304f, 67.432f, 66.449f, 67.603f, 67.609f, 66.622f, 64.790f, + 62.245f, 59.894f, 57.813f, 55.374f, 52.563f, 49.956f, 47.630f, 45.472f, 43.296f, + 41.478f, 39.314f, 37.391f, 35.904f, 35.110f, 34.086f, 32.413f, 28.762f, 25.055f, + 26.041f, 29.278f, 30.209f, 30.562f, 30.499f, 30.116f, 30.708f, 29.661f, 29.167f, + 29.600f, 28.724f, 25.586f, 22.982f, 23.407f, 26.623f, 26.435f, 23.995f, 22.291f, + 20.292f, 18.797f, 18.120f, 17.406f, 15.666f, 13.106f, 11.978f, 10.833f, 9.399f, + 8.004f, 7.207f, 8.200f, 7.472f, 5.732f, 1.361f, -1.077f, -3.263f, -6.124f, + -10.505f, -9.451f, -4.765f, -4.273f, -4.901f, -4.993f, -5.426f, -7.267f, -7.618f, + -6.562f, -5.753f, -3.581f, -2.001f, -0.249f, 0.584f, -1.361f, -1.818f, -0.822f, + 1.342f, 2.949f, 5.183f, 7.036f, 8.164f, 8.592f, 9.994f, 12.266f, 13.023f, + 13.606f }, + { -29.534f, -30.078f, -30.509f, -31.633f, -33.230f, -35.084f, -36.407f, -38.532f, -40.558f, + -40.127f, -40.885f, -42.067f, -42.966f, -43.659f, -43.352f, -43.497f, -42.230f, -39.032f, + -37.639f, -37.349f, -36.867f, -36.946f, -36.619f, -36.708f, -36.408f, -35.483f, -38.987f, + -37.254f, -35.246f, -33.287f, -31.401f, -29.957f, -28.471f, -27.177f, -25.974f, -24.837f, + -23.791f, -23.005f, -22.449f, -22.141f, -22.409f, -22.395f, -22.671f, -23.262f, -23.804f, + -24.438f, -25.124f, -25.604f, -26.272f, -26.871f, -27.493f, -27.753f, -27.792f, -28.287f, + -29.210f, -28.386f, -23.947f, -19.137f, -17.724f, -16.238f, -14.407f, -12.107f, -10.259f, + -1.797f, 3.609f, 3.100f, 3.348f, 11.401f, 14.795f, 20.232f, 24.383f, 28.525f, + 31.876f, 33.408f, 35.033f, 39.084f, 42.481f, 45.728f, 49.110f, 51.997f, 52.229f, + 46.467f, 45.506f, 45.318f, 50.106f, 54.817f, 57.761f, 59.909f, 68.127f, 72.366f, + 76.604f, 73.326f, 72.358f, 72.731f, 71.136f, 69.890f, 68.196f, 66.701f, 64.336f, + 61.499f, 59.414f, 57.051f, 54.732f, 52.036f, 49.843f, 47.512f, 46.067f, 43.825f, + 41.420f, 39.758f, 37.807f, 36.193f, 35.165f, 35.124f, 35.144f, 33.203f, 28.254f, + 24.248f, 24.898f, 26.293f, 30.395f, 31.243f, 31.804f, 32.165f, 31.069f, 29.942f, + 27.716f, 26.918f, 25.810f, 24.776f, 22.967f, 23.528f, 24.571f, 25.405f, 25.271f, + 22.695f, 20.460f, 18.573f, 18.116f, 16.102f, 14.964f, 13.592f, 12.346f, 11.005f, + 9.797f, 9.198f, 10.469f, 8.861f, 7.126f, 2.176f, 0.589f, -1.486f, -4.620f, + -9.764f, -9.524f, -4.145f, -4.341f, -5.111f, -5.184f, -5.331f, -6.067f, -7.105f, + -6.162f, -5.316f, -3.314f, -1.753f, -0.146f, 0.866f, -0.353f, -1.811f, -0.931f, + 1.072f, 2.894f, 5.117f, 6.916f, 7.864f, 8.529f, 10.237f, 12.542f, 13.049f, + 13.606f }, + { -29.534f, -30.105f, -30.565f, -31.722f, -33.366f, -35.238f, -36.563f, -38.732f, -40.524f, + -40.442f, -41.610f, -42.745f, -43.707f, -44.616f, -44.689f, -44.723f, -43.877f, -41.469f, + -39.277f, -38.351f, -36.881f, -36.828f, -37.093f, -36.413f, -36.905f, -35.515f, -39.646f, + -38.085f, -35.791f, -33.807f, -31.932f, -30.271f, -28.599f, -27.250f, -25.847f, -24.703f, + -23.654f, -22.988f, -22.132f, -21.891f, -22.114f, -21.822f, -22.113f, -22.559f, -23.153f, + -23.618f, -24.163f, -24.660f, -25.198f, -25.994f, -26.331f, -26.923f, -26.748f, -27.172f, + -28.052f, -25.044f, -21.750f, -16.552f, -14.821f, -13.019f, -10.285f, -9.198f, -8.592f, + 0.011f, 1.203f, 3.495f, 4.508f, 12.905f, 15.585f, 22.265f, 24.230f, 28.364f, + 32.094f, 34.525f, 36.803f, 40.509f, 44.716f, 49.140f, 52.294f, 54.565f, 55.261f, + 51.742f, 46.677f, 41.798f, 34.941f, 43.155f, 56.643f, 58.588f, 68.866f, 73.940f, + 76.337f, 74.328f, 74.110f, 73.359f, 72.191f, 69.478f, 67.396f, 65.794f, 63.517f, + 60.753f, 58.579f, 56.355f, 54.318f, 51.891f, 49.940f, 48.014f, 46.015f, 43.939f, + 41.812f, 39.879f, 38.466f, 37.205f, 36.014f, 35.597f, 36.256f, 36.269f, 33.368f, + 28.972f, 25.904f, 24.359f, 25.716f, 29.264f, 31.243f, 32.673f, 32.313f, 31.020f, + 28.457f, 27.524f, 27.198f, 24.783f, 23.884f, 22.907f, 22.961f, 25.279f, 25.381f, + 23.763f, 21.139f, 19.562f, 18.905f, 17.627f, 16.818f, 15.810f, 13.997f, 12.712f, + 11.658f, 11.801f, 11.295f, 9.589f, 8.401f, 3.781f, 2.438f, 0.060f, -2.727f, + -8.459f, -8.661f, -3.655f, -4.668f, -5.029f, -5.191f, -5.617f, -5.829f, -6.426f, + -5.732f, -4.664f, -3.189f, -1.529f, -0.198f, 1.338f, 0.799f, -1.769f, -0.981f, + 0.875f, 2.920f, 5.033f, 6.695f, 7.557f, 8.575f, 10.555f, 12.830f, 13.076f, + 13.606f }, + { -29.534f, -30.131f, -30.620f, -31.811f, -33.502f, -35.346f, -36.716f, -38.775f, -40.326f, + -40.835f, -42.391f, -43.540f, -44.385f, -45.291f, -45.793f, -46.310f, -45.926f, -43.249f, + -39.974f, -38.613f, -37.613f, -37.317f, -37.245f, -36.781f, -37.409f, -35.871f, -40.187f, + -38.576f, -36.190f, -34.218f, -32.350f, -30.465f, -28.678f, -27.275f, -25.723f, -24.649f, + -23.651f, -22.785f, -21.896f, -21.455f, -21.618f, -21.268f, -21.515f, -21.916f, -22.480f, + -22.976f, -23.296f, -23.811f, -24.130f, -24.738f, -25.496f, -25.557f, -25.559f, -26.038f, + -25.984f, -22.202f, -18.195f, -14.558f, -12.249f, -8.810f, -6.130f, -4.116f, -5.796f, + 0.312f, 1.837f, 4.739f, 7.081f, 15.490f, 18.529f, 23.856f, 24.593f, 28.908f, + 32.961f, 36.472f, 39.050f, 42.548f, 47.734f, 51.513f, 53.545f, 57.043f, 57.786f, + 56.275f, 51.040f, 46.077f, 43.563f, 48.859f, 54.477f, 63.454f, 70.554f, 76.510f, + 72.741f, 74.425f, 74.322f, 74.421f, 72.110f, 69.736f, 67.146f, 65.909f, 64.034f, + 60.858f, 58.246f, 56.054f, 53.869f, 51.616f, 49.611f, 48.452f, 46.409f, 44.127f, + 42.281f, 40.493f, 39.010f, 37.952f, 36.972f, 36.728f, 37.200f, 34.286f, 36.186f, + 32.971f, 32.661f, 28.726f, 26.786f, 26.630f, 25.814f, 30.691f, 31.903f, 32.720f, + 30.003f, 29.132f, 27.961f, 25.842f, 24.943f, 23.745f, 23.109f, 26.275f, 24.454f, + 23.018f, 21.786f, 20.297f, 19.097f, 19.346f, 18.555f, 17.128f, 15.884f, 14.542f, + 13.104f, 13.459f, 12.351f, 11.086f, 9.827f, 5.640f, 3.737f, 1.537f, -1.126f, + -6.843f, -5.920f, -2.813f, -4.363f, -4.852f, -4.645f, -5.020f, -5.810f, -5.757f, + -5.240f, -3.919f, -2.966f, -1.456f, -0.252f, 1.753f, 1.612f, -1.556f, -0.964f, + 0.729f, 2.988f, 4.915f, 6.403f, 7.292f, 8.738f, 10.934f, 13.121f, 13.102f, + 13.606f }, + { -29.534f, -30.156f, -30.672f, -31.900f, -33.639f, -35.416f, -36.872f, -38.765f, -40.248f, + -41.349f, -43.122f, -44.376f, -45.080f, -46.184f, -47.091f, -47.755f, -46.807f, -43.408f, + -40.183f, -39.022f, -38.148f, -37.030f, -36.988f, -37.526f, -38.104f, -37.257f, -40.710f, + -39.262f, -36.494f, -34.608f, -32.671f, -30.466f, -28.726f, -27.181f, -25.619f, -24.487f, + -23.436f, -22.565f, -21.645f, -21.122f, -20.991f, -20.753f, -20.855f, -21.309f, -21.700f, + -22.243f, -22.589f, -23.065f, -23.296f, -23.458f, -24.200f, -24.024f, -24.230f, -24.655f, + -24.252f, -19.022f, -14.064f, -14.474f, -12.264f, -7.304f, -3.517f, -0.993f, 0.042f, + 0.512f, 4.390f, 6.667f, 9.880f, 19.153f, 21.349f, 25.896f, 27.511f, 31.394f, + 35.039f, 37.980f, 40.693f, 44.757f, 50.216f, 53.836f, 56.428f, 58.940f, 60.347f, + 59.849f, 58.995f, 53.909f, 52.503f, 58.730f, 65.159f, 68.542f, 70.688f, 79.491f, + 73.762f, 74.390f, 74.306f, 73.398f, 72.473f, 70.540f, 68.720f, 66.501f, 63.978f, + 61.640f, 58.137f, 55.787f, 53.810f, 52.016f, 50.048f, 48.737f, 46.421f, 44.399f, + 42.555f, 41.049f, 39.813f, 38.858f, 38.288f, 37.653f, 37.244f, 35.683f, 36.475f, + 34.852f, 34.839f, 33.080f, 31.990f, 29.804f, 31.368f, 34.322f, 34.017f, 35.077f, + 32.916f, 31.457f, 28.904f, 27.670f, 26.177f, 24.878f, 23.774f, 26.041f, 24.603f, + 23.532f, 22.248f, 20.662f, 19.772f, 19.625f, 19.985f, 18.499f, 17.584f, 16.534f, + 14.058f, 14.126f, 13.029f, 11.492f, 10.009f, 7.119f, 4.494f, 2.849f, -0.111f, + -5.893f, -2.888f, -1.704f, -3.435f, -4.239f, -4.158f, -4.312f, -5.047f, -5.119f, + -4.676f, -3.348f, -2.611f, -1.498f, -0.291f, 1.795f, 1.928f, -1.241f, -0.877f, + 0.632f, 3.034f, 4.749f, 6.092f, 7.115f, 9.012f, 11.355f, 13.409f, 13.127f, + 13.606f }, + { -29.534f, -30.179f, -30.723f, -31.987f, -33.778f, -35.464f, -37.031f, -38.812f, -40.516f, + -42.017f, -43.794f, -45.247f, -46.044f, -47.563f, -48.681f, -48.443f, -46.178f, -43.149f, + -41.154f, -40.453f, -38.887f, -37.202f, -37.392f, -38.791f, -38.565f, -38.302f, -41.024f, + -40.137f, -36.906f, -34.985f, -32.914f, -30.612f, -28.746f, -27.091f, -25.631f, -24.516f, + -23.398f, -22.405f, -21.382f, -20.636f, -20.486f, -20.287f, -20.243f, -20.449f, -20.875f, + -21.313f, -21.724f, -21.995f, -22.308f, -22.301f, -22.618f, -23.088f, -22.455f, -22.744f, + -21.408f, -14.951f, -11.394f, -11.013f, -8.952f, -5.687f, -1.150f, 1.725f, 3.533f, + 4.313f, 7.982f, 9.524f, 12.902f, 21.742f, 25.114f, 27.975f, 31.048f, 34.295f, + 36.909f, 39.131f, 42.810f, 46.959f, 51.413f, 54.801f, 56.760f, 58.662f, 61.227f, + 61.965f, 63.176f, 62.905f, 57.547f, 57.415f, 66.820f, 68.675f, 69.716f, 77.891f, + 73.017f, 73.115f, 72.654f, 71.925f, 70.658f, 68.990f, 66.325f, 67.650f, 64.061f, + 61.167f, 58.783f, 56.083f, 53.846f, 52.283f, 50.621f, 49.402f, 47.162f, 45.280f, + 43.485f, 41.825f, 40.659f, 39.721f, 39.471f, 38.757f, 36.824f, 36.792f, 36.313f, + 35.340f, 35.058f, 35.787f, 34.399f, 33.208f, 32.508f, 34.908f, 36.959f, 36.063f, + 33.064f, 31.643f, 31.162f, 29.770f, 28.989f, 25.795f, 24.724f, 26.798f, 25.004f, + 25.212f, 23.684f, 22.506f, 20.679f, 20.066f, 20.791f, 20.219f, 18.817f, 17.785f, + 15.531f, 14.257f, 13.484f, 11.575f, 10.373f, 8.049f, 5.147f, 3.464f, 0.589f, + -5.060f, -0.371f, -0.341f, -2.088f, -3.273f, -3.565f, -3.823f, -4.001f, -4.540f, + -4.136f, -3.125f, -2.269f, -1.491f, -0.425f, 1.405f, 2.019f, -1.050f, -0.757f, + 0.621f, 3.017f, 4.547f, 5.828f, 7.065f, 9.381f, 11.795f, 13.685f, 13.152f, + 13.606f }, + { -29.534f, -30.202f, -30.772f, -32.075f, -33.918f, -35.507f, -37.194f, -38.993f, -41.193f, + -42.854f, -44.499f, -46.199f, -47.319f, -48.999f, -49.903f, -48.375f, -45.389f, -43.490f, + -42.433f, -42.107f, -41.532f, -40.109f, -39.467f, -39.597f, -39.170f, -39.385f, -41.130f, + -40.251f, -37.273f, -35.001f, -32.875f, -30.688f, -28.761f, -27.111f, -25.620f, -24.476f, + -23.313f, -22.149f, -20.980f, -20.325f, -19.921f, -19.651f, -19.525f, -19.659f, -19.935f, + -20.413f, -20.563f, -20.847f, -20.974f, -21.033f, -21.098f, -21.682f, -20.831f, -20.885f, + -18.493f, -10.529f, -8.012f, -6.754f, -3.681f, -2.234f, 0.429f, 3.821f, 5.143f, + 6.749f, 9.634f, 13.389f, 17.001f, 23.980f, 27.253f, 30.792f, 33.081f, 35.676f, + 39.161f, 42.588f, 45.405f, 48.441f, 52.059f, 55.515f, 58.875f, 60.157f, 62.761f, + 64.513f, 66.447f, 67.124f, 66.134f, 67.526f, 70.023f, 68.664f, 72.121f, 75.191f, + 71.986f, 70.967f, 71.584f, 70.606f, 69.714f, 68.299f, 65.557f, 62.784f, 62.583f, + 61.716f, 59.575f, 58.032f, 55.340f, 53.643f, 51.830f, 50.329f, 48.649f, 46.718f, + 44.692f, 42.622f, 41.601f, 40.707f, 40.052f, 39.523f, 37.911f, 36.865f, 37.262f, + 37.185f, 37.139f, 36.130f, 36.017f, 35.644f, 33.159f, 33.537f, 36.515f, 36.355f, + 34.320f, 32.656f, 30.558f, 30.632f, 30.194f, 26.966f, 25.819f, 26.052f, 26.952f, + 28.680f, 26.580f, 24.519f, 21.909f, 20.660f, 20.553f, 20.227f, 18.974f, 18.480f, + 16.616f, 14.537f, 14.082f, 12.421f, 10.822f, 8.506f, 5.295f, 3.766f, 1.190f, + -4.091f, 1.385f, 0.480f, -0.946f, -2.358f, -3.020f, -3.053f, -3.196f, -4.083f, + -3.695f, -3.033f, -1.972f, -1.301f, -0.585f, 0.817f, 2.241f, -1.125f, -0.672f, + 0.755f, 2.959f, 4.357f, 5.676f, 7.162f, 9.815f, 12.228f, 13.942f, 13.175f, + 13.606f }, + { -29.534f, -30.224f, -30.819f, -32.162f, -34.058f, -35.565f, -37.357f, -39.329f, -42.154f, + -43.834f, -45.344f, -47.254f, -48.603f, -49.881f, -50.209f, -48.307f, -45.852f, -44.567f, + -43.402f, -43.175f, -44.096f, -43.035f, -41.195f, -39.826f, -40.077f, -40.653f, -40.903f, + -40.240f, -37.540f, -35.107f, -32.947f, -30.641f, -28.764f, -27.079f, -25.619f, -24.426f, + -23.140f, -21.910f, -20.778f, -19.991f, -19.433f, -19.015f, -18.757f, -18.939f, -19.114f, + -19.329f, -19.542f, -19.683f, -19.795f, -19.684f, -19.499f, -19.858f, -19.275f, -18.233f, + -10.740f, -6.662f, -4.164f, -2.361f, 0.223f, 1.243f, 3.202f, 5.387f, 7.510f, + 8.805f, 12.246f, 16.394f, 21.843f, 26.481f, 29.720f, 31.859f, 34.319f, 37.378f, + 41.025f, 44.623f, 47.392f, 50.731f, 53.677f, 56.875f, 60.478f, 62.279f, 64.934f, + 66.660f, 67.204f, 68.115f, 68.022f, 67.518f, 75.594f, 69.122f, 72.104f, 74.609f, + 67.969f, 70.649f, 71.088f, 69.979f, 68.803f, 67.846f, 66.661f, 62.665f, 63.063f, + 61.653f, 59.510f, 57.946f, 55.709f, 53.988f, 52.155f, 50.667f, 49.134f, 47.615f, + 46.058f, 44.870f, 43.607f, 41.968f, 40.848f, 39.437f, 39.137f, 39.113f, 39.293f, + 38.598f, 38.145f, 37.703f, 37.491f, 37.208f, 35.537f, 34.273f, 39.600f, 36.730f, + 35.649f, 34.538f, 32.362f, 31.354f, 30.990f, 28.375f, 27.197f, 25.688f, 26.666f, + 29.927f, 29.054f, 26.049f, 23.388f, 21.272f, 20.394f, 19.692f, 18.183f, 17.283f, + 16.292f, 14.666f, 14.574f, 13.529f, 11.317f, 9.676f, 6.307f, 4.973f, 2.216f, + -2.428f, 2.690f, 1.184f, -0.228f, -1.761f, -2.445f, -2.307f, -2.466f, -3.691f, + -3.318f, -2.792f, -1.724f, -0.952f, -0.466f, 0.332f, 2.635f, -1.319f, -0.659f, + 1.070f, 2.948f, 4.264f, 5.688f, 7.407f, 10.273f, 12.629f, 14.174f, 13.196f, + 13.606f }, + { -29.534f, -30.244f, -30.865f, -32.249f, -34.195f, -35.654f, -37.514f, -39.775f, -43.145f, + -44.858f, -46.362f, -48.352f, -49.544f, -50.183f, -50.020f, -48.884f, -47.484f, -46.374f, + -45.007f, -44.388f, -44.102f, -43.227f, -41.453f, -40.285f, -41.088f, -41.894f, -40.697f, + -40.763f, -37.849f, -35.123f, -33.008f, -30.772f, -28.648f, -27.121f, -25.655f, -24.289f, + -22.864f, -21.683f, -20.463f, -19.501f, -18.900f, -18.437f, -18.160f, -18.123f, -18.327f, + -18.517f, -18.690f, -18.636f, -18.632f, -18.452f, -18.045f, -18.086f, -17.220f, -13.475f, + -6.752f, -3.837f, -1.656f, 0.861f, 2.182f, 3.782f, 5.848f, 7.571f, 9.025f, + 11.654f, 14.470f, 19.446f, 24.286f, 28.010f, 31.402f, 33.828f, 37.018f, 39.660f, + 43.502f, 45.402f, 48.975f, 52.675f, 55.115f, 57.586f, 60.660f, 62.579f, 64.210f, + 66.472f, 68.354f, 69.843f, 70.102f, 69.888f, 80.779f, 76.710f, 73.647f, 72.421f, + 68.395f, 70.858f, 70.471f, 69.381f, 68.111f, 67.059f, 65.743f, 61.494f, 65.328f, + 61.712f, 59.703f, 57.794f, 55.974f, 54.642f, 52.821f, 51.316f, 49.750f, 48.650f, + 47.290f, 46.353f, 45.457f, 44.538f, 43.831f, 42.002f, 41.722f, 40.976f, 40.333f, + 40.076f, 39.628f, 39.118f, 38.564f, 37.920f, 37.244f, 35.670f, 36.136f, 37.492f, + 39.826f, 36.770f, 35.931f, 32.791f, 31.452f, 29.624f, 28.120f, 26.932f, 26.269f, + 26.219f, 28.526f, 28.228f, 25.300f, 22.789f, 20.588f, 19.417f, 18.396f, 17.538f, + 16.480f, 15.210f, 15.050f, 14.891f, 12.413f, 10.883f, 8.593f, 7.689f, 4.471f, + 1.053f, 3.945f, 2.274f, 0.602f, -1.454f, -0.938f, -1.616f, -1.874f, -3.299f, + -3.017f, -2.501f, -1.604f, -0.587f, 0.071f, 0.146f, 2.935f, -1.247f, -0.667f, + 1.543f, 3.094f, 4.362f, 5.886f, 7.774f, 10.713f, 12.973f, 14.374f, 13.216f, + 13.606f }, + { -29.534f, -30.263f, -30.909f, -32.335f, -34.327f, -35.783f, -37.657f, -40.246f, -43.907f, + -45.766f, -47.463f, -49.361f, -50.102f, -50.459f, -50.244f, -49.906f, -49.047f, -48.405f, + -47.748f, -45.944f, -43.062f, -42.069f, -41.223f, -40.380f, -41.967f, -43.070f, -40.698f, + -41.075f, -38.408f, -35.039f, -32.922f, -30.744f, -28.576f, -26.820f, -25.289f, -23.798f, + -22.361f, -21.034f, -20.014f, -19.041f, -18.310f, -17.783f, -17.529f, -17.436f, -17.587f, + -17.648f, -17.759f, -17.889f, -17.644f, -17.165f, -16.740f, -16.040f, -15.441f, -8.585f, + -4.841f, -2.067f, 0.613f, 2.627f, 4.343f, 6.625f, 7.975f, 9.716f, 10.744f, + 13.569f, 16.969f, 21.232f, 26.206f, 30.388f, 33.575f, 36.273f, 39.085f, 41.951f, + 45.454f, 47.531f, 49.779f, 52.218f, 54.914f, 58.280f, 61.781f, 63.826f, 65.607f, + 67.491f, 68.685f, 69.639f, 70.066f, 69.257f, 82.330f, 78.075f, 74.879f, 69.956f, + 70.105f, 70.796f, 70.092f, 68.763f, 67.475f, 66.518f, 65.513f, 63.922f, 58.489f, + 58.601f, 60.112f, 58.869f, 56.081f, 54.956f, 53.069f, 51.907f, 50.658f, 49.566f, + 48.268f, 47.473f, 46.523f, 45.902f, 45.325f, 44.336f, 43.715f, 43.065f, 42.183f, + 41.728f, 40.724f, 39.997f, 39.470f, 39.227f, 38.618f, 36.997f, 37.136f, 40.882f, + 42.320f, 39.586f, 36.248f, 34.509f, 32.518f, 30.282f, 29.052f, 28.098f, 26.945f, + 25.613f, 26.092f, 27.309f, 26.075f, 23.904f, 21.807f, 20.341f, 19.489f, 17.958f, + 16.957f, 15.661f, 14.953f, 15.060f, 13.798f, 11.811f, 10.072f, 9.410f, 7.059f, + 4.638f, 4.982f, 2.998f, 1.864f, 0.157f, 0.831f, -0.631f, -1.458f, -2.896f, + -2.820f, -2.267f, -1.524f, -0.304f, 0.693f, 0.317f, 2.897f, -0.592f, -0.572f, + 2.093f, 3.463f, 4.716f, 6.261f, 8.218f, 11.088f, 13.237f, 14.535f, 13.234f, + 13.606f }, + { -29.534f, -30.281f, -30.951f, -32.420f, -34.449f, -35.949f, -37.777f, -40.647f, -44.289f, + -46.400f, -48.477f, -50.160f, -50.561f, -51.163f, -51.193f, -50.765f, -49.703f, -49.548f, + -50.260f, -47.041f, -43.056f, -41.884f, -41.005f, -40.295f, -42.038f, -43.698f, -40.943f, + -41.085f, -39.004f, -34.983f, -32.848f, -30.484f, -28.281f, -26.664f, -25.070f, -23.480f, + -22.155f, -21.047f, -19.893f, -18.740f, -17.925f, -17.390f, -17.103f, -17.148f, -17.301f, + -17.132f, -17.010f, -16.619f, -16.694f, -16.191f, -15.381f, -14.709f, -11.729f, -6.333f, + -3.385f, -0.432f, 2.872f, 7.085f, 8.556f, 10.978f, 11.752f, 11.534f, 13.214f, + 15.988f, 19.472f, 23.911f, 28.380f, 33.129f, 37.267f, 40.227f, 43.208f, 44.920f, + 47.610f, 50.190f, 50.856f, 52.347f, 55.230f, 58.581f, 61.968f, 65.522f, 67.514f, + 68.885f, 69.818f, 70.126f, 70.331f, 71.609f, 81.022f, 76.423f, 73.707f, 69.321f, + 71.190f, 70.927f, 69.740f, 68.533f, 67.289f, 66.290f, 64.777f, 64.115f, 63.251f, + 60.622f, 55.067f, 50.489f, 54.030f, 53.788f, 53.111f, 52.134f, 51.111f, 49.966f, + 49.314f, 48.606f, 48.078f, 47.468f, 46.939f, 46.324f, 45.447f, 44.327f, 43.285f, + 42.522f, 42.356f, 42.101f, 42.094f, 42.374f, 41.856f, 40.636f, 39.672f, 39.367f, + 41.430f, 42.368f, 38.126f, 36.699f, 34.420f, 32.305f, 30.465f, 28.799f, 27.744f, + 26.637f, 24.621f, 25.229f, 25.690f, 24.157f, 22.715f, 21.420f, 19.742f, 18.478f, + 17.436f, 15.605f, 14.627f, 14.550f, 14.877f, 12.973f, 11.272f, 10.521f, 8.351f, + 6.973f, 5.963f, 3.325f, 3.224f, 2.525f, 1.329f, 0.078f, -0.989f, -2.427f, + -2.576f, -1.870f, -1.273f, -0.088f, 0.922f, 0.756f, 2.534f, 0.600f, -0.261f, + 2.610f, 4.022f, 5.325f, 6.767f, 8.679f, 11.358f, 13.404f, 14.655f, 13.250f, + 13.606f }, + { -29.534f, -30.298f, -30.992f, -32.503f, -34.559f, -36.139f, -37.870f, -40.904f, -44.309f, + -46.695f, -49.244f, -50.735f, -51.200f, -52.240f, -52.425f, -51.359f, -49.759f, -49.444f, + -51.158f, -47.872f, -43.893f, -43.030f, -41.432f, -40.805f, -41.796f, -44.282f, -41.419f, + -40.978f, -38.809f, -34.974f, -32.984f, -30.368f, -28.433f, -26.656f, -24.875f, -23.155f, + -21.547f, -20.170f, -19.124f, -18.831f, -18.521f, -18.191f, -17.913f, -17.663f, -17.589f, + -17.202f, -16.785f, -16.199f, -16.157f, -15.775f, -15.067f, -13.052f, -7.929f, -3.588f, + -1.050f, 1.131f, 3.714f, 7.182f, 9.689f, 10.214f, 12.594f, 13.599f, 15.034f, + 17.691f, 20.906f, 25.805f, 31.368f, 35.923f, 40.445f, 43.896f, 45.995f, 47.288f, + 49.649f, 51.509f, 52.457f, 53.736f, 56.872f, 59.712f, 62.437f, 66.327f, 69.201f, + 70.472f, 70.995f, 72.213f, 72.856f, 75.784f, 77.301f, 77.238f, 71.214f, 72.106f, + 72.228f, 70.936f, 69.250f, 67.937f, 66.631f, 65.510f, 64.299f, 63.392f, 62.728f, + 60.429f, 61.322f, 50.860f, 52.845f, 52.936f, 53.022f, 52.366f, 51.165f, 50.845f, + 50.042f, 49.307f, 48.859f, 48.324f, 47.593f, 46.894f, 46.357f, 45.608f, 44.488f, + 43.658f, 43.431f, 42.589f, 42.338f, 42.313f, 41.582f, 43.158f, 39.302f, 33.735f, + 38.186f, 42.581f, 41.619f, 39.119f, 37.738f, 35.303f, 34.537f, 31.627f, 29.552f, + 28.156f, 25.545f, 23.766f, 23.504f, 23.262f, 22.490f, 21.417f, 20.022f, 18.815f, + 17.853f, 15.715f, 14.179f, 14.292f, 14.255f, 13.422f, 12.185f, 11.204f, 9.443f, + 8.262f, 6.389f, 4.132f, 4.383f, 3.045f, 1.325f, 0.181f, -0.683f, -1.937f, + -2.198f, -1.300f, -0.945f, 0.107f, 0.715f, 1.216f, 2.065f, 1.900f, 0.277f, + 2.994f, 4.635f, 6.102f, 7.329f, 9.091f, 11.492f, 13.461f, 14.729f, 13.263f, + 13.606f }, + { -29.534f, -30.313f, -31.032f, -32.583f, -34.652f, -36.329f, -37.935f, -40.986f, -44.124f, + -46.724f, -49.691f, -51.200f, -52.048f, -53.349f, -53.487f, -52.080f, -49.965f, -49.012f, + -50.603f, -48.688f, -44.822f, -43.744f, -42.631f, -41.666f, -42.036f, -44.405f, -41.963f, + -40.930f, -37.914f, -34.957f, -32.666f, -30.203f, -27.897f, -25.845f, -23.860f, -22.242f, + -20.836f, -20.052f, -19.407f, -18.731f, -18.077f, -17.598f, -17.424f, -17.050f, -17.021f, + -16.809f, -16.247f, -15.763f, -15.400f, -15.274f, -13.533f, -10.218f, -3.801f, -0.877f, + 0.942f, 2.138f, 4.024f, 8.162f, 11.919f, 13.575f, 15.313f, 16.289f, 17.512f, + 20.089f, 22.792f, 26.588f, 32.388f, 37.448f, 40.986f, 43.649f, 45.264f, 47.750f, + 49.929f, 52.312f, 53.700f, 55.892f, 58.703f, 60.989f, 63.469f, 66.727f, 70.022f, + 71.361f, 72.174f, 73.311f, 74.572f, 81.112f, 78.736f, 77.573f, 71.138f, 72.791f, + 72.307f, 70.894f, 69.541f, 68.177f, 66.662f, 65.206f, 64.210f, 62.534f, 61.875f, + 60.847f, 56.076f, 43.494f, 48.140f, 52.422f, 52.610f, 52.181f, 51.634f, 50.670f, + 50.132f, 49.347f, 48.793f, 48.294f, 47.473f, 47.646f, 47.685f, 46.811f, 42.552f, + 41.868f, 40.203f, 36.436f, 34.539f, 35.484f, 33.148f, 33.620f, 24.859f, 22.738f, + 30.788f, 39.027f, 41.355f, 41.209f, 40.368f, 35.918f, 32.730f, 33.140f, 30.624f, + 28.599f, 26.500f, 23.677f, 21.629f, 21.446f, 20.872f, 19.814f, 19.283f, 18.698f, + 16.926f, 15.225f, 14.408f, 14.215f, 13.284f, 13.223f, 12.581f, 11.702f, 10.625f, + 8.483f, 6.209f, 5.402f, 5.025f, 2.526f, 1.543f, 0.174f, -0.800f, -1.592f, + -1.888f, -0.927f, -0.831f, 0.278f, 0.498f, 1.420f, 1.717f, 2.806f, 0.931f, + 3.185f, 5.113f, 6.888f, 7.859f, 9.395f, 11.472f, 13.403f, 14.755f, 13.274f, + 13.606f }, + { -29.534f, -30.327f, -31.070f, -32.659f, -34.729f, -36.492f, -37.977f, -40.911f, -43.932f, + -46.676f, -49.868f, -51.712f, -52.947f, -54.267f, -54.345f, -53.058f, -50.600f, -49.160f, + -49.909f, -49.035f, -45.870f, -44.062f, -43.944f, -42.918f, -43.019f, -44.354f, -42.873f, + -40.499f, -37.319f, -34.627f, -32.206f, -29.625f, -27.219f, -25.125f, -23.175f, -21.568f, + -20.321f, -19.365f, -18.841f, -18.232f, -17.584f, -17.162f, -17.018f, -16.625f, -16.381f, + -16.177f, -15.818f, -15.001f, -15.262f, -14.034f, -11.686f, -6.272f, -0.710f, 2.071f, + 3.031f, 4.077f, 5.676f, 8.343f, 12.659f, 15.677f, 17.624f, 18.854f, 19.897f, + 21.928f, 23.985f, 27.870f, 31.903f, 37.240f, 40.757f, 43.407f, 45.481f, 48.740f, + 51.451f, 53.922f, 55.938f, 58.162f, 61.583f, 63.780f, 66.535f, 69.363f, 72.079f, + 73.286f, 74.238f, 74.952f, 78.517f, 83.627f, 78.267f, 77.106f, 73.477f, 73.389f, + 72.288f, 70.667f, 69.235f, 68.104f, 66.877f, 65.527f, 64.453f, 62.543f, 61.330f, + 60.456f, 53.968f, 37.894f, 46.371f, 53.394f, 52.784f, 52.196f, 51.536f, 50.641f, + 49.941f, 49.287f, 48.759f, 48.431f, 48.928f, 47.436f, 44.197f, 41.764f, 38.836f, + 45.581f, 48.476f, 36.724f, 25.043f, 19.519f, 16.345f, 14.570f, 10.793f, 12.689f, + 18.972f, 28.451f, 35.366f, 38.049f, 37.377f, 29.321f, 22.499f, 30.337f, 31.342f, + 28.418f, 26.411f, 24.913f, 23.795f, 22.433f, 20.734f, 19.210f, 18.678f, 18.052f, + 16.014f, 15.764f, 14.803f, 13.802f, 13.125f, 13.007f, 12.383f, 12.539f, 11.531f, + 8.641f, 6.516f, 6.112f, 4.787f, 2.977f, 0.949f, 0.296f, -0.953f, -1.403f, + -1.708f, -0.795f, -0.801f, 0.392f, 0.589f, 1.307f, 1.612f, 3.114f, 1.529f, + 3.168f, 5.289f, 7.496f, 8.275f, 9.547f, 11.295f, 13.231f, 14.732f, 13.282f, + 13.606f }, + { -29.534f, -30.340f, -31.107f, -32.730f, -34.789f, -36.601f, -38.008f, -40.731f, -43.863f, + -46.744f, -49.899f, -52.327f, -53.785f, -54.980f, -55.096f, -53.961f, -51.474f, -49.905f, + -50.193f, -49.673f, -47.395f, -45.696f, -45.212f, -43.913f, -44.243f, -44.687f, -43.705f, + -40.020f, -37.050f, -34.451f, -31.758f, -29.236f, -26.908f, -24.689f, -22.848f, -21.268f, + -19.897f, -18.963f, -18.395f, -17.761f, -17.140f, -16.644f, -16.725f, -16.518f, -16.034f, + -15.787f, -15.119f, -14.911f, -14.478f, -11.652f, -7.415f, -2.647f, 1.500f, 3.788f, + 4.607f, 6.031f, 7.848f, 9.067f, 12.231f, 16.132f, 19.181f, 20.477f, 22.345f, + 24.273f, 26.335f, 28.757f, 32.829f, 37.308f, 41.656f, 44.356f, 48.264f, 52.441f, + 53.834f, 56.827f, 58.842f, 61.251f, 63.732f, 66.734f, 69.328f, 72.354f, 74.296f, + 74.611f, 74.775f, 76.373f, 81.409f, 80.506f, 76.549f, 77.502f, 76.485f, 72.873f, + 72.123f, 70.214f, 68.123f, 66.630f, 65.757f, 64.866f, 63.767f, 62.616f, 61.590f, + 57.357f, 51.897f, 40.894f, 48.303f, 54.110f, 54.450f, 53.704f, 52.964f, 52.326f, + 51.560f, 50.886f, 50.196f, 48.993f, 47.185f, 40.385f, 34.846f, 32.709f, 35.251f, + 33.341f, 32.239f, 23.492f, 22.705f, 24.353f, 24.602f, 24.106f, 22.765f, 20.461f, + 16.163f, 16.178f, 24.233f, 24.724f, 23.564f, 17.019f, 20.894f, 30.896f, 31.694f, + 28.042f, 25.718f, 24.531f, 22.783f, 22.142f, 21.642f, 20.149f, 18.152f, 17.787f, + 17.345f, 16.463f, 15.146f, 14.853f, 13.287f, 12.544f, 12.561f, 12.656f, 12.119f, + 8.851f, 7.767f, 6.376f, 4.609f, 4.586f, 0.232f, 0.575f, -0.819f, -1.267f, + -1.396f, -0.567f, -0.435f, 0.458f, 0.846f, 1.125f, 1.746f, 3.017f, 1.941f, + 2.971f, 5.103f, 7.773f, 8.516f, 9.527f, 10.976f, 12.954f, 14.661f, 13.288f, + 13.606f }, + { -29.534f, -30.351f, -31.142f, -32.795f, -34.836f, -36.639f, -38.039f, -40.517f, -43.928f, + -47.002f, -49.902f, -52.931f, -54.576f, -55.575f, -55.717f, -54.608f, -52.416f, -50.890f, + -51.097f, -51.155f, -49.271f, -47.397f, -46.396f, -44.743f, -44.962f, -44.907f, -43.834f, + -39.812f, -36.830f, -34.235f, -31.370f, -28.920f, -26.633f, -24.616f, -22.773f, -21.034f, + -19.783f, -18.868f, -18.243f, -17.778f, -17.149f, -16.506f, -16.072f, -15.894f, -15.508f, + -15.291f, -14.965f, -14.091f, -11.623f, -5.904f, -1.966f, -1.034f, 2.961f, 5.494f, + 6.394f, 8.151f, 9.736f, 11.503f, 13.151f, 16.612f, 20.860f, 22.821f, 24.746f, + 26.489f, 28.282f, 31.639f, 34.710f, 39.102f, 43.323f, 46.689f, 52.184f, 55.547f, + 56.731f, 58.534f, 61.832f, 63.994f, 66.365f, 65.139f, 68.005f, 71.806f, 73.661f, + 74.385f, 74.530f, 77.424f, 82.389f, 76.693f, 74.999f, 78.182f, 77.568f, 73.336f, + 70.758f, 69.128f, 66.941f, 65.625f, 64.598f, 63.652f, 62.990f, 61.977f, 59.281f, + 54.723f, 53.264f, 46.358f, 38.267f, 52.992f, 54.722f, 54.827f, 53.655f, 52.603f, + 51.219f, 50.117f, 49.238f, 47.551f, 42.930f, 32.943f, 28.743f, 37.631f, 39.188f, + 33.008f, 30.191f, 30.224f, 29.865f, 28.874f, 28.507f, 27.625f, 26.909f, 23.573f, + 21.916f, 18.006f, 16.680f, 15.470f, 14.508f, 11.211f, 14.635f, 28.293f, 30.541f, + 27.386f, 24.122f, 21.640f, 21.620f, 21.172f, 20.994f, 18.447f, 17.606f, 17.307f, + 16.508f, 15.917f, 16.248f, 14.998f, 13.491f, 12.839f, 13.697f, 13.424f, 12.246f, + 9.730f, 8.719f, 7.335f, 5.482f, 5.797f, 0.770f, 0.913f, -0.553f, -1.103f, + -0.901f, -0.285f, 0.192f, 0.545f, 0.983f, 1.191f, 1.989f, 2.885f, 2.142f, + 2.658f, 4.623f, 7.647f, 8.560f, 9.341f, 10.542f, 12.584f, 14.545f, 13.291f, + 13.606f }, + { -29.534f, -30.361f, -31.176f, -32.852f, -34.874f, -36.604f, -38.075f, -40.332f, -44.039f, + -47.363f, -49.932f, -53.320f, -55.335f, -56.158f, -56.236f, -55.253f, -53.435f, -51.967f, + -51.576f, -51.889f, -50.802f, -48.425f, -47.654f, -46.514f, -45.307f, -45.162f, -43.365f, + -39.501f, -36.820f, -33.808f, -31.017f, -28.716f, -26.385f, -24.101f, -22.204f, -20.677f, + -19.556f, -18.661f, -17.933f, -17.367f, -17.072f, -16.623f, -16.295f, -16.132f, -15.289f, + -14.607f, -13.007f, -8.970f, -5.565f, -2.332f, -1.725f, 0.795f, 3.864f, 6.684f, + 7.909f, 9.682f, 11.768f, 14.017f, 16.500f, 18.355f, 22.339f, 24.518f, 27.358f, + 29.446f, 31.177f, 34.457f, 38.297f, 42.290f, 45.796f, 49.852f, 55.249f, 58.179f, + 59.535f, 61.114f, 62.777f, 65.219f, 64.652f, 64.335f, 66.948f, 70.070f, 70.927f, + 74.402f, 73.796f, 76.712f, 80.519f, 70.403f, 75.182f, 78.842f, 78.306f, 73.276f, + 69.202f, 68.039f, 66.229f, 64.783f, 63.980f, 63.016f, 62.586f, 60.859f, 60.107f, + 55.520f, 55.253f, 50.752f, 35.438f, 45.781f, 54.949f, 54.991f, 53.682f, 52.075f, + 49.936f, 47.996f, 46.608f, 43.811f, 32.953f, 26.550f, 36.126f, 38.298f, 38.387f, + 35.144f, 32.397f, 31.585f, 29.962f, 28.313f, 28.187f, 27.310f, 25.496f, 23.421f, + 22.400f, 22.151f, 21.160f, 19.808f, 16.913f, 10.494f, 10.981f, 28.077f, 30.534f, + 25.606f, 23.080f, 21.134f, 21.833f, 21.010f, 19.219f, 17.471f, 16.397f, 15.738f, + 15.315f, 15.957f, 17.383f, 15.792f, 14.006f, 13.264f, 13.741f, 13.581f, 12.285f, + 10.999f, 8.699f, 8.831f, 6.992f, 4.531f, 1.810f, 1.168f, -0.135f, -0.725f, + -0.504f, -0.268f, 0.514f, 0.729f, 1.017f, 1.553f, 2.135f, 2.927f, 2.215f, + 2.314f, 4.017f, 7.153f, 8.425f, 9.017f, 10.030f, 12.142f, 14.385f, 13.291f, + 13.606f }, + { -29.534f, -30.370f, -31.208f, -32.902f, -34.910f, -36.511f, -38.112f, -40.220f, -44.085f, + -47.644f, -49.969f, -53.375f, -55.980f, -56.779f, -56.816f, -56.079f, -54.528f, -53.127f, + -51.844f, -51.516f, -51.345f, -50.206f, -48.871f, -47.976f, -45.358f, -45.309f, -42.676f, + -39.439f, -36.663f, -33.808f, -30.913f, -28.366f, -25.951f, -24.076f, -22.261f, -20.507f, + -19.318f, -19.190f, -18.810f, -18.222f, -17.887f, -17.221f, -15.733f, -14.937f, -13.966f, + -13.726f, -9.746f, -5.227f, -1.927f, -1.377f, -1.002f, 1.953f, 6.677f, 8.790f, + 9.506f, 11.757f, 14.161f, 16.737f, 20.025f, 21.563f, 24.109f, 26.228f, 29.005f, + 31.683f, 34.558f, 37.836f, 41.954f, 46.097f, 49.123f, 52.548f, 56.329f, 58.522f, + 59.662f, 61.834f, 62.054f, 62.830f, 63.916f, 65.670f, 67.879f, 70.213f, 69.206f, + 70.884f, 75.442f, 78.264f, 72.099f, 68.271f, 77.267f, 79.405f, 77.637f, 72.968f, + 67.927f, 66.999f, 65.612f, 64.170f, 63.002f, 61.916f, 61.244f, 60.420f, 59.754f, + 56.006f, 53.500f, 50.458f, 41.714f, 31.760f, 42.874f, 49.670f, 52.657f, 48.828f, + 44.180f, 42.227f, 40.519f, 34.819f, 25.733f, 31.228f, 36.730f, 35.254f, 36.369f, + 33.784f, 32.985f, 30.191f, 28.272f, 26.356f, 26.036f, 25.410f, 24.005f, 21.937f, + 22.024f, 21.822f, 22.238f, 22.030f, 20.693f, 16.296f, 8.986f, 21.354f, 30.973f, + 25.708f, 23.014f, 20.454f, 19.800f, 20.014f, 18.812f, 17.495f, 16.462f, 15.938f, + 15.827f, 16.945f, 17.620f, 17.037f, 14.855f, 13.892f, 13.994f, 13.605f, 12.497f, + 10.926f, 9.416f, 9.148f, 8.181f, 2.419f, 2.602f, 1.590f, 0.607f, -0.074f, + -0.259f, -0.370f, 0.345f, 1.008f, 1.176f, 1.947f, 2.073f, 3.067f, 2.286f, + 2.029f, 3.476f, 6.420f, 8.161f, 8.603f, 9.484f, 11.649f, 14.188f, 13.289f, + 13.606f }, + { -29.534f, -30.378f, -31.239f, -32.941f, -34.953f, -36.390f, -38.131f, -40.190f, -44.019f, + -47.717f, -49.975f, -53.179f, -56.393f, -57.339f, -57.463f, -56.842f, -55.563f, -54.319f, + -52.719f, -51.941f, -51.295f, -51.382f, -49.619f, -48.642f, -45.584f, -45.807f, -42.436f, + -39.433f, -36.443f, -33.247f, -30.497f, -28.026f, -25.964f, -23.827f, -22.021f, -21.185f, + -20.738f, -20.288f, -19.384f, -18.356f, -17.995f, -17.099f, -14.772f, -13.352f, -13.744f, + -13.147f, -8.084f, -4.055f, -1.341f, -1.036f, -0.032f, 1.627f, 6.520f, 12.393f, + 11.819f, 13.558f, 16.575f, 18.869f, 21.657f, 24.488f, 26.035f, 27.792f, 30.148f, + 33.940f, 38.071f, 41.330f, 45.500f, 48.824f, 51.405f, 53.939f, 56.609f, 58.355f, + 59.050f, 59.333f, 61.043f, 63.347f, 64.844f, 64.939f, 67.210f, 69.299f, 69.072f, + 77.019f, 84.229f, 73.312f, 71.121f, 73.513f, 79.020f, 79.868f, 77.597f, 72.313f, + 66.041f, 66.345f, 65.300f, 63.749f, 62.464f, 61.276f, 60.137f, 59.348f, 58.682f, + 54.071f, 51.226f, 49.687f, 46.808f, 39.501f, 32.106f, 36.966f, 39.536f, 38.184f, + 36.946f, 34.772f, 31.172f, 29.460f, 32.055f, 35.019f, 35.440f, 34.104f, 33.829f, + 32.244f, 30.172f, 27.900f, 25.778f, 24.448f, 24.022f, 22.985f, 21.476f, 20.964f, + 20.797f, 20.322f, 20.746f, 21.475f, 20.805f, 18.685f, 9.999f, 10.537f, 29.627f, + 26.460f, 22.913f, 21.082f, 19.957f, 19.841f, 18.778f, 17.572f, 17.054f, 16.656f, + 16.739f, 17.706f, 17.961f, 17.228f, 15.354f, 14.278f, 14.142f, 14.024f, 12.585f, + 10.866f, 10.537f, 8.850f, 8.183f, 2.301f, 3.204f, 2.229f, 1.419f, 0.518f, + 0.048f, -0.198f, 0.161f, 1.247f, 1.505f, 2.101f, 1.943f, 3.096f, 2.449f, + 1.867f, 3.130f, 5.626f, 7.838f, 8.156f, 8.949f, 11.131f, 13.957f, 13.284f, + 13.606f }, + { -29.534f, -30.384f, -31.268f, -32.971f, -35.010f, -36.282f, -38.105f, -40.213f, -43.888f, + -47.631f, -49.953f, -52.945f, -56.567f, -57.646f, -57.899f, -57.268f, -56.379f, -55.452f, + -54.004f, -53.401f, -52.058f, -51.236f, -50.563f, -49.336f, -45.865f, -46.246f, -42.382f, + -39.188f, -36.054f, -33.000f, -30.493f, -27.966f, -25.598f, -23.751f, -22.907f, -22.068f, + -21.246f, -19.732f, -19.060f, -18.169f, -17.479f, -16.248f, -13.842f, -12.275f, -13.746f, + -13.252f, -9.376f, -5.051f, -1.741f, -0.259f, 0.795f, 2.693f, 6.489f, 13.516f, + 15.704f, 16.853f, 19.131f, 21.994f, 23.708f, 25.351f, 27.663f, 30.086f, 32.165f, + 35.211f, 39.151f, 44.317f, 47.382f, 49.758f, 52.111f, 55.042f, 56.504f, 57.766f, + 57.734f, 60.471f, 62.880f, 64.295f, 63.626f, 64.868f, 66.536f, 68.378f, 75.329f, + 82.188f, 74.844f, 59.791f, 69.821f, 78.240f, 80.567f, 79.443f, 76.228f, 71.140f, + 65.546f, 65.905f, 64.155f, 62.815f, 62.089f, 60.936f, 59.464f, 58.423f, 58.680f, + 54.482f, 51.174f, 47.426f, 47.108f, 46.510f, 42.883f, 39.610f, 36.164f, 31.384f, + 30.938f, 32.978f, 35.643f, 37.633f, 36.921f, 35.983f, 33.908f, 32.339f, 32.055f, + 29.478f, 27.598f, 24.873f, 23.454f, 21.845f, 21.732f, 20.817f, 19.496f, 18.957f, + 18.808f, 18.371f, 18.620f, 19.890f, 19.799f, 18.743f, 13.798f, 2.790f, 18.909f, + 27.966f, 23.174f, 21.244f, 19.911f, 20.159f, 19.313f, 18.127f, 17.826f, 17.759f, + 17.725f, 18.109f, 18.466f, 17.515f, 15.661f, 15.015f, 14.449f, 14.532f, 12.938f, + 11.658f, 10.571f, 9.672f, 7.048f, 3.501f, 3.700f, 2.780f, 1.893f, 0.861f, + 0.387f, 0.180f, 0.358f, 1.271f, 1.829f, 2.007f, 2.041f, 2.921f, 2.717f, + 1.837f, 3.005f, 4.942f, 7.524f, 7.729f, 8.461f, 10.611f, 13.699f, 13.277f, + 13.606f }, + { -29.534f, -30.388f, -31.295f, -32.990f, -35.087f, -36.227f, -38.001f, -40.226f, -43.785f, + -47.608f, -49.974f, -52.850f, -56.596f, -57.632f, -57.927f, -57.477f, -56.966f, -56.416f, + -55.264f, -54.709f, -53.765f, -51.843f, -51.667f, -49.320f, -45.557f, -45.860f, -42.172f, + -39.020f, -35.996f, -33.130f, -30.233f, -27.383f, -25.508f, -24.483f, -23.318f, -21.769f, + -20.739f, -19.674f, -18.669f, -17.609f, -16.865f, -15.768f, -13.499f, -12.924f, -13.567f, + -12.393f, -10.685f, -8.223f, -5.100f, -2.531f, 0.169f, 0.793f, 7.076f, 14.101f, + 18.586f, 19.524f, 22.141f, 24.827f, 25.988f, 27.243f, 28.218f, 30.633f, 33.234f, + 36.212f, 40.265f, 45.601f, 47.680f, 50.330f, 53.604f, 55.296f, 57.346f, 58.048f, + 58.738f, 61.140f, 63.270f, 64.072f, 62.308f, 64.648f, 65.337f, 69.000f, 78.171f, + 77.721f, 67.704f, 58.705f, 74.951f, 80.377f, 80.531f, 78.162f, 73.807f, 68.897f, + 62.062f, 62.435f, 61.957f, 60.985f, 59.461f, 59.093f, 57.703f, 58.455f, 57.721f, + 50.707f, 46.013f, 45.657f, 46.347f, 45.521f, 44.324f, 43.449f, 43.177f, 40.059f, + 39.007f, 38.277f, 41.115f, 36.670f, 37.272f, 35.485f, 31.894f, 30.936f, 28.186f, + 27.698f, 24.483f, 22.705f, 21.181f, 19.504f, 19.775f, 17.959f, 17.018f, 16.658f, + 16.385f, 15.654f, 16.293f, 17.685f, 18.389f, 18.468f, 16.468f, 5.614f, 2.230f, + 24.029f, 23.699f, 21.219f, 19.886f, 20.278f, 20.009f, 18.450f, 18.834f, 18.235f, + 18.146f, 18.838f, 18.934f, 17.702f, 15.996f, 16.155f, 15.302f, 14.921f, 13.570f, + 11.960f, 10.385f, 9.259f, 5.336f, 4.613f, 4.289f, 3.231f, 2.066f, 1.198f, + 0.496f, 0.458f, 0.729f, 1.069f, 2.050f, 1.866f, 2.487f, 2.644f, 3.012f, + 1.891f, 3.025f, 4.477f, 7.267f, 7.366f, 8.052f, 10.114f, 13.421f, 13.268f, + 13.606f }, + { -29.534f, -30.392f, -31.321f, -32.999f, -35.187f, -36.257f, -37.793f, -40.149f, -43.769f, + -47.890f, -50.124f, -52.912f, -56.544f, -57.431f, -57.740f, -57.731f, -57.454f, -57.054f, + -56.359f, -55.803f, -54.940f, -52.839f, -51.859f, -48.891f, -45.244f, -45.580f, -42.018f, + -38.840f, -35.983f, -32.693f, -29.654f, -27.227f, -25.791f, -24.298f, -23.024f, -21.523f, + -20.637f, -19.599f, -19.055f, -18.075f, -17.065f, -14.012f, -14.281f, -14.314f, -13.509f, + -11.796f, -9.014f, -8.741f, -6.905f, -4.609f, -2.335f, -0.889f, 6.400f, 11.825f, + 16.643f, 20.421f, 24.353f, 26.895f, 28.226f, 29.576f, 31.691f, 32.827f, 35.217f, + 38.001f, 42.150f, 46.178f, 49.255f, 51.466f, 53.438f, 55.637f, 57.400f, 58.049f, + 60.027f, 62.759f, 64.178f, 63.429f, 62.212f, 64.435f, 65.248f, 71.548f, 78.443f, + 78.413f, 71.729f, 64.837f, 81.327f, 81.823f, 79.809f, 77.093f, 72.988f, 64.406f, + 63.325f, 62.227f, 59.971f, 57.337f, 57.120f, 54.925f, 56.729f, 52.586f, 52.293f, + 55.623f, 44.975f, 44.268f, 44.558f, 44.053f, 43.485f, 43.862f, 42.363f, 44.069f, + 40.858f, 38.105f, 40.881f, 36.493f, 35.874f, 33.524f, 32.656f, 28.007f, 27.125f, + 25.232f, 22.181f, 21.304f, 19.332f, 17.630f, 16.977f, 16.208f, 15.809f, 14.782f, + 13.999f, 13.672f, 13.400f, 15.650f, 16.643f, 17.274f, 16.992f, 12.132f, -2.953f, + 13.590f, 25.003f, 21.549f, 20.172f, 21.001f, 20.277f, 19.053f, 19.310f, 18.430f, + 18.782f, 19.310f, 19.081f, 17.595f, 16.517f, 17.164f, 16.206f, 15.408f, 14.059f, + 11.874f, 10.468f, 7.218f, 4.385f, 5.277f, 4.652f, 3.570f, 2.234f, 1.498f, + 0.369f, 0.655f, 0.904f, 0.864f, 2.243f, 1.849f, 3.023f, 2.452f, 3.203f, + 1.950f, 3.066f, 4.260f, 7.082f, 7.093f, 7.737f, 9.660f, 13.129f, 13.256f, + 13.606f }, + { -29.534f, -30.394f, -31.344f, -32.998f, -35.311f, -36.381f, -37.474f, -39.902f, -43.795f, + -48.532f, -50.417f, -53.032f, -56.370f, -57.163f, -57.616f, -58.012f, -57.871f, -57.323f, + -56.770f, -56.504f, -55.436f, -53.456f, -51.989f, -48.729f, -45.677f, -45.432f, -41.785f, + -38.649f, -35.359f, -31.834f, -29.110f, -27.160f, -25.536f, -24.310f, -23.131f, -21.965f, + -21.495f, -20.159f, -19.168f, -18.277f, -16.904f, -15.099f, -15.038f, -14.318f, -13.194f, + -11.771f, -8.861f, -8.111f, -6.719f, -4.229f, -2.061f, 0.103f, 2.491f, 5.584f, + 9.663f, 17.015f, 22.309f, 26.023f, 29.709f, 32.306f, 33.923f, 34.792f, 38.060f, + 41.217f, 44.679f, 46.978f, 49.060f, 50.727f, 52.929f, 55.249f, 57.341f, 58.214f, + 60.055f, 62.576f, 63.902f, 61.965f, 62.609f, 64.334f, 65.556f, 74.733f, 76.643f, + 77.650f, 72.816f, 66.839f, 74.534f, 79.819f, 77.861f, 75.505f, 70.092f, 61.828f, + 61.307f, 59.178f, 57.008f, 55.745f, 54.986f, 53.599f, 53.349f, 52.298f, 49.915f, + 46.676f, 43.754f, 43.432f, 42.601f, 42.164f, 41.723f, 41.648f, 40.585f, 40.425f, + 42.708f, 37.783f, 37.463f, 33.707f, 34.043f, 30.912f, 29.701f, 27.108f, 26.002f, + 23.168f, 20.988f, 19.571f, 17.296f, 16.162f, 15.796f, 14.445f, 13.714f, 12.357f, + 11.705f, 11.448f, 11.682f, 13.378f, 14.530f, 15.728f, 16.401f, 14.661f, 2.040f, + 1.264f, 23.752f, 22.533f, 20.839f, 20.756f, 21.130f, 19.485f, 19.600f, 18.940f, + 19.176f, 19.600f, 18.824f, 17.249f, 16.724f, 17.571f, 16.689f, 15.637f, 14.215f, + 11.917f, 10.113f, 6.852f, 5.388f, 5.549f, 4.667f, 3.567f, 2.382f, 1.407f, + 0.368f, 0.934f, 0.967f, 0.913f, 2.420f, 1.972f, 3.226f, 2.438f, 3.179f, + 1.952f, 3.025f, 4.242f, 6.956f, 6.914f, 7.520f, 9.266f, 12.831f, 13.243f, + 13.606f }, + { -29.534f, -30.395f, -31.365f, -32.990f, -35.455f, -36.586f, -37.055f, -39.441f, -43.718f, + -49.293f, -50.747f, -53.104f, -56.042f, -56.766f, -57.479f, -58.163f, -58.088f, -57.464f, + -56.676f, -56.626f, -56.166f, -54.280f, -52.729f, -48.704f, -47.382f, -44.984f, -41.520f, + -38.397f, -34.537f, -31.317f, -29.148f, -27.293f, -26.181f, -25.052f, -23.811f, -22.421f, + -21.053f, -19.879f, -18.837f, -17.904f, -16.827f, -16.147f, -14.954f, -14.126f, -12.627f, + -11.113f, -9.269f, -7.501f, -5.929f, -3.211f, -0.672f, 1.823f, 4.141f, 6.553f, + 9.137f, 11.270f, 17.846f, 25.087f, 29.164f, 32.950f, 35.543f, 37.332f, 40.406f, + 43.171f, 45.007f, 46.761f, 48.667f, 50.934f, 53.755f, 56.034f, 57.519f, 59.017f, + 59.729f, 62.952f, 63.127f, 61.397f, 62.969f, 64.227f, 65.824f, 73.960f, 74.346f, + 77.115f, 68.732f, 69.737f, 60.484f, 74.007f, 74.172f, 71.220f, 66.444f, 60.487f, + 59.258f, 57.633f, 55.761f, 54.288f, 53.320f, 53.061f, 53.088f, 55.287f, 52.482f, + 51.185f, 43.767f, 41.915f, 41.395f, 40.626f, 39.626f, 40.090f, 41.066f, 41.043f, + 37.612f, 36.628f, 35.701f, 32.784f, 32.218f, 29.256f, 27.976f, 25.891f, 24.300f, + 22.249f, 18.360f, 17.353f, 15.546f, 14.256f, 13.163f, 12.752f, 11.120f, 9.939f, + 10.088f, 9.817f, 10.165f, 11.420f, 12.275f, 13.696f, 15.053f, 14.407f, 8.598f, + -3.962f, 17.184f, 24.712f, 21.171f, 21.001f, 21.200f, 20.374f, 20.151f, 19.769f, + 19.685f, 19.823f, 18.395f, 16.526f, 16.309f, 17.339f, 16.828f, 16.014f, 14.389f, + 11.642f, 9.552f, 7.702f, 6.608f, 5.742f, 4.745f, 3.319f, 2.318f, 1.119f, + 0.739f, 1.206f, 1.298f, 1.207f, 2.447f, 2.172f, 2.952f, 2.565f, 2.912f, + 1.887f, 2.863f, 4.331f, 6.853f, 6.815f, 7.394f, 8.944f, 12.533f, 13.228f, + 13.606f }, + { -29.534f, -30.394f, -31.382f, -32.974f, -35.610f, -36.832f, -36.571f, -38.774f, -43.372f, + -49.722f, -50.930f, -53.064f, -55.638f, -56.178f, -57.066f, -58.194f, -58.179f, -57.740f, + -57.156f, -57.164f, -56.660f, -54.170f, -52.627f, -48.987f, -48.622f, -44.251f, -41.112f, + -37.632f, -34.150f, -31.512f, -29.671f, -28.442f, -26.879f, -25.342f, -23.925f, -22.469f, + -20.976f, -20.232f, -18.537f, -17.736f, -16.768f, -16.152f, -14.766f, -13.501f, -11.878f, + -10.654f, -8.881f, -6.904f, -4.811f, -1.846f, 0.584f, 2.886f, 5.426f, 8.001f, + 10.500f, 13.288f, 15.355f, 20.192f, 27.127f, 30.590f, 34.641f, 37.059f, 39.827f, + 42.639f, 44.581f, 46.816f, 47.857f, 50.240f, 53.183f, 55.582f, 56.362f, 57.365f, + 59.320f, 61.311f, 60.686f, 61.770f, 63.384f, 64.090f, 66.448f, 73.717f, 73.064f, + 73.608f, 70.623f, 68.387f, 57.041f, 57.793f, 65.784f, 67.300f, 63.264f, 59.829f, + 58.042f, 56.552f, 56.291f, 54.342f, 52.939f, 52.453f, 51.590f, 51.954f, 48.978f, + 45.814f, 42.294f, 41.176f, 39.775f, 39.453f, 38.428f, 38.182f, 36.715f, 36.857f, + 36.275f, 35.401f, 32.993f, 32.574f, 29.583f, 31.460f, 24.881f, 24.480f, 21.805f, + 18.146f, 17.478f, 15.607f, 13.995f, 12.976f, 12.113f, 10.497f, 8.780f, 8.229f, + 8.067f, 7.842f, 8.406f, 9.140f, 10.125f, 11.617f, 12.977f, 13.504f, 11.454f, + 2.664f, 6.863f, 23.648f, 23.905f, 21.689f, 21.627f, 21.637f, 20.960f, 20.570f, + 20.067f, 19.623f, 17.846f, 16.490f, 16.223f, 16.875f, 16.739f, 16.317f, 14.033f, + 11.388f, 9.600f, 8.092f, 6.938f, 5.805f, 4.815f, 3.250f, 2.184f, 1.140f, + 1.212f, 1.332f, 1.958f, 1.454f, 2.279f, 2.366f, 2.508f, 2.745f, 2.483f, + 1.798f, 2.616f, 4.430f, 6.730f, 6.769f, 7.339f, 8.700f, 12.242f, 13.211f, + 13.606f }, + { -29.534f, -30.392f, -31.397f, -32.954f, -35.767f, -37.060f, -36.065f, -37.978f, -42.687f, + -49.419f, -50.859f, -52.867f, -55.250f, -55.573f, -56.490f, -58.190f, -58.498f, -58.103f, + -57.807f, -57.766f, -56.254f, -53.356f, -51.760f, -48.913f, -47.772f, -43.792f, -40.613f, + -37.207f, -34.779f, -32.216f, -30.815f, -28.904f, -26.912f, -25.423f, -24.065f, -22.391f, + -21.455f, -19.819f, -19.119f, -17.623f, -17.073f, -15.955f, -14.968f, -13.030f, -11.506f, + -9.699f, -8.198f, -6.422f, -3.933f, -1.480f, 1.424f, 4.182f, 6.456f, 9.118f, + 11.739f, 14.455f, 17.087f, 19.427f, 22.107f, 25.284f, 29.681f, 34.338f, 37.915f, + 38.816f, 41.829f, 42.892f, 44.564f, 50.385f, 51.909f, 52.765f, 54.242f, 56.859f, + 59.387f, 61.252f, 61.415f, 62.294f, 63.552f, 64.741f, 66.671f, 71.572f, 72.596f, + 73.430f, 69.428f, 60.354f, 56.169f, 59.515f, 63.466f, 61.892f, 61.641f, 58.955f, + 58.737f, 57.493f, 56.181f, 55.420f, 53.592f, 53.648f, 52.024f, 49.894f, 47.851f, + 42.841f, 41.319f, 40.185f, 38.818f, 37.737f, 36.860f, 36.300f, 34.886f, 37.228f, + 33.466f, 33.054f, 31.367f, 28.862f, 27.028f, 25.091f, 24.308f, 21.127f, 19.027f, + 16.216f, 15.066f, 13.008f, 12.329f, 11.083f, 10.854f, 8.889f, 7.339f, 6.403f, + 5.801f, 5.991f, 6.299f, 7.086f, 8.137f, 9.727f, 11.112f, 12.341f, 12.233f, + 9.904f, 3.587f, 16.063f, 24.990f, 24.642f, 22.214f, 22.687f, 22.057f, 21.282f, + 20.494f, 19.502f, 18.303f, 17.045f, 16.835f, 16.330f, 16.598f, 16.552f, 13.956f, + 12.087f, 10.032f, 8.176f, 7.260f, 5.794f, 4.856f, 3.481f, 2.219f, 1.381f, + 1.358f, 1.475f, 2.585f, 1.425f, 2.101f, 2.463f, 2.342f, 2.943f, 2.033f, + 1.740f, 2.364f, 4.473f, 6.556f, 6.741f, 7.333f, 8.537f, 11.963f, 13.194f, + 13.606f }, + { -29.534f, -30.389f, -31.408f, -32.932f, -35.912f, -37.208f, -35.579f, -37.182f, -41.772f, + -48.318f, -50.631f, -52.505f, -54.785f, -55.166f, -56.252f, -58.147f, -59.067f, -58.404f, + -57.478f, -57.162f, -55.623f, -53.494f, -51.325f, -48.472f, -47.110f, -43.714f, -40.504f, + -37.825f, -35.076f, -32.830f, -30.599f, -28.857f, -27.569f, -25.995f, -24.467f, -23.101f, + -21.539f, -19.969f, -19.148f, -17.653f, -16.905f, -15.865f, -14.903f, -12.999f, -11.024f, + -9.272f, -7.395f, -5.483f, -3.265f, -0.666f, 2.019f, 4.634f, 7.433f, 10.294f, + 13.044f, 15.201f, 17.792f, 20.522f, 23.418f, 26.153f, 29.254f, 31.154f, 35.362f, + 37.144f, 39.726f, 43.125f, 44.463f, 48.001f, 50.751f, 52.141f, 54.883f, 57.380f, + 60.218f, 61.200f, 61.294f, 62.658f, 64.575f, 66.960f, 64.557f, 70.132f, 71.217f, + 71.217f, 68.921f, 63.079f, 71.228f, 63.989f, 63.228f, 63.412f, 61.503f, 59.566f, + 59.055f, 57.469f, 56.271f, 54.868f, 54.051f, 51.676f, 50.077f, 50.381f, 48.956f, + 43.238f, 41.325f, 39.119f, 37.766f, 36.131f, 34.170f, 34.603f, 36.304f, 32.430f, + 32.110f, 31.105f, 28.303f, 29.737f, 25.505f, 24.408f, 21.467f, 19.111f, 16.988f, + 15.327f, 12.883f, 11.180f, 10.753f, 10.036f, 9.101f, 7.141f, 5.401f, 5.265f, + 4.649f, 4.140f, 4.480f, 5.321f, 6.318f, 7.467f, 9.149f, 10.850f, 11.414f, + 11.631f, 10.242f, 4.343f, 15.253f, 24.598f, 23.801f, 22.672f, 23.233f, 22.708f, + 21.862f, 20.932f, 19.962f, 18.131f, 16.423f, 16.399f, 16.030f, 16.190f, 14.672f, + 12.720f, 10.565f, 8.414f, 7.138f, 5.877f, 5.002f, 3.706f, 2.331f, 1.519f, + 1.249f, 1.873f, 2.883f, 1.216f, 2.076f, 2.424f, 2.599f, 3.174f, 1.680f, + 1.736f, 2.187f, 4.437f, 6.318f, 6.700f, 7.349f, 8.451f, 11.702f, 13.175f, + 13.606f }, + { -29.534f, -30.385f, -31.415f, -32.910f, -36.034f, -37.223f, -35.143f, -36.538f, -40.896f, + -46.791f, -50.555f, -52.118f, -54.010f, -54.806f, -56.516f, -58.164f, -59.280f, -58.590f, + -57.002f, -56.657f, -55.562f, -53.495f, -50.855f, -48.758f, -47.182f, -43.596f, -40.966f, + -37.889f, -34.775f, -32.778f, -30.728f, -29.161f, -27.590f, -26.179f, -24.533f, -23.115f, + -22.365f, -20.197f, -18.778f, -17.631f, -16.710f, -15.788f, -14.516f, -12.718f, -10.742f, + -8.941f, -7.245f, -4.754f, -2.496f, 0.079f, 2.774f, 5.304f, 8.266f, 12.216f, + 13.809f, 16.270f, 18.723f, 24.360f, 23.688f, 28.792f, 29.404f, 32.841f, 35.947f, + 36.807f, 39.574f, 41.463f, 45.821f, 48.459f, 51.076f, 53.862f, 55.290f, 57.501f, + 59.940f, 61.477f, 61.505f, 63.263f, 66.109f, 68.383f, 67.145f, 65.433f, 69.797f, + 70.327f, 67.709f, 69.853f, 64.831f, 65.911f, 64.504f, 62.746f, 61.083f, 59.227f, + 58.609f, 56.769f, 54.858f, 54.431f, 52.231f, 51.181f, 49.422f, 48.415f, 45.549f, + 42.550f, 40.061f, 37.306f, 36.089f, 33.783f, 36.494f, 30.606f, 30.915f, 31.134f, + 30.479f, 28.554f, 27.953f, 25.702f, 23.242f, 22.647f, 19.893f, 16.735f, 14.395f, + 13.285f, 11.049f, 9.716f, 8.923f, 8.763f, 7.561f, 5.713f, 4.199f, 4.093f, + 3.303f, 2.369f, 2.623f, 3.684f, 4.669f, 5.614f, 6.704f, 8.674f, 9.848f, + 11.402f, 12.119f, 9.694f, 2.410f, 12.253f, 23.850f, 24.505f, 23.835f, 23.454f, + 22.146f, 21.212f, 20.817f, 19.119f, 17.085f, 16.167f, 14.926f, 14.823f, 14.479f, + 12.798f, 11.023f, 8.861f, 6.936f, 6.019f, 5.102f, 3.804f, 2.421f, 1.647f, + 1.259f, 2.296f, 2.829f, 1.092f, 2.129f, 2.365f, 3.036f, 3.433f, 1.450f, + 1.756f, 2.127f, 4.341f, 6.029f, 6.621f, 7.365f, 8.435f, 11.464f, 13.156f, + 13.606f }, + { -29.534f, -30.380f, -31.418f, -32.891f, -36.120f, -37.079f, -34.765f, -36.177f, -40.384f, + -45.493f, -50.965f, -52.060f, -52.914f, -54.095f, -56.685f, -58.421f, -58.708f, -58.441f, + -57.093f, -56.969f, -55.759f, -53.147f, -50.545f, -49.749f, -46.817f, -43.892f, -41.256f, + -37.409f, -34.983f, -32.927f, -31.111f, -30.001f, -32.141f, -30.436f, -25.220f, -23.176f, + -21.904f, -20.177f, -18.158f, -17.521f, -16.514f, -15.482f, -13.859f, -12.131f, -10.483f, + -8.318f, -6.403f, -4.435f, -1.993f, 0.827f, 3.262f, 6.108f, 8.715f, 11.343f, + 14.024f, 16.834f, 19.161f, 21.978f, 24.825f, 27.699f, 29.943f, 32.126f, 34.854f, + 37.152f, 40.198f, 43.441f, 46.622f, 48.959f, 51.893f, 53.633f, 54.965f, 57.306f, + 58.911f, 60.275f, 62.753f, 63.161f, 64.713f, 67.655f, 68.195f, 69.023f, 67.369f, + 68.518f, 69.513f, 67.249f, 62.507f, 65.782f, 63.718f, 61.044f, 59.583f, 57.938f, + 56.400f, 54.978f, 54.078f, 52.971f, 52.570f, 50.659f, 50.214f, 45.774f, 44.293f, + 41.693f, 39.242f, 38.501f, 34.486f, 34.831f, 33.810f, 30.169f, 29.643f, 29.924f, + 28.384f, 26.191f, 26.807f, 25.238f, 21.873f, 20.575f, 19.196f, 15.106f, 12.612f, + 11.141f, 9.342f, 8.517f, 7.535f, 7.469f, 6.785f, 5.133f, 3.661f, 2.623f, + 2.109f, 1.026f, 0.842f, 1.993f, 2.876f, 3.884f, 4.802f, 6.917f, 8.227f, + 9.843f, 12.158f, 11.979f, 6.704f, 1.457f, 15.605f, 25.220f, 24.414f, 24.091f, + 24.297f, 24.025f, 22.091f, 20.424f, 18.566f, 15.889f, 14.373f, 13.774f, 13.624f, + 13.186f, 11.486f, 9.082f, 7.419f, 6.375f, 5.232f, 3.914f, 2.616f, 1.817f, + 1.446f, 2.187f, 2.422f, 1.164f, 2.135f, 2.493f, 3.325f, 3.632f, 1.282f, + 1.741f, 2.178f, 4.222f, 5.718f, 6.496f, 7.363f, 8.479f, 11.250f, 13.136f, + 13.606f }, + { -29.534f, -30.373f, -31.415f, -32.875f, -36.164f, -36.784f, -34.436f, -36.167f, -40.465f, + -45.019f, -51.967f, -52.719f, -51.969f, -53.038f, -56.070f, -58.598f, -57.741f, -57.610f, + -56.191f, -55.838f, -55.464f, -54.101f, -51.482f, -50.460f, -46.856f, -44.238f, -41.019f, + -37.770f, -35.434f, -33.448f, -31.242f, -33.940f, -31.571f, -29.604f, -26.184f, -21.567f, + -21.848f, -20.032f, -18.185f, -16.673f, -15.790f, -14.842f, -13.539f, -11.542f, -10.114f, + -8.189f, -5.674f, -3.962f, -1.267f, 1.049f, 3.825f, 6.553f, 9.158f, 11.876f, + 14.599f, 17.283f, 19.891f, 23.538f, 25.827f, 28.693f, 32.341f, 33.831f, 36.455f, + 38.366f, 40.903f, 44.192f, 46.047f, 48.139f, 51.271f, 54.063f, 55.727f, 56.055f, + 57.219f, 60.149f, 62.188f, 63.914f, 64.234f, 65.787f, 66.912f, 67.994f, 65.925f, + 66.950f, 65.470f, 62.123f, 60.192f, 62.878f, 61.193f, 58.578f, 56.886f, 55.530f, + 54.109f, 53.271f, 51.907f, 50.270f, 49.404f, 49.064f, 48.374f, 49.059f, 42.336f, + 39.605f, 37.929f, 35.571f, 33.493f, 32.375f, 31.406f, 29.456f, 29.188f, 28.197f, + 26.316f, 25.330f, 23.815f, 23.286f, 19.622f, 19.070f, 16.134f, 13.535f, 11.440f, + 9.553f, 8.075f, 7.217f, 5.975f, 5.594f, 6.042f, 4.858f, 2.870f, 1.015f, + 1.698f, 0.996f, -0.436f, 0.182f, 1.323f, 2.376f, 3.366f, 4.715f, 6.261f, + 7.985f, 10.482f, 11.827f, 10.261f, 3.723f, 5.351f, 20.060f, 23.858f, 24.217f, + 25.086f, 24.668f, 23.983f, 20.896f, 18.698f, 15.969f, 14.069f, 12.993f, 12.953f, + 13.373f, 11.907f, 9.289f, 7.793f, 6.875f, 5.463f, 4.093f, 2.928f, 1.890f, + 1.701f, 1.559f, 1.696f, 1.338f, 2.191f, 2.846f, 3.380f, 3.631f, 1.094f, + 1.653f, 2.304f, 4.114f, 5.422f, 6.330f, 7.336f, 8.571f, 11.065f, 13.115f, + 13.606f }, + { -29.534f, -30.366f, -31.407f, -32.865f, -36.158f, -36.386f, -34.140f, -36.494f, -41.163f, + -45.584f, -53.293f, -54.157f, -51.843f, -52.315f, -54.920f, -57.818f, -56.789f, -56.186f, + -54.056f, -53.924f, -55.273f, -55.200f, -52.803f, -50.372f, -47.308f, -44.329f, -41.057f, + -38.355f, -35.865f, -34.097f, -33.048f, -33.619f, -28.302f, -27.000f, -26.693f, -23.238f, + -19.480f, -19.548f, -17.806f, -15.911f, -14.906f, -13.896f, -12.802f, -10.996f, -9.314f, + -7.628f, -5.834f, -3.296f, -0.569f, 1.610f, 4.112f, 6.774f, 9.144f, 11.959f, + 14.742f, 17.192f, 20.128f, 23.780f, 28.395f, 30.628f, 32.798f, 35.432f, 36.490f, + 40.566f, 41.426f, 44.493f, 46.941f, 49.883f, 53.501f, 57.243f, 57.629f, 58.414f, + 59.120f, 59.546f, 61.939f, 63.210f, 64.470f, 65.636f, 63.435f, 64.705f, 62.998f, + 63.066f, 63.346f, 58.720f, 60.049f, 61.145f, 58.848f, 56.159f, 54.337f, 53.078f, + 51.697f, 50.421f, 50.306f, 49.486f, 48.206f, 46.597f, 44.950f, 43.456f, 41.055f, + 37.808f, 36.027f, 34.379f, 32.927f, 31.304f, 29.887f, 29.449f, 27.642f, 26.991f, + 25.122f, 22.677f, 20.932f, 19.436f, 19.187f, 15.306f, 15.933f, 12.511f, 10.190f, + 8.235f, 6.214f, 4.582f, 4.257f, 4.091f, 3.908f, 2.947f, 1.699f, -0.529f, + 0.221f, -0.357f, -1.756f, -1.279f, -0.403f, 0.502f, 1.610f, 3.090f, 4.397f, + 6.394f, 8.696f, 10.480f, 10.403f, 7.995f, 2.317f, 5.983f, 12.117f, 20.759f, + 23.575f, 22.948f, 22.631f, 20.763f, 18.028f, 16.520f, 13.743f, 13.193f, 12.618f, + 13.050f, 11.940f, 9.572f, 8.089f, 7.083f, 5.681f, 4.327f, 3.153f, 1.983f, + 2.012f, 1.166f, 0.996f, 1.493f, 2.476f, 3.189f, 3.348f, 3.340f, 0.862f, + 1.506f, 2.460f, 4.035f, 5.176f, 6.141f, 7.284f, 8.698f, 10.910f, 13.095f, + 13.606f }, + { -29.534f, -30.357f, -31.393f, -32.861f, -36.103f, -35.963f, -33.875f, -37.066f, -42.293f, + -46.917f, -54.414f, -55.885f, -52.740f, -52.611f, -54.367f, -55.835f, -55.334f, -54.700f, + -53.223f, -54.730f, -56.242f, -55.009f, -53.372f, -50.622f, -47.588f, -44.371f, -41.459f, + -38.904f, -36.601f, -35.019f, -34.958f, -33.336f, -30.922f, -29.576f, -27.558f, -26.434f, + -22.697f, -17.440f, -15.322f, -15.293f, -14.001f, -12.450f, -11.412f, -10.695f, -8.279f, + -6.651f, -5.067f, -2.884f, -0.101f, 2.543f, 4.853f, 7.316f, 10.206f, 12.625f, + 15.745f, 19.417f, 23.300f, 26.629f, 29.197f, 31.868f, 33.445f, 35.484f, 37.620f, + 40.506f, 43.287f, 47.970f, 47.780f, 50.503f, 52.215f, 53.925f, 56.661f, 57.835f, + 58.489f, 59.417f, 61.177f, 63.614f, 64.723f, 63.638f, 66.799f, 64.203f, 63.230f, + 62.308f, 61.454f, 56.387f, 59.944f, 59.360f, 56.229f, 53.778f, 51.263f, 50.288f, + 49.257f, 48.401f, 47.325f, 47.343f, 46.944f, 44.746f, 42.769f, 41.215f, 38.556f, + 35.357f, 34.926f, 33.622f, 31.551f, 29.980f, 28.835f, 28.586f, 28.153f, 25.818f, + 24.110f, 22.119f, 21.635f, 19.278f, 16.527f, 14.386f, 12.652f, 10.128f, 8.323f, + 6.872f, 4.894f, 3.896f, 3.289f, 2.775f, 1.337f, 0.332f, -0.140f, -1.611f, + -2.074f, -2.303f, -3.215f, -2.848f, -1.835f, -0.931f, -0.109f, 1.453f, 3.316f, + 4.658f, 6.945f, 8.835f, 9.389f, 9.176f, 6.275f, 0.739f, 1.903f, 16.923f, + 21.529f, 22.356f, 20.965f, 20.258f, 18.272f, 16.797f, 14.436f, 13.652f, 12.705f, + 12.651f, 12.208f, 9.546f, 8.730f, 7.138f, 5.855f, 4.505f, 3.246f, 2.242f, + 2.148f, 1.388f, 0.735f, 1.549f, 2.886f, 3.279f, 3.367f, 2.810f, 0.634f, + 1.369f, 2.615f, 3.979f, 4.997f, 5.956f, 7.214f, 8.846f, 10.784f, 13.075f, + 13.606f }, + { -29.534f, -30.348f, -31.372f, -32.862f, -35.999f, -35.611f, -33.663f, -37.750f, -43.548f, + -48.430f, -54.856f, -57.079f, -54.074f, -53.765f, -55.172f, -53.935f, -52.712f, -53.514f, + -54.678f, -57.400f, -57.343f, -54.911f, -53.813f, -51.386f, -47.612f, -44.408f, -42.130f, + -39.621f, -37.277f, -35.877f, -35.873f, -34.481f, -31.817f, -29.475f, -28.402f, -26.157f, + -22.138f, -18.966f, -15.695f, -13.716f, -13.060f, -11.663f, -10.345f, -8.849f, -7.556f, + -5.851f, -4.131f, -1.543f, 0.857f, 3.649f, 5.872f, 8.242f, 11.018f, 14.008f, + 17.856f, 20.969f, 24.326f, 27.644f, 30.318f, 32.741f, 34.959f, 37.011f, 39.336f, + 42.083f, 44.844f, 47.006f, 49.222f, 51.515f, 53.604f, 57.093f, 57.682f, 56.989f, + 57.862f, 58.446f, 60.561f, 61.765f, 64.493f, 65.238f, 64.262f, 58.105f, 62.729f, + 61.538f, 56.951f, 58.723f, 58.325f, 56.819f, 54.136f, 51.565f, 49.217f, 47.916f, + 47.442f, 46.375f, 45.855f, 45.727f, 44.656f, 42.734f, 41.428f, 38.735f, 37.454f, + 34.858f, 35.562f, 33.149f, 30.117f, 29.503f, 29.816f, 27.750f, 24.575f, 24.291f, + 22.413f, 21.019f, 20.914f, 18.007f, 16.032f, 13.382f, 12.250f, 8.931f, 6.743f, + 4.913f, 3.906f, 3.450f, 1.641f, 0.527f, -0.585f, -1.672f, -2.072f, -2.716f, + -3.837f, -3.629f, -3.589f, -3.759f, -3.189f, -2.615f, -1.415f, 0.047f, 1.516f, + 3.106f, 4.887f, 6.896f, 8.226f, 8.798f, 8.420f, 4.680f, -1.056f, 5.061f, + 14.453f, 20.307f, 19.388f, 19.382f, 18.755f, 17.208f, 15.493f, 13.891f, 13.234f, + 12.295f, 12.205f, 9.655f, 9.330f, 7.429f, 5.947f, 4.749f, 3.453f, 2.584f, + 1.939f, 1.665f, 0.846f, 1.482f, 3.084f, 3.189f, 3.404f, 2.227f, 0.483f, + 1.313f, 2.758f, 3.931f, 4.891f, 5.803f, 7.142f, 9.004f, 10.688f, 13.055f, + 13.606f }, + { -29.534f, -30.338f, -31.345f, -32.868f, -35.851f, -35.419f, -33.558f, -38.416f, -44.642f, + -49.552f, -54.486f, -57.144f, -54.922f, -54.909f, -56.810f, -53.752f, -49.664f, -52.490f, + -56.444f, -58.865f, -57.389f, -55.865f, -54.629f, -51.030f, -47.503f, -44.965f, -42.667f, + -40.342f, -37.988f, -36.849f, -36.922f, -35.678f, -33.907f, -31.133f, -29.485f, -26.995f, + -22.753f, -18.953f, -17.192f, -11.941f, -12.770f, -10.715f, -8.857f, -7.163f, -6.503f, + -4.355f, -2.927f, -0.396f, 2.047f, 4.655f, 7.285f, 9.434f, 12.266f, 15.687f, + 18.696f, 22.439f, 25.604f, 28.518f, 30.912f, 33.181f, 35.997f, 38.445f, 40.636f, + 43.424f, 46.106f, 48.275f, 50.605f, 52.028f, 53.958f, 56.855f, 55.889f, 57.415f, + 58.567f, 60.000f, 60.433f, 61.119f, 63.629f, 63.806f, 61.736f, 62.149f, 58.420f, + 54.496f, 58.690f, 58.330f, 55.823f, 54.396f, 51.743f, 49.651f, 47.911f, 45.590f, + 44.768f, 44.695f, 44.257f, 42.932f, 41.442f, 40.009f, 38.333f, 37.218f, 35.266f, + 33.924f, 33.095f, 31.965f, 30.952f, 28.548f, 26.921f, 25.136f, 23.705f, 22.765f, + 21.452f, 20.185f, 19.446f, 15.989f, 15.458f, 11.841f, 10.729f, 8.628f, 6.273f, + 4.035f, 3.153f, 2.258f, -0.194f, -1.359f, -2.533f, -4.125f, -4.252f, -4.747f, + -4.997f, -4.707f, -4.006f, -4.622f, -4.480f, -3.702f, -2.788f, -1.774f, -0.331f, + 1.570f, 3.087f, 4.641f, 6.461f, 7.830f, 8.490f, 7.407f, 2.916f, -2.507f, + 4.631f, 14.103f, 14.594f, 17.662f, 16.830f, 16.276f, 14.387f, 13.644f, 12.968f, + 11.797f, 11.853f, 10.450f, 9.518f, 7.553f, 6.093f, 5.309f, 3.848f, 3.048f, + 1.893f, 1.521f, 0.941f, 1.410f, 2.932f, 3.213f, 3.355f, 1.796f, 0.438f, + 1.374f, 2.890f, 3.875f, 4.846f, 5.709f, 7.085f, 9.161f, 10.621f, 13.036f, + 13.606f }, + { -29.534f, -30.326f, -31.310f, -32.876f, -35.664f, -35.449f, -33.638f, -38.980f, -45.421f, + -50.013f, -53.574f, -56.148f, -54.815f, -55.423f, -58.057f, -55.297f, -48.159f, -51.383f, + -56.714f, -59.410f, -57.280f, -57.150f, -55.027f, -50.273f, -47.924f, -45.726f, -43.199f, + -41.028f, -38.736f, -38.053f, -37.988f, -36.857f, -34.959f, -32.781f, -30.848f, -27.200f, + -23.191f, -20.179f, -16.828f, -12.132f, -10.967f, -10.286f, -8.279f, -6.688f, -4.771f, + -3.466f, -1.477f, 0.639f, 3.421f, 5.616f, 8.382f, 11.007f, 13.432f, 17.165f, + 20.380f, 24.124f, 27.171f, 29.706f, 31.506f, 33.864f, 36.334f, 38.779f, 41.449f, + 44.303f, 46.676f, 48.548f, 50.047f, 52.201f, 53.943f, 54.270f, 55.718f, 59.003f, + 61.259f, 58.712f, 60.077f, 62.237f, 62.676f, 62.654f, 60.932f, 55.653f, 59.676f, + 59.604f, 58.015f, 55.364f, 54.283f, 51.615f, 49.668f, 47.709f, 45.912f, 44.109f, + 43.543f, 43.089f, 42.095f, 41.017f, 40.576f, 40.224f, 36.455f, 35.001f, 32.791f, + 32.379f, 32.254f, 28.999f, 27.742f, 27.906f, 25.901f, 25.695f, 25.701f, 23.676f, + 20.953f, 19.013f, 18.376f, 16.409f, 12.500f, 10.593f, 8.880f, 7.050f, 4.824f, + 2.531f, 1.442f, 0.561f, -1.407f, -2.854f, -4.313f, -5.996f, -6.478f, -6.479f, + -6.247f, -5.678f, -5.200f, -5.722f, -5.637f, -5.093f, -4.291f, -3.243f, -1.452f, + -0.288f, 1.149f, 2.584f, 4.508f, 6.818f, 8.125f, 8.014f, 6.642f, 1.175f, + -0.653f, 0.673f, 10.701f, 14.537f, 15.222f, 14.494f, 13.070f, 12.168f, 11.723f, + 11.470f, 11.674f, 11.004f, 9.522f, 7.534f, 6.518f, 5.846f, 4.146f, 3.534f, + 2.396f, 1.229f, 0.919f, 1.536f, 2.666f, 3.428f, 3.223f, 1.595f, 0.459f, + 1.529f, 3.013f, 3.810f, 4.846f, 5.691f, 7.059f, 9.309f, 10.580f, 13.018f, + 13.606f }, + { -29.534f, -30.314f, -31.268f, -32.882f, -35.447f, -35.719f, -33.982f, -39.424f, -45.896f, + -49.921f, -52.575f, -54.725f, -54.074f, -55.441f, -58.299f, -56.984f, -49.490f, -50.733f, + -55.586f, -59.595f, -57.465f, -58.005f, -54.666f, -50.425f, -48.538f, -46.289f, -44.073f, + -41.701f, -39.373f, -39.072f, -38.790f, -37.882f, -35.976f, -33.981f, -31.979f, -27.624f, + -23.737f, -20.792f, -17.826f, -13.829f, -9.566f, -10.999f, -10.592f, -7.010f, -4.564f, + -2.516f, -0.871f, 2.018f, 4.372f, 7.108f, 10.101f, 13.024f, 16.701f, 19.252f, + 22.157f, 24.951f, 27.255f, 29.359f, 31.049f, 33.534f, 35.717f, 38.295f, 41.172f, + 44.003f, 46.268f, 47.891f, 49.735f, 51.825f, 52.540f, 54.235f, 60.094f, 59.103f, + 59.724f, 59.826f, 58.613f, 63.012f, 61.564f, 61.938f, 59.761f, 55.246f, 59.820f, + 58.921f, 56.006f, 53.166f, 51.739f, 49.576f, 47.803f, 44.768f, 43.996f, 42.369f, + 42.194f, 41.613f, 40.413f, 39.540f, 37.983f, 36.058f, 34.913f, 33.076f, 31.279f, + 30.330f, 29.821f, 29.109f, 27.292f, 25.940f, 27.293f, 23.656f, 22.724f, 21.474f, + 20.105f, 17.275f, 15.180f, 13.812f, 11.391f, 8.980f, 6.903f, 4.854f, 2.745f, + 1.471f, 0.086f, -1.058f, -2.523f, -3.886f, -5.631f, -7.312f, -7.896f, -8.195f, + -7.340f, -7.332f, -7.305f, -7.373f, -6.774f, -6.154f, -5.474f, -4.561f, -2.951f, + -1.891f, -0.617f, 1.141f, 3.239f, 5.244f, 6.824f, 7.965f, 8.441f, 8.441f, + 3.757f, -0.835f, 6.602f, 10.842f, 12.567f, 14.117f, 13.201f, 11.329f, 11.001f, + 11.512f, 11.224f, 10.875f, 9.785f, 7.870f, 7.067f, 6.110f, 4.261f, 3.553f, + 2.826f, 1.103f, 0.981f, 1.841f, 2.560f, 3.572f, 3.157f, 1.513f, 0.496f, + 1.723f, 3.123f, 3.751f, 4.873f, 5.753f, 7.078f, 9.442f, 10.564f, 13.000f, + 13.606f }, + { -29.534f, -30.302f, -31.219f, -32.884f, -35.206f, -36.190f, -34.645f, -39.790f, -46.182f, + -49.609f, -51.834f, -53.557f, -53.389f, -55.379f, -57.897f, -57.622f, -52.935f, -51.899f, + -54.655f, -58.693f, -57.451f, -58.172f, -54.550f, -51.029f, -48.875f, -46.864f, -44.643f, + -42.441f, -40.158f, -39.703f, -40.129f, -38.905f, -36.693f, -34.898f, -31.598f, -26.885f, + -22.069f, -20.391f, -17.854f, -14.101f, -12.317f, -7.869f, -9.587f, -7.730f, -5.307f, + -2.834f, 0.164f, 2.571f, 5.651f, 8.193f, 11.751f, 15.550f, 18.448f, 21.176f, + 24.356f, 26.120f, 27.202f, 30.380f, 31.642f, 33.533f, 35.984f, 38.093f, 40.242f, + 42.886f, 45.836f, 47.574f, 50.072f, 52.102f, 52.615f, 62.224f, 58.949f, 60.794f, + 59.835f, 60.199f, 61.077f, 59.022f, 61.718f, 59.468f, 55.787f, 52.449f, 58.238f, + 56.327f, 53.530f, 51.794f, 49.155f, 47.433f, 45.390f, 43.547f, 42.132f, 41.082f, + 40.622f, 40.267f, 39.129f, 37.703f, 36.019f, 34.329f, 32.406f, 31.521f, 29.834f, + 29.078f, 27.518f, 27.198f, 29.651f, 25.760f, 23.665f, 22.636f, 21.505f, 20.342f, + 18.618f, 18.989f, 14.335f, 11.993f, 10.332f, 7.906f, 4.888f, 2.838f, 1.787f, + 0.111f, -0.946f, -2.591f, -3.688f, -5.058f, -6.646f, -8.173f, -8.498f, -8.950f, + -8.417f, -8.423f, -8.745f, -8.512f, -8.340f, -7.031f, -6.083f, -5.326f, -4.145f, + -3.432f, -1.520f, 0.065f, 1.918f, 4.005f, 5.469f, 7.621f, 8.843f, 9.603f, + 5.686f, 0.615f, 8.388f, 10.482f, 10.274f, 11.994f, 12.543f, 11.887f, 11.038f, + 11.509f, 11.129f, 10.821f, 9.818f, 8.155f, 7.427f, 6.364f, 4.262f, 3.118f, + 2.646f, 1.089f, 1.186f, 2.032f, 2.608f, 3.446f, 3.291f, 1.339f, 0.547f, + 1.907f, 3.210f, 3.719f, 4.916f, 5.889f, 7.150f, 9.557f, 10.568f, 12.983f, + 13.606f }, + { -29.534f, -30.289f, -31.161f, -32.877f, -34.947f, -36.773f, -35.623f, -40.155f, -46.410f, + -49.397f, -51.417f, -52.918f, -53.178f, -55.328f, -57.444f, -57.538f, -56.413f, -55.077f, + -55.237f, -57.811f, -57.780f, -57.935f, -54.862f, -52.025f, -49.396f, -47.483f, -45.338f, + -42.941f, -41.097f, -41.055f, -41.208f, -39.762f, -37.955f, -35.595f, -30.845f, -25.558f, + -22.329f, -18.562f, -15.449f, -11.420f, -9.740f, -8.838f, -6.133f, -3.660f, -2.462f, + -5.782f, 1.381f, 4.347f, 7.329f, 9.398f, 12.241f, 15.535f, 18.822f, 22.331f, + 25.130f, 26.006f, 28.362f, 29.897f, 32.498f, 34.622f, 37.463f, 39.715f, 41.708f, + 45.006f, 46.915f, 49.208f, 51.495f, 53.469f, 59.328f, 60.190f, 61.083f, 59.957f, + 60.211f, 60.131f, 59.757f, 54.301f, 52.161f, 47.984f, 46.261f, 54.335f, 58.336f, + 55.675f, 51.459f, 50.040f, 47.316f, 45.297f, 43.624f, 42.011f, 40.630f, 39.454f, + 39.076f, 38.658f, 37.765f, 35.652f, 34.247f, 32.768f, 30.906f, 30.243f, 28.578f, + 30.132f, 28.204f, 26.926f, 25.948f, 24.336f, 24.053f, 22.468f, 20.312f, 19.053f, + 17.584f, 15.160f, 13.473f, 11.589f, 7.981f, 6.522f, 3.868f, 2.096f, 0.667f, + -0.696f, -2.063f, -3.436f, -5.182f, -6.681f, -7.857f, -8.795f, -9.104f, -9.506f, + -9.391f, -8.739f, -9.421f, -9.205f, -8.879f, -7.954f, -6.974f, -5.622f, -4.763f, + -3.964f, -2.527f, -0.864f, 0.710f, 2.333f, 3.900f, 6.234f, 8.846f, 8.523f, + 2.494f, 8.276f, 9.380f, 10.218f, 9.621f, 9.568f, 11.674f, 11.637f, 10.664f, + 10.998f, 10.961f, 10.646f, 9.597f, 8.378f, 7.656f, 6.438f, 4.018f, 2.940f, + 2.348f, 1.217f, 1.398f, 1.980f, 2.648f, 3.260f, 3.568f, 0.949f, 0.677f, + 2.062f, 3.264f, 3.734f, 4.971f, 6.081f, 7.274f, 9.652f, 10.591f, 12.968f, + 13.606f }, + { -29.534f, -30.275f, -31.096f, -32.859f, -34.678f, -37.347f, -36.850f, -40.592f, -46.652f, + -49.413f, -51.194f, -52.652f, -53.371f, -55.220f, -57.162f, -57.568f, -58.299f, -57.971f, + -56.051f, -57.866f, -58.657f, -57.797f, -54.860f, -52.849f, -50.052f, -48.314f, -46.009f, + -43.251f, -41.924f, -43.409f, -41.718f, -40.614f, -38.641f, -36.450f, -31.937f, -25.419f, + -22.110f, -19.249f, -15.914f, -11.578f, -8.693f, -6.222f, -3.223f, -1.501f, 3.601f, + -0.690f, -0.350f, 5.140f, 8.729f, 12.540f, 15.323f, 18.243f, 21.183f, 24.059f, + 25.270f, 27.108f, 30.075f, 33.921f, 36.343f, 36.692f, 39.271f, 41.470f, 43.547f, + 46.382f, 49.156f, 50.686f, 53.586f, 56.917f, 60.329f, 60.235f, 58.107f, 57.806f, + 57.478f, 57.879f, 62.155f, 62.143f, 56.759f, 58.977f, 58.243f, 57.887f, 57.415f, + 53.817f, 50.330f, 48.220f, 45.332f, 43.470f, 42.600f, 40.416f, 39.597f, 38.870f, + 37.882f, 37.030f, 35.819f, 33.957f, 32.710f, 30.295f, 29.355f, 28.416f, 27.769f, + 29.386f, 25.860f, 27.983f, 25.515f, 21.597f, 23.954f, 18.989f, 19.596f, 18.202f, + 17.535f, 16.589f, 12.805f, 10.417f, 7.354f, 5.077f, 2.834f, 1.081f, -0.444f, + -1.886f, -2.920f, -4.578f, -6.222f, -7.481f, -8.323f, -8.972f, -9.560f, -9.650f, + -9.910f, -9.455f, -9.749f, -9.836f, -9.763f, -8.942f, -7.773f, -6.534f, -5.315f, + -4.877f, -4.096f, -3.166f, -1.907f, -0.522f, 3.185f, 6.347f, 8.034f, 5.468f, + 0.168f, 13.546f, 8.330f, 9.223f, 8.766f, 7.460f, 10.584f, 11.549f, 10.132f, + 10.102f, 10.484f, 10.163f, 9.664f, 8.670f, 7.968f, 6.218f, 3.790f, 3.174f, + 2.381f, 1.530f, 1.520f, 1.966f, 2.636f, 3.379f, 3.762f, 0.441f, 0.954f, + 2.200f, 3.285f, 3.798f, 5.037f, 6.305f, 7.446f, 9.728f, 10.629f, 12.953f, + 13.606f }, + { -29.534f, -30.261f, -31.024f, -32.824f, -34.405f, -37.779f, -38.192f, -41.141f, -46.903f, + -49.578f, -51.024f, -52.511f, -53.689f, -55.277f, -57.119f, -57.878f, -58.582f, -58.375f, + -55.012f, -57.558f, -59.261f, -57.862f, -54.940f, -53.013f, -50.830f, -48.975f, -46.552f, + -43.839f, -43.040f, -44.758f, -42.698f, -41.286f, -39.445f, -37.195f, -33.050f, -26.317f, + -22.317f, -18.978f, -15.558f, -11.842f, -9.616f, -7.446f, -3.853f, 1.088f, 3.523f, + 4.173f, 1.986f, 7.276f, 10.722f, 14.383f, 17.607f, 21.042f, 23.866f, 25.059f, + 26.641f, 28.217f, 31.745f, 33.859f, 36.705f, 39.484f, 42.462f, 46.101f, 45.710f, + 47.989f, 50.313f, 52.721f, 55.335f, 58.061f, 58.150f, 57.145f, 51.310f, 53.331f, + 57.668f, 61.996f, 64.424f, 63.563f, 64.605f, 62.156f, 60.770f, 58.639f, 55.647f, + 52.320f, 48.623f, 45.988f, 44.057f, 42.116f, 40.839f, 39.489f, 38.205f, 37.101f, + 36.155f, 35.176f, 33.890f, 31.900f, 31.159f, 29.718f, 29.171f, 26.500f, 28.429f, + 28.295f, 24.619f, 25.515f, 22.997f, 21.254f, 21.793f, 17.615f, 18.140f, 16.592f, + 15.923f, 14.011f, 11.368f, 9.253f, 6.534f, 4.070f, 2.493f, 0.293f, -1.510f, + -2.877f, -4.042f, -5.352f, -6.449f, -7.658f, -8.646f, -8.990f, -9.481f, -9.626f, + -9.760f, -9.897f, -10.644f, -10.897f, -11.119f, -10.505f, -9.257f, -8.017f, -7.532f, + -7.250f, -7.389f, -6.641f, -3.910f, 0.596f, 4.164f, 5.582f, 5.861f, 0.944f, + 2.095f, 8.902f, 8.103f, 7.725f, 7.294f, 6.147f, 8.665f, 11.278f, 10.334f, + 9.753f, 9.954f, 9.517f, 9.486f, 8.573f, 8.083f, 5.990f, 4.045f, 3.313f, + 2.485f, 1.706f, 1.524f, 2.237f, 2.632f, 3.781f, 3.684f, 0.073f, 1.355f, + 2.334f, 3.282f, 3.897f, 5.113f, 6.536f, 7.653f, 9.788f, 10.678f, 12.940f, + 13.606f }, + { -29.534f, -30.246f, -30.944f, -32.773f, -34.135f, -37.958f, -39.483f, -41.788f, -47.117f, + -49.729f, -50.887f, -52.428f, -53.962f, -55.820f, -57.463f, -58.199f, -58.377f, -57.246f, + -53.341f, -56.842f, -59.321f, -57.820f, -55.334f, -53.383f, -51.653f, -49.295f, -47.156f, + -44.423f, -45.112f, -45.016f, -43.621f, -42.339f, -40.557f, -37.807f, -34.061f, -28.052f, + -22.970f, -18.315f, -15.201f, -12.135f, -10.209f, -7.990f, -4.642f, 0.876f, 5.219f, + 5.204f, 5.106f, 8.345f, 11.751f, 15.439f, 18.551f, 22.406f, 25.078f, 25.707f, + 27.879f, 30.777f, 32.329f, 34.590f, 36.971f, 40.135f, 42.679f, 44.558f, 46.842f, + 49.221f, 51.418f, 53.586f, 55.170f, 56.550f, 54.393f, 49.570f, 54.715f, 63.933f, + 65.307f, 66.438f, 65.827f, 64.969f, 64.022f, 62.324f, 60.467f, 57.482f, 53.949f, + 49.307f, 46.766f, 44.101f, 42.292f, 40.909f, 39.682f, 38.492f, 36.821f, 35.205f, + 33.833f, 32.923f, 31.698f, 30.387f, 29.989f, 28.561f, 28.208f, 27.184f, 26.582f, + 24.590f, 26.444f, 22.543f, 23.307f, 20.289f, 18.921f, 19.183f, 16.590f, 15.511f, + 14.187f, 12.076f, 9.885f, 8.467f, 6.009f, 3.193f, 1.167f, -0.613f, -2.721f, + -4.042f, -4.591f, -5.973f, -6.948f, -7.693f, -8.427f, -9.365f, -9.785f, -10.310f, + -10.215f, -11.210f, -12.366f, -12.920f, -12.787f, -12.122f, -11.726f, -10.813f, -10.514f, + -10.188f, -4.472f, -2.995f, -0.303f, 1.164f, 1.223f, 4.935f, 3.305f, -2.636f, + 4.388f, 6.560f, 6.662f, 6.519f, 6.135f, 5.555f, 7.661f, 10.255f, 10.908f, + 9.733f, 9.136f, 9.107f, 8.864f, 8.321f, 7.517f, 5.612f, 4.376f, 3.312f, + 2.498f, 1.535f, 1.432f, 2.566f, 2.665f, 4.034f, 3.377f, 0.045f, 1.747f, + 2.458f, 3.277f, 4.003f, 5.198f, 6.748f, 7.879f, 9.836f, 10.735f, 12.928f, + 13.606f }, + { -29.534f, -30.232f, -30.858f, -32.702f, -33.878f, -37.820f, -40.560f, -42.481f, -47.260f, + -49.762f, -50.844f, -52.465f, -54.163f, -56.628f, -58.092f, -58.527f, -58.503f, -56.970f, + -53.822f, -57.135f, -58.875f, -57.621f, -55.577f, -53.923f, -52.080f, -50.055f, -47.522f, + -44.838f, -46.847f, -45.516f, -44.474f, -43.063f, -41.230f, -38.270f, -35.171f, -29.912f, + -23.738f, -18.442f, -16.005f, -12.766f, -10.074f, -7.962f, -5.090f, -0.904f, 5.770f, + 7.694f, 7.793f, 9.474f, 12.668f, 15.831f, 19.136f, 22.112f, 24.891f, 26.641f, + 28.921f, 31.823f, 33.491f, 36.392f, 38.761f, 41.292f, 43.845f, 45.797f, 47.499f, + 49.706f, 51.436f, 53.278f, 54.420f, 51.606f, 51.364f, 61.519f, 63.960f, 66.054f, + 66.746f, 66.409f, 65.997f, 64.938f, 63.664f, 61.636f, 59.537f, 56.060f, 50.628f, + 47.984f, 44.179f, 42.023f, 40.402f, 39.458f, 37.951f, 36.707f, 34.663f, 33.372f, + 31.946f, 31.118f, 30.687f, 29.888f, 28.351f, 27.697f, 27.680f, 25.737f, 25.320f, + 27.579f, 24.966f, 25.223f, 21.942f, 19.520f, 17.540f, 16.437f, 15.694f, 14.384f, + 12.422f, 11.254f, 8.987f, 7.159f, 4.699f, 2.165f, 0.612f, -1.452f, -3.464f, + -4.707f, -5.833f, -6.392f, -6.843f, -7.740f, -8.419f, -10.128f, -11.753f, -11.863f, + -11.933f, -13.192f, -9.567f, -14.709f, -10.680f, -7.250f, -9.678f, -8.361f, -7.658f, + -3.284f, -4.702f, -4.377f, -5.569f, -1.751f, 2.614f, 3.698f, 0.796f, -0.118f, + 4.329f, 4.859f, 6.019f, 6.221f, 6.580f, 6.761f, 8.921f, 10.007f, 11.187f, + 9.455f, 8.703f, 8.587f, 8.377f, 8.001f, 6.534f, 5.117f, 4.223f, 3.405f, + 2.451f, 1.354f, 1.364f, 2.571f, 2.733f, 3.839f, 3.065f, 0.332f, 1.962f, + 2.555f, 3.291f, 4.087f, 5.284f, 6.926f, 8.106f, 9.874f, 10.796f, 12.917f, + 13.606f }, + { -29.534f, -30.217f, -30.766f, -32.613f, -33.640f, -37.369f, -41.311f, -43.141f, -47.336f, + -49.692f, -50.931f, -52.602f, -54.274f, -56.953f, -58.456f, -58.967f, -58.863f, -57.775f, + -56.061f, -58.197f, -58.222f, -57.624f, -56.060f, -54.359f, -52.460f, -50.706f, -47.852f, + -45.610f, -47.780f, -46.388f, -45.138f, -43.854f, -41.657f, -39.054f, -36.036f, -32.064f, + -24.437f, -19.495f, -16.194f, -13.057f, -9.861f, -7.719f, -5.786f, -2.040f, 2.591f, + 6.839f, 9.135f, 11.149f, 14.200f, 16.241f, 19.367f, 21.942f, 24.137f, 27.442f, + 29.424f, 31.679f, 35.723f, 37.392f, 39.842f, 42.039f, 44.773f, 46.627f, 48.240f, + 50.248f, 51.385f, 52.371f, 53.156f, 48.799f, 60.203f, 63.779f, 64.892f, 65.852f, + 66.135f, 65.875f, 65.148f, 64.113f, 62.580f, 60.441f, 57.903f, 52.234f, 49.562f, + 45.129f, 41.756f, 40.189f, 38.648f, 37.120f, 35.379f, 34.070f, 33.037f, 32.027f, + 31.137f, 30.897f, 29.885f, 28.619f, 27.728f, 26.634f, 24.616f, 25.780f, 25.878f, + 26.386f, 23.141f, 22.088f, 20.193f, 18.402f, 16.553f, 15.332f, 14.822f, 13.225f, + 14.570f, 10.366f, 6.965f, 6.247f, 3.732f, 1.732f, -0.185f, -2.189f, -4.025f, + -5.613f, -6.633f, -6.727f, -6.951f, -8.171f, -9.471f, -10.476f, -11.711f, -8.826f, + -11.138f, -12.299f, -7.565f, -13.111f, -15.222f, -7.932f, -11.089f, -10.389f, -10.766f, + -9.655f, -8.580f, -6.042f, -3.030f, 0.277f, 2.218f, 2.537f, -2.592f, 2.953f, + 3.422f, 2.475f, 4.252f, 5.379f, 5.987f, 5.114f, 4.271f, 9.902f, 11.027f, + 9.098f, 8.213f, 7.476f, 8.219f, 7.527f, 5.824f, 4.905f, 3.909f, 3.334f, + 2.170f, 1.414f, 1.387f, 2.277f, 2.865f, 3.390f, 2.902f, 0.705f, 1.930f, + 2.617f, 3.343f, 4.132f, 5.364f, 7.060f, 8.318f, 9.908f, 10.859f, 12.907f, + 13.606f }, + { -29.534f, -30.202f, -30.668f, -32.508f, -33.433f, -36.673f, -41.704f, -43.696f, -47.386f, + -49.617f, -51.093f, -52.672f, -54.241f, -56.397f, -58.145f, -59.293f, -59.064f, -58.266f, + -57.632f, -58.993f, -58.193f, -57.860f, -56.760f, -55.036f, -53.071f, -51.071f, -47.878f, + -47.177f, -48.072f, -46.887f, -45.819f, -44.457f, -42.088f, -39.404f, -36.700f, -33.027f, + -25.931f, -20.248f, -16.514f, -13.612f, -9.872f, -7.255f, -5.366f, -2.443f, 0.793f, + 5.508f, 9.499f, 12.836f, 15.150f, 17.782f, 19.721f, 22.361f, 24.911f, 27.541f, + 30.618f, 34.303f, 38.809f, 38.477f, 40.948f, 43.031f, 45.429f, 46.824f, 48.277f, + 50.156f, 51.955f, 53.101f, 53.183f, 49.988f, 60.852f, 63.756f, 64.829f, 65.376f, + 65.241f, 64.737f, 63.752f, 62.593f, 61.082f, 59.104f, 56.558f, 50.521f, 46.958f, + 42.803f, 40.526f, 38.659f, 37.200f, 35.050f, 34.067f, 32.765f, 32.314f, 30.597f, + 28.620f, 28.148f, 27.180f, 26.357f, 25.127f, 24.848f, 27.383f, 25.864f, 22.678f, + 21.928f, 21.913f, 21.329f, 19.180f, 17.248f, 15.532f, 14.350f, 13.220f, 11.725f, + 12.334f, 9.369f, 7.936f, 5.091f, 2.986f, 1.288f, -0.577f, -2.837f, -4.692f, + -6.156f, -6.987f, -6.736f, -7.074f, -8.566f, -8.429f, -6.580f, -9.027f, -4.060f, + -11.053f, -12.932f, -14.378f, -13.974f, -13.483f, -13.489f, -12.529f, -11.110f, -10.076f, + -8.699f, -6.906f, -4.957f, -2.168f, 0.102f, 1.926f, 0.843f, -5.787f, 4.610f, + 2.335f, 2.298f, 2.437f, 3.199f, 3.004f, 1.245f, -0.910f, 8.233f, 9.539f, + 8.573f, 7.851f, 7.113f, 7.547f, 7.113f, 5.656f, 4.878f, 3.782f, 2.904f, + 1.801f, 1.464f, 1.366f, 2.023f, 3.021f, 3.061f, 2.801f, 0.952f, 1.749f, + 2.662f, 3.439f, 4.142f, 5.431f, 7.152f, 8.502f, 9.941f, 10.921f, 12.899f, + 13.606f }, + { -29.534f, -30.187f, -30.566f, -32.389f, -33.264f, -35.861f, -41.796f, -44.106f, -47.447f, + -49.619f, -51.245f, -52.550f, -54.068f, -55.489f, -57.508f, -59.200f, -59.075f, -58.195f, + -58.005f, -59.325f, -58.626f, -58.202f, -57.077f, -55.541f, -53.711f, -51.850f, -48.311f, + -48.631f, -48.047f, -47.460f, -46.282f, -44.617f, -42.301f, -39.684f, -36.811f, -33.508f, + -27.648f, -21.144f, -17.465f, -13.794f, -10.148f, -7.022f, -5.310f, -2.475f, 0.573f, + 4.975f, 10.669f, 11.676f, 14.960f, 16.287f, 18.905f, 23.680f, 26.090f, 29.011f, + 32.731f, 37.676f, 38.750f, 40.053f, 42.272f, 44.577f, 45.952f, 47.232f, 48.637f, + 50.252f, 51.727f, 52.941f, 53.607f, 49.514f, 60.072f, 62.715f, 64.091f, 64.237f, + 64.084f, 63.380f, 62.481f, 60.899f, 59.489f, 57.257f, 52.529f, 49.168f, 44.349f, + 41.545f, 39.404f, 37.413f, 35.830f, 33.873f, 32.251f, 31.793f, 29.532f, 27.757f, + 27.944f, 29.151f, 28.349f, 27.852f, 26.198f, 24.114f, 23.644f, 23.453f, 22.466f, + 21.615f, 21.015f, 20.134f, 18.226f, 15.998f, 14.234f, 13.099f, 12.348f, 10.853f, + 10.674f, 8.576f, 5.704f, 4.344f, 3.176f, 1.043f, -1.047f, -3.296f, -4.957f, + -6.351f, -6.810f, -6.663f, -7.168f, -8.464f, -5.157f, -9.489f, -11.313f, -12.719f, + -12.298f, -12.582f, -12.913f, -12.544f, -11.853f, -11.323f, -10.707f, -9.167f, -8.576f, + -7.643f, -6.066f, -4.049f, -2.934f, -0.402f, 0.657f, -1.006f, -2.213f, 6.825f, + 1.955f, 1.671f, 2.768f, 2.335f, 1.500f, 0.159f, -0.924f, 5.243f, 7.722f, + 8.095f, 7.501f, 6.927f, 6.324f, 6.602f, 6.006f, 4.941f, 3.685f, 2.503f, + 1.824f, 1.351f, 1.217f, 1.966f, 3.025f, 2.920f, 2.556f, 1.070f, 1.635f, + 2.733f, 3.570f, 4.138f, 5.484f, 7.213f, 8.650f, 9.976f, 10.980f, 12.892f, + 13.606f }, + { -29.534f, -30.172f, -30.459f, -32.262f, -33.140f, -35.090f, -41.719f, -44.367f, -47.531f, + -49.704f, -51.355f, -52.337f, -53.867f, -55.107f, -57.252f, -58.803f, -59.102f, -58.424f, + -58.286f, -59.308f, -58.886f, -58.852f, -57.365f, -55.713f, -54.424f, -51.921f, -49.121f, + -48.928f, -48.426f, -47.917f, -46.462f, -44.737f, -42.196f, -39.791f, -37.119f, -33.645f, + -29.145f, -22.938f, -18.802f, -14.635f, -10.703f, -7.152f, -5.198f, -2.422f, 0.523f, + 5.271f, 10.396f, 10.406f, 10.729f, 12.837f, 15.432f, 23.299f, 28.302f, 31.581f, + 35.514f, 38.837f, 38.622f, 40.065f, 41.693f, 43.293f, 44.947f, 46.741f, 48.839f, + 50.099f, 51.279f, 52.423f, 53.783f, 51.521f, 58.288f, 61.742f, 62.703f, 62.893f, + 62.722f, 61.951f, 60.873f, 59.472f, 57.750f, 55.786f, 51.610f, 46.470f, 42.602f, + 40.775f, 38.647f, 36.674f, 34.075f, 32.702f, 30.394f, 29.551f, 27.277f, 28.364f, + 27.546f, 25.843f, 25.686f, 24.526f, 23.852f, 23.176f, 22.623f, 22.155f, 21.652f, + 20.411f, 20.202f, 18.692f, 17.025f, 15.445f, 14.105f, 12.641f, 11.844f, 10.539f, + 9.778f, 7.473f, 5.548f, 4.593f, 1.814f, 1.118f, -1.292f, -3.446f, -5.157f, + -6.180f, -6.973f, -6.546f, -6.389f, -8.224f, -9.329f, -9.368f, -9.032f, -10.101f, + -10.991f, -11.648f, -11.690f, -11.668f, -11.237f, -11.188f, -10.708f, -9.809f, -9.472f, + -8.566f, -6.341f, -4.505f, -2.200f, -0.236f, 0.869f, -3.899f, 1.225f, 4.712f, + 2.421f, -0.469f, 1.426f, 1.996f, 1.704f, 0.145f, -1.270f, 3.403f, 6.123f, + 7.473f, 6.811f, 6.365f, 6.085f, 6.298f, 6.452f, 5.133f, 3.612f, 2.426f, + 2.126f, 1.289f, 1.126f, 1.961f, 2.748f, 2.739f, 2.141f, 1.234f, 1.779f, + 2.872f, 3.718f, 4.153f, 5.528f, 7.256f, 8.760f, 10.015f, 11.034f, 12.885f, + 13.606f }, + { -29.534f, -30.157f, -30.350f, -32.131f, -33.067f, -34.520f, -41.639f, -44.514f, -47.616f, + -49.804f, -51.474f, -52.309f, -53.805f, -55.501f, -57.573f, -58.545f, -59.275f, -59.195f, + -59.090f, -59.436f, -59.386f, -59.567f, -57.849f, -56.077f, -54.759f, -51.691f, -49.520f, + -49.503f, -48.723f, -47.832f, -46.830f, -45.010f, -42.375f, -39.855f, -36.836f, -33.437f, + -29.746f, -25.713f, -20.802f, -15.783f, -11.765f, -7.086f, -5.153f, -2.608f, 0.872f, + 5.701f, 11.055f, 12.340f, 8.993f, 13.304f, 12.876f, 25.113f, 30.039f, 33.466f, + 36.786f, 38.148f, 39.241f, 40.165f, 41.765f, 43.416f, 44.955f, 46.474f, 48.328f, + 49.599f, 50.636f, 51.960f, 53.376f, 53.343f, 56.648f, 60.111f, 61.112f, 61.137f, + 60.924f, 60.563f, 59.468f, 58.015f, 56.024f, 53.599f, 49.753f, 45.155f, 41.495f, + 39.432f, 37.248f, 35.192f, 32.690f, 31.141f, 28.908f, 27.266f, 27.506f, 27.506f, + 25.349f, 25.890f, 24.541f, 23.989f, 23.294f, 22.196f, 20.753f, 20.874f, 20.183f, + 19.301f, 18.987f, 17.118f, 15.571f, 14.456f, 13.622f, 12.018f, 11.062f, 9.650f, + 8.968f, 7.256f, 5.166f, 4.469f, 3.795f, -0.010f, -1.388f, -3.962f, -5.135f, + -5.677f, -6.353f, -5.983f, -6.857f, -8.337f, -8.964f, -8.608f, -8.218f, -9.917f, + -10.891f, -11.013f, -11.402f, -11.935f, -11.909f, -12.062f, -11.281f, -11.304f, -10.240f, + -7.491f, -6.279f, -4.624f, -2.062f, 0.026f, 0.863f, -5.422f, 5.067f, 2.265f, + 3.245f, -2.174f, 0.517f, 1.560f, 1.203f, 0.034f, -1.884f, 1.122f, 3.903f, + 6.902f, 6.142f, 6.031f, 6.180f, 6.334f, 6.408f, 5.259f, 3.618f, 2.541f, + 2.291f, 1.345f, 1.240f, 1.869f, 2.296f, 2.429f, 1.829f, 1.599f, 2.219f, + 3.089f, 3.856f, 4.214f, 5.575f, 7.299f, 8.835f, 10.059f, 11.081f, 12.880f, + 13.606f }, + { -29.534f, -30.143f, -30.238f, -32.002f, -33.044f, -34.276f, -41.710f, -44.605f, -47.668f, + -49.851f, -51.667f, -52.643f, -53.994f, -56.173f, -58.072f, -58.721f, -59.575f, -60.021f, + -60.203f, -60.184f, -60.124f, -59.733f, -58.182f, -56.622f, -54.618f, -52.211f, -49.839f, + -50.186f, -48.886f, -47.880f, -46.997f, -45.261f, -42.436f, -39.746f, -36.684f, -33.264f, + -30.029f, -26.507f, -23.096f, -18.168f, -12.624f, -8.343f, -5.615f, -2.750f, 0.624f, + 5.419f, 11.603f, 13.510f, 9.704f, 16.848f, 15.995f, 24.561f, 29.203f, 32.910f, + 36.442f, 37.552f, 39.740f, 40.959f, 42.343f, 43.377f, 45.120f, 46.706f, 47.805f, + 48.931f, 50.079f, 51.166f, 52.441f, 53.588f, 54.195f, 58.987f, 59.104f, 59.267f, + 59.348f, 58.923f, 57.699f, 56.190f, 54.387f, 52.157f, 49.120f, 42.633f, 39.323f, + 37.872f, 35.722f, 32.457f, 32.334f, 29.161f, 28.798f, 26.094f, 27.087f, 26.363f, + 24.657f, 24.025f, 23.315f, 22.164f, 21.352f, 21.277f, 21.385f, 19.018f, 18.898f, + 18.242f, 17.613f, 15.917f, 14.427f, 13.930f, 13.704f, 12.278f, 11.268f, 9.293f, + 8.013f, 6.682f, 6.507f, 5.191f, 2.015f, 0.532f, -1.827f, -3.959f, -5.059f, + -5.442f, -5.580f, -5.762f, -7.040f, -6.452f, -9.214f, -9.157f, -8.806f, -10.209f, + -10.584f, -10.638f, -11.142f, -11.997f, -12.440f, -12.306f, -11.941f, -10.537f, -8.786f, + -7.760f, -6.167f, -4.115f, -2.033f, -0.152f, 0.536f, -8.959f, 5.864f, 1.843f, + 2.695f, 0.814f, -0.039f, 0.857f, 1.008f, -0.084f, -1.841f, -0.575f, 2.486f, + 6.254f, 4.721f, 5.147f, 5.640f, 6.376f, 6.212f, 5.333f, 3.478f, 2.648f, + 2.466f, 1.352f, 1.382f, 1.739f, 1.879f, 2.181f, 1.942f, 2.117f, 2.834f, + 3.357f, 3.965f, 4.332f, 5.637f, 7.356f, 8.883f, 10.108f, 11.120f, 12.876f, + 13.606f }, + { -29.534f, -30.129f, -30.125f, -31.883f, -33.070f, -34.420f, -42.024f, -44.694f, -47.674f, + -49.837f, -51.942f, -53.239f, -54.436f, -56.643f, -58.464f, -59.338f, -59.883f, -60.555f, + -61.093f, -60.977f, -60.464f, -59.639f, -58.531f, -57.080f, -54.900f, -52.336f, -50.203f, + -49.939f, -49.353f, -47.977f, -46.933f, -45.211f, -42.610f, -39.780f, -36.621f, -33.492f, + -30.609f, -27.083f, -23.725f, -19.647f, -13.219f, -9.009f, -5.193f, -3.138f, 0.081f, + 4.911f, 11.051f, 14.460f, 11.324f, 15.938f, 18.284f, 19.726f, 25.870f, 30.085f, + 34.459f, 37.761f, 40.113f, 41.590f, 42.703f, 43.784f, 45.252f, 46.579f, 47.491f, + 48.100f, 49.172f, 50.314f, 51.246f, 52.011f, 53.228f, 53.961f, 56.798f, 57.085f, + 57.206f, 57.687f, 55.978f, 54.560f, 52.513f, 50.294f, 46.318f, 40.755f, 37.734f, + 35.923f, 34.258f, 31.477f, 30.510f, 28.448f, 26.606f, 25.863f, 24.518f, 23.842f, + 23.382f, 22.696f, 21.228f, 20.812f, 19.239f, 17.946f, 18.289f, 17.746f, 17.685f, + 17.807f, 16.343f, 15.283f, 14.037f, 13.298f, 12.422f, 11.334f, 10.245f, 8.897f, + 7.275f, 6.376f, 5.390f, 5.560f, 2.098f, 0.265f, -1.893f, -4.186f, -4.762f, + -4.697f, -4.779f, -5.558f, -6.917f, -8.144f, -9.093f, -9.276f, -8.928f, -9.776f, + -10.599f, -10.727f, -11.499f, -12.321f, -12.543f, -12.449f, -11.673f, -9.679f, -8.735f, + -7.094f, -5.755f, -3.849f, -1.736f, 0.337f, -0.964f, -10.263f, 3.967f, 1.344f, + 1.946f, 4.041f, -0.496f, 0.922f, 0.627f, 0.029f, -1.018f, -1.525f, 3.025f, + 5.247f, 4.071f, 4.661f, 5.319f, 6.493f, 6.293f, 5.217f, 3.132f, 2.592f, + 2.772f, 1.319f, 1.346f, 1.675f, 1.567f, 2.163f, 2.499f, 2.586f, 3.440f, + 3.624f, 4.039f, 4.502f, 5.725f, 7.439f, 8.913f, 10.163f, 11.152f, 12.873f, + 13.606f }, + { -29.534f, -30.115f, -30.011f, -31.777f, -33.138f, -34.946f, -42.591f, -44.819f, -47.652f, + -49.823f, -52.235f, -53.819f, -55.028f, -56.957f, -58.866f, -60.231f, -60.156f, -60.778f, + -61.497f, -61.186f, -60.780f, -60.107f, -58.952f, -57.482f, -55.345f, -51.869f, -50.534f, + -49.799f, -49.325f, -48.243f, -46.691f, -45.019f, -42.670f, -39.944f, -37.004f, -33.579f, + -30.602f, -27.520f, -24.215f, -20.489f, -13.987f, -9.182f, -5.070f, -3.322f, -0.351f, + 4.574f, 10.564f, 14.833f, 14.074f, 15.402f, 19.026f, 21.300f, 22.123f, 22.866f, + 32.875f, 37.988f, 40.710f, 42.036f, 43.121f, 44.316f, 45.470f, 46.451f, 47.112f, + 47.529f, 48.524f, 49.394f, 50.232f, 50.847f, 51.217f, 53.361f, 52.268f, 55.492f, + 56.348f, 55.312f, 53.969f, 52.547f, 51.144f, 48.098f, 45.937f, 40.308f, 36.219f, + 34.504f, 33.087f, 29.697f, 28.292f, 27.188f, 26.369f, 25.149f, 24.097f, 23.634f, + 22.755f, 21.305f, 20.816f, 20.074f, 18.916f, 18.063f, 18.145f, 17.293f, 16.445f, + 16.384f, 14.845f, 14.348f, 13.253f, 11.916f, 11.159f, 10.176f, 9.291f, 8.063f, + 7.178f, 5.592f, 4.861f, 3.804f, 2.636f, -0.461f, -2.659f, -3.856f, -4.279f, + -3.951f, -4.816f, -5.672f, -6.973f, -8.411f, -9.083f, -9.158f, -8.510f, -9.482f, + -10.263f, -11.158f, -12.151f, -12.630f, -12.738f, -12.117f, -10.924f, -10.091f, -8.579f, + -6.801f, -5.170f, -3.702f, -1.827f, 0.228f, -2.989f, -8.360f, 5.723f, 1.391f, + 1.605f, 3.535f, -0.406f, 1.044f, 1.005f, 0.110f, -0.331f, -0.093f, 5.297f, + 5.137f, 4.181f, 4.859f, 5.186f, 6.276f, 6.185f, 4.673f, 2.873f, 2.391f, + 2.786f, 1.380f, 1.214f, 1.707f, 1.343f, 2.270f, 3.145f, 2.855f, 3.911f, + 3.841f, 4.088f, 4.698f, 5.845f, 7.550f, 8.938f, 10.220f, 11.175f, 12.870f, + 13.606f }, + { -29.534f, -30.102f, -29.897f, -31.689f, -33.239f, -35.775f, -43.335f, -44.989f, -47.643f, + -49.891f, -52.467f, -54.201f, -55.614f, -57.379f, -59.357f, -61.076f, -60.592f, -60.828f, + -61.680f, -61.030f, -61.405f, -60.902f, -58.811f, -57.671f, -55.306f, -51.562f, -50.608f, + -49.884f, -48.933f, -48.032f, -46.458f, -44.723f, -42.709f, -40.207f, -37.037f, -34.005f, + -30.816f, -27.742f, -24.229f, -20.879f, -15.207f, -8.844f, -4.270f, -3.528f, -1.105f, + 3.828f, 10.224f, 14.324f, 15.900f, 17.285f, 18.794f, 20.200f, 20.767f, 21.427f, + 28.277f, 36.732f, 40.563f, 43.305f, 44.194f, 44.901f, 45.637f, 46.410f, 47.290f, + 47.361f, 48.600f, 49.214f, 49.628f, 50.213f, 50.128f, 50.619f, 50.929f, 51.144f, + 52.530f, 54.244f, 52.632f, 51.054f, 49.516f, 45.909f, 42.257f, 38.889f, 35.070f, + 33.325f, 31.301f, 29.342f, 26.801f, 25.594f, 25.387f, 24.311f, 22.785f, 22.056f, + 21.911f, 20.382f, 19.844f, 19.487f, 18.112f, 16.729f, 16.481f, 16.342f, 15.522f, + 14.890f, 14.324f, 12.943f, 12.380f, 11.963f, 9.019f, 8.892f, 8.276f, 7.038f, + 6.490f, 5.504f, 4.455f, 3.866f, 1.559f, -0.967f, -2.487f, -3.343f, -4.062f, + -3.864f, -4.971f, -6.394f, -4.933f, -8.501f, -8.935f, -9.056f, -8.158f, -9.872f, + -10.693f, -11.856f, -12.621f, -13.030f, -12.366f, -11.597f, -10.885f, -9.629f, -8.270f, + -6.931f, -5.335f, -3.295f, -1.567f, 0.176f, -4.982f, -5.295f, 5.600f, 2.143f, + 3.985f, 1.729f, 0.557f, 1.524f, 0.921f, 0.510f, 0.052f, 3.537f, 5.337f, + 4.989f, 3.684f, 4.845f, 5.191f, 5.571f, 5.665f, 4.086f, 2.766f, 2.352f, + 2.437f, 1.478f, 1.173f, 1.789f, 1.305f, 2.294f, 3.448f, 2.968f, 4.222f, + 3.986f, 4.131f, 4.888f, 5.992f, 7.687f, 8.969f, 10.278f, 11.190f, 12.868f, + 13.606f }, + { -29.534f, -30.089f, -29.785f, -31.622f, -33.361f, -36.775f, -44.126f, -45.188f, -47.687f, + -50.075f, -52.608f, -54.426f, -56.082f, -57.905f, -59.737f, -61.530f, -61.355f, -60.938f, + -61.764f, -60.824f, -61.886f, -61.002f, -58.358f, -57.674f, -54.955f, -51.524f, -50.615f, + -49.787f, -48.909f, -47.660f, -46.305f, -44.608f, -42.718f, -40.197f, -37.167f, -34.086f, + -31.151f, -27.997f, -24.654f, -20.999f, -16.589f, -9.612f, -4.896f, -4.735f, -1.921f, + 3.240f, 10.247f, 13.704f, 15.302f, 18.896f, 20.541f, 21.633f, 20.806f, 19.643f, + 23.158f, 28.442f, 36.892f, 42.507f, 44.204f, 46.172f, 47.528f, 47.515f, 47.799f, + 48.063f, 49.055f, 49.760f, 50.457f, 50.481f, 50.471f, 50.179f, 49.744f, 50.512f, + 50.025f, 51.434f, 51.589f, 49.128f, 47.459f, 41.152f, 42.816f, 39.243f, 35.210f, + 31.891f, 28.605f, 26.724f, 26.036f, 24.356f, 23.801f, 23.029f, 21.880f, 20.980f, + 21.153f, 19.198f, 19.200f, 18.749f, 17.086f, 16.106f, 15.587f, 15.584f, 14.686f, + 13.509f, 12.684f, 12.248f, 10.808f, 9.945f, 9.262f, 8.807f, 7.321f, 6.885f, + 6.085f, 5.387f, 4.001f, 2.642f, 1.378f, -0.938f, -2.130f, -2.742f, -3.811f, + -4.365f, -5.170f, -5.251f, -7.504f, -8.125f, -9.128f, -9.421f, -9.612f, -10.142f, + -11.171f, -12.042f, -12.516f, -12.747f, -12.520f, -11.692f, -11.195f, -9.689f, -7.974f, + -6.432f, -4.947f, -2.748f, -1.045f, 0.356f, -5.705f, -7.689f, 3.969f, 4.946f, + 4.928f, -0.694f, 1.682f, 1.847f, 1.550f, 0.625f, 0.445f, 4.645f, 4.519f, + 4.329f, 3.863f, 4.744f, 4.960f, 4.990f, 4.952f, 3.662f, 2.600f, 2.522f, + 2.154f, 1.519f, 1.252f, 1.845f, 1.546f, 2.211f, 3.267f, 3.097f, 4.410f, + 4.058f, 4.186f, 5.041f, 6.156f, 7.842f, 9.013f, 10.335f, 11.198f, 12.867f, + 13.606f }, + { -29.534f, -30.078f, -29.674f, -31.578f, -33.495f, -37.793f, -44.815f, -45.389f, -47.800f, + -50.331f, -52.674f, -54.640f, -56.428f, -58.302f, -59.902f, -61.638f, -62.204f, -61.320f, + -61.638f, -60.988f, -62.411f, -60.607f, -58.880f, -58.164f, -54.190f, -51.468f, -50.530f, + -49.572f, -48.843f, -47.367f, -46.116f, -44.457f, -42.736f, -40.114f, -37.378f, -34.563f, + -31.530f, -28.321f, -24.912f, -21.240f, -16.843f, -11.736f, -7.830f, -6.526f, -2.800f, + 3.010f, 9.792f, 13.205f, 14.670f, 18.282f, 20.184f, 22.077f, 22.742f, 21.401f, + 17.004f, 18.289f, 24.092f, 34.707f, 41.390f, 45.056f, 46.256f, 47.331f, 48.852f, + 49.893f, 50.516f, 51.343f, 51.871f, 52.193f, 52.094f, 51.775f, 50.906f, 50.300f, + 50.569f, 50.438f, 49.163f, 47.849f, 46.052f, 43.763f, 40.850f, 37.798f, 33.142f, + 29.368f, 27.062f, 25.180f, 23.810f, 22.789f, 21.709f, 21.359f, 20.611f, 20.329f, + 20.051f, 19.886f, 19.033f, 18.304f, 16.952f, 16.129f, 15.757f, 15.028f, 13.982f, + 12.755f, 12.035f, 11.075f, 10.446f, 10.402f, 9.678f, 8.730f, 7.428f, 6.750f, + 6.046f, 5.198f, 4.543f, 2.487f, 1.412f, -1.053f, -1.554f, -2.078f, -3.160f, + -4.521f, -4.288f, -2.969f, -8.148f, -8.576f, -9.521f, -9.678f, -10.343f, -10.287f, + -11.297f, -11.909f, -12.426f, -12.229f, -12.795f, -11.905f, -11.496f, -9.525f, -7.787f, + -6.278f, -4.427f, -2.580f, -0.492f, 0.885f, -5.800f, -5.778f, 2.409f, 1.649f, + -0.115f, 1.031f, 1.959f, 2.134f, 0.858f, 0.796f, 2.698f, 4.167f, 4.562f, + 4.534f, 4.197f, 4.414f, 4.354f, 4.613f, 4.211f, 3.147f, 2.377f, 2.472f, + 1.929f, 1.566f, 1.386f, 1.840f, 1.811f, 2.129f, 2.814f, 3.335f, 4.493f, + 4.072f, 4.256f, 5.137f, 6.326f, 8.004f, 9.076f, 10.388f, 11.198f, 12.867f, + 13.606f }, + { -29.534f, -30.066f, -29.565f, -31.554f, -33.631f, -38.682f, -45.285f, -45.565f, -47.973f, + -50.566f, -52.694f, -54.873f, -56.717f, -58.464f, -60.033f, -61.882f, -62.829f, -62.030f, + -61.695f, -62.038f, -63.207f, -61.041f, -60.115f, -58.732f, -53.500f, -51.445f, -50.339f, + -49.232f, -48.644f, -47.156f, -45.771f, -44.474f, -42.520f, -39.970f, -37.520f, -34.669f, + -31.569f, -28.526f, -25.335f, -21.125f, -16.900f, -14.017f, -11.253f, -8.230f, -3.683f, + 2.668f, 9.260f, 12.435f, 13.731f, 16.598f, 18.614f, 20.858f, 23.001f, 23.105f, + 21.553f, 19.917f, 17.699f, 18.264f, 23.321f, 32.668f, 39.853f, 45.525f, 47.804f, + 49.082f, 49.972f, 51.229f, 51.573f, 51.809f, 52.155f, 51.999f, 51.396f, 50.604f, + 49.610f, 48.535f, 47.513f, 46.354f, 44.478f, 41.405f, 39.176f, 33.678f, 31.217f, + 28.531f, 26.149f, 23.868f, 22.456f, 21.480f, 20.587f, 20.163f, 19.700f, 20.124f, + 19.691f, 19.297f, 18.784f, 17.888f, 16.224f, 15.839f, 16.172f, 14.750f, 13.463f, + 12.675f, 11.962f, 10.904f, 10.955f, 10.973f, 9.761f, 8.461f, 7.604f, 5.948f, + 6.030f, 5.316f, 4.224f, 2.170f, 0.910f, -0.436f, -0.509f, -1.107f, -2.639f, + -3.588f, -0.311f, -5.086f, -8.315f, -8.414f, -9.031f, -10.187f, -9.387f, -10.168f, + -11.366f, -12.397f, -12.620f, -12.636f, -12.274f, -12.097f, -11.440f, -9.264f, -7.725f, + -5.691f, -3.814f, -1.977f, -0.003f, 1.249f, -4.903f, -7.282f, 3.862f, 1.955f, + 1.941f, 2.232f, 2.868f, 2.160f, 1.159f, 4.494f, 4.522f, 3.681f, 4.289f, + 4.586f, 4.351f, 4.325f, 4.248f, 4.205f, 3.594f, 2.601f, 2.090f, 2.001f, + 1.482f, 1.564f, 1.507f, 1.829f, 1.587f, 2.058f, 2.422f, 3.586f, 4.451f, + 4.035f, 4.328f, 5.168f, 6.487f, 8.163f, 9.159f, 10.435f, 11.194f, 12.866f, + 13.606f }, + { -29.534f, -30.056f, -29.459f, -31.549f, -33.762f, -39.336f, -45.478f, -45.708f, -48.180f, + -50.700f, -52.681f, -55.005f, -56.970f, -58.483f, -60.205f, -62.525f, -63.402f, -62.894f, + -62.362f, -63.491f, -63.684f, -62.190f, -60.880f, -58.374f, -53.432f, -51.504f, -50.151f, + -48.972f, -48.280f, -47.018f, -45.385f, -44.231f, -42.298f, -39.627f, -37.263f, -34.661f, + -31.423f, -28.477f, -25.532f, -21.404f, -15.304f, -15.018f, -11.921f, -8.375f, -3.767f, + 2.574f, 9.780f, 11.796f, 12.713f, 14.966f, 16.883f, 19.399f, 21.741f, 23.125f, + 24.052f, 24.725f, 24.700f, 23.690f, 20.297f, 19.095f, 26.232f, 34.582f, 40.900f, + 44.898f, 47.367f, 49.680f, 51.065f, 52.145f, 52.918f, 52.593f, 51.484f, 50.602f, + 49.104f, 47.759f, 46.284f, 45.058f, 43.098f, 36.420f, 34.992f, 32.639f, 29.722f, + 27.150f, 24.807f, 22.371f, 21.178f, 20.499f, 19.698f, 19.895f, 19.261f, 18.597f, + 18.746f, 19.359f, 18.039f, 16.959f, 16.171f, 15.934f, 15.750f, 15.335f, 13.131f, + 11.898f, 11.327f, 11.086f, 11.313f, 10.988f, 9.523f, 8.665f, 7.557f, 7.028f, + 6.506f, 5.317f, 3.657f, 1.831f, 1.352f, 0.614f, -0.108f, -0.930f, -2.336f, + -1.111f, -1.781f, -5.795f, -7.771f, -8.213f, -9.055f, -10.405f, -10.498f, -9.755f, + -11.772f, -12.699f, -12.988f, -12.915f, -12.583f, -11.875f, -10.853f, -9.212f, -7.494f, + -5.638f, -3.278f, -1.408f, 0.539f, 1.822f, -3.818f, -8.140f, 5.068f, 2.385f, + 2.764f, 3.348f, 2.843f, 2.544f, 1.696f, 6.029f, 4.553f, 3.821f, 4.718f, + 4.166f, 4.644f, 4.597f, 4.123f, 3.627f, 2.983f, 2.076f, 1.525f, 1.419f, + 0.943f, 1.243f, 1.537f, 1.894f, 0.723f, 1.870f, 2.272f, 3.669f, 4.258f, + 3.945f, 4.374f, 5.142f, 6.632f, 8.309f, 9.260f, 10.475f, 11.184f, 12.867f, + 13.606f }, + { -29.534f, -30.046f, -29.357f, -31.558f, -33.886f, -39.704f, -45.410f, -45.824f, -48.399f, + -50.724f, -52.647f, -54.936f, -57.101f, -58.436f, -60.165f, -63.160f, -64.200f, -63.637f, + -63.281f, -64.413f, -63.784f, -62.678f, -61.475f, -57.661f, -53.565f, -51.454f, -49.832f, + -48.840f, -47.931f, -46.511f, -44.893f, -43.514f, -42.018f, -39.447f, -37.139f, -34.552f, + -31.397f, -28.566f, -25.658f, -22.090f, -17.320f, -15.919f, -12.525f, -9.064f, -4.019f, + 1.443f, 9.231f, 10.307f, 11.304f, 13.030f, 15.151f, 17.231f, 20.439f, 22.378f, + 24.102f, 26.083f, 27.338f, 27.961f, 28.352f, 27.754f, 24.655f, 23.098f, 24.847f, + 29.076f, 33.646f, 39.276f, 44.552f, 51.026f, 52.418f, 52.880f, 52.089f, 50.614f, + 48.947f, 47.067f, 45.111f, 43.716f, 38.267f, 36.288f, 33.987f, 30.811f, 28.515f, + 25.662f, 23.589f, 21.204f, 20.174f, 19.577f, 19.038f, 18.959f, 18.717f, 18.842f, + 18.712f, 17.902f, 17.579f, 17.065f, 17.035f, 15.802f, 14.660f, 13.751f, 12.141f, + 10.638f, 10.360f, 10.749f, 10.891f, 10.075f, 9.224f, 8.196f, 7.739f, 7.026f, + 8.257f, 6.186f, 4.340f, 3.233f, 1.972f, 1.492f, 0.444f, -0.571f, -2.315f, + -1.196f, 0.612f, -5.372f, -7.250f, -8.131f, -9.641f, -10.413f, -9.993f, -10.410f, + -11.631f, -12.464f, -12.582f, -12.877f, -12.484f, -11.689f, -10.648f, -9.002f, -7.067f, + -5.195f, -2.934f, -0.867f, 0.780f, 1.840f, -2.420f, -9.649f, 6.880f, 3.174f, + 3.746f, 3.998f, 2.967f, 2.832f, 4.008f, 6.361f, 5.089f, 4.906f, 5.023f, + 4.717f, 4.598f, 4.797f, 3.782f, 2.901f, 2.322f, 1.507f, 0.838f, 1.018f, + 0.514f, 0.591f, 1.466f, 2.053f, -0.241f, 1.508f, 2.316f, 3.512f, 3.933f, + 3.800f, 4.370f, 5.075f, 6.758f, 8.439f, 9.375f, 10.507f, 11.172f, 12.867f, + 13.606f }, + { -29.534f, -30.037f, -29.258f, -31.576f, -34.002f, -39.797f, -45.157f, -45.935f, -48.617f, + -50.703f, -52.619f, -54.755f, -57.009f, -58.294f, -59.765f, -63.288f, -64.893f, -64.221f, + -64.124f, -64.838f, -63.942f, -62.563f, -61.901f, -56.999f, -53.675f, -51.383f, -49.700f, + -48.655f, -47.600f, -46.128f, -44.577f, -43.128f, -41.746f, -39.442f, -36.997f, -34.353f, + -31.372f, -28.703f, -25.836f, -22.595f, -19.481f, -16.443f, -12.901f, -9.456f, -4.527f, + -0.111f, 6.369f, 8.742f, 10.213f, 11.601f, 12.796f, 15.554f, 18.099f, 20.216f, + 22.874f, 25.442f, 27.256f, 28.482f, 30.204f, 30.975f, 30.738f, 30.494f, 30.033f, + 30.521f, 31.799f, 28.172f, 24.212f, 29.268f, 43.869f, 52.254f, 51.967f, 49.716f, + 48.360f, 46.343f, 44.143f, 41.801f, 35.763f, 33.708f, 31.177f, 29.358f, 27.422f, + 24.521f, 22.190f, 20.685f, 19.179f, 18.823f, 18.714f, 18.782f, 19.481f, 16.950f, + 17.599f, 17.187f, 17.044f, 16.434f, 16.140f, 14.531f, 12.973f, 11.420f, 10.407f, + 10.151f, 10.259f, 11.260f, 10.683f, 9.706f, 8.894f, 7.924f, 7.633f, 7.644f, + 9.300f, 6.776f, 4.718f, 3.829f, 2.697f, 1.946f, 1.504f, -0.014f, -0.666f, + -3.475f, -3.566f, -6.017f, -7.500f, -8.304f, -9.635f, -9.984f, -11.248f, -12.160f, + -12.229f, -12.887f, -12.696f, -12.790f, -12.276f, -11.288f, -10.454f, -9.011f, -6.467f, + -4.718f, -2.722f, -0.587f, 1.296f, 2.694f, -0.537f, -10.810f, 7.631f, 3.260f, + 4.270f, 4.870f, 3.153f, 2.315f, 4.236f, 6.669f, 6.177f, 6.104f, 5.595f, + 5.136f, 4.779f, 4.712f, 3.610f, 2.318f, 1.757f, 1.057f, 0.483f, 0.847f, + 0.186f, 0.055f, 1.411f, 2.266f, -0.612f, 1.081f, 2.379f, 3.223f, 3.546f, + 3.611f, 4.306f, 4.988f, 6.868f, 8.553f, 9.496f, 10.531f, 11.159f, 12.868f, + 13.606f }, + { -29.534f, -30.029f, -29.163f, -31.596f, -34.114f, -39.683f, -44.829f, -46.058f, -48.824f, + -50.721f, -52.629f, -54.671f, -56.731f, -58.073f, -59.315f, -63.068f, -64.970f, -64.843f, + -65.098f, -65.021f, -63.929f, -62.671f, -61.307f, -56.349f, -53.688f, -51.285f, -49.583f, + -48.406f, -47.114f, -45.755f, -44.411f, -42.949f, -41.471f, -39.271f, -36.774f, -33.918f, + -31.124f, -28.313f, -25.720f, -22.692f, -19.764f, -16.427f, -13.083f, -9.748f, -5.326f, + -1.450f, 3.251f, 6.650f, 8.543f, 10.171f, 10.559f, 12.990f, 15.811f, 18.427f, + 20.773f, 23.436f, 25.633f, 27.211f, 28.565f, 29.413f, 30.521f, 31.478f, 35.302f, + 33.612f, 33.889f, 33.784f, 31.900f, 27.751f, 25.581f, 35.159f, 43.059f, 46.825f, + 46.773f, 45.278f, 42.253f, 37.978f, 32.306f, 31.888f, 30.541f, 27.966f, 27.291f, + 24.337f, 21.117f, 20.129f, 19.396f, 18.257f, 18.157f, 18.001f, 17.454f, 17.191f, + 17.179f, 16.540f, 15.918f, 15.928f, 14.760f, 13.185f, 12.447f, 11.294f, 10.004f, + 9.852f, 10.373f, 10.810f, 10.461f, 9.573f, 8.786f, 8.316f, 7.574f, 7.922f, + 8.930f, 8.277f, 5.877f, 5.021f, 4.161f, 3.460f, 1.778f, 0.807f, 6.091f, + -3.368f, -4.704f, -4.117f, -6.412f, -8.228f, -9.160f, -10.681f, -11.920f, -12.462f, + -13.027f, -12.960f, -12.744f, -12.532f, -11.958f, -11.204f, -10.039f, -8.375f, -5.967f, + -4.308f, -2.417f, 0.073f, 1.950f, 3.560f, 1.488f, -10.883f, 7.249f, 4.512f, + 4.922f, 5.264f, 3.368f, 5.277f, 7.250f, 7.675f, 7.217f, 6.442f, 6.047f, + 5.087f, 4.886f, 4.594f, 3.360f, 2.044f, 1.305f, 0.801f, 0.563f, 0.854f, + 0.072f, -0.083f, 1.437f, 2.494f, -0.312f, 0.733f, 2.333f, 2.976f, 3.182f, + 3.408f, 4.194f, 4.903f, 6.967f, 8.653f, 9.617f, 10.547f, 11.145f, 12.869f, + 13.606f }, + { -29.534f, -30.021f, -29.072f, -31.613f, -34.224f, -39.464f, -44.533f, -46.197f, -49.009f, + -50.822f, -52.679f, -54.792f, -56.453f, -57.896f, -59.193f, -63.019f, -64.707f, -65.444f, + -65.999f, -64.752f, -63.578f, -62.530f, -60.054f, -56.213f, -53.607f, -51.215f, -49.378f, + -47.971f, -46.571f, -45.399f, -44.276f, -42.662f, -41.198f, -39.021f, -36.163f, -33.524f, + -30.781f, -28.177f, -25.308f, -22.189f, -19.180f, -16.484f, -13.491f, -9.827f, -6.301f, + -3.012f, 1.282f, 4.316f, 7.167f, 7.309f, 9.340f, 11.647f, 14.216f, 16.886f, + 19.476f, 21.496f, 23.328f, 24.276f, 25.445f, 28.040f, 30.297f, 31.220f, 31.753f, + 32.529f, 33.530f, 33.650f, 32.711f, 31.212f, 29.865f, 26.933f, 24.113f, 25.508f, + 33.445f, 36.399f, 34.319f, 26.791f, 31.479f, 29.163f, 27.392f, 27.403f, 26.385f, + 23.511f, 21.440f, 18.840f, 17.900f, 17.942f, 18.228f, 17.997f, 17.491f, 17.012f, + 16.337f, 15.591f, 15.364f, 14.863f, 13.970f, 13.030f, 11.417f, 10.632f, 10.259f, + 9.948f, 9.939f, 10.448f, 11.337f, 10.189f, 8.875f, 8.430f, 7.657f, 8.268f, + 8.311f, 8.792f, 7.782f, 5.857f, 5.439f, 4.316f, 2.856f, 0.489f, 2.433f, + -2.762f, -2.896f, -4.252f, -6.323f, -8.015f, -9.610f, -10.991f, -12.137f, -12.770f, + -13.209f, -13.088f, -12.945f, -12.380f, -11.668f, -10.795f, -9.383f, -7.637f, -5.967f, + -3.904f, -1.781f, 0.468f, 2.555f, 4.062f, 2.041f, -9.613f, 6.050f, 6.463f, + 5.859f, 6.310f, 3.951f, 9.853f, 9.223f, 8.416f, 7.289f, 6.905f, 6.161f, + 5.404f, 4.602f, 4.446f, 3.446f, 2.103f, 1.081f, 0.681f, 0.879f, 0.960f, + 0.194f, -0.096f, 1.469f, 2.700f, 0.135f, 0.554f, 2.198f, 2.836f, 2.899f, + 3.232f, 4.064f, 4.840f, 7.057f, 8.747f, 9.728f, 10.556f, 11.133f, 12.871f, + 13.606f }, + { -29.534f, -30.015f, -28.986f, -31.622f, -34.338f, -39.252f, -44.342f, -46.338f, -49.151f, + -50.977f, -52.721f, -54.990f, -56.366f, -57.859f, -59.337f, -63.188f, -64.873f, -65.725f, + -66.291f, -64.472f, -63.259f, -61.839f, -58.970f, -56.108f, -53.521f, -51.051f, -49.114f, + -47.372f, -46.086f, -45.181f, -43.639f, -42.394f, -40.867f, -38.504f, -35.642f, -33.152f, + -30.630f, -27.938f, -24.689f, -21.603f, -18.938f, -16.573f, -13.552f, -10.329f, -7.432f, + -4.076f, -0.231f, 2.619f, 5.305f, 6.300f, 8.195f, 10.986f, 13.284f, 15.466f, + 17.876f, 19.630f, 20.789f, 22.706f, 24.469f, 26.409f, 26.626f, 28.495f, 29.799f, + 30.593f, 31.393f, 31.183f, 30.775f, 30.335f, 30.265f, 29.614f, 28.978f, 29.178f, + 25.923f, 23.597f, 22.275f, 26.920f, 33.265f, 27.730f, 26.498f, 26.326f, 24.513f, + 22.927f, 20.418f, 19.524f, 18.749f, 18.350f, 17.949f, 18.014f, 16.513f, 16.124f, + 15.212f, 14.987f, 14.793f, 13.853f, 13.632f, 13.061f, 12.013f, 11.155f, 10.756f, + 10.518f, 10.509f, 10.598f, 10.651f, 9.593f, 9.391f, 8.387f, 8.344f, 9.095f, + 8.895f, 8.262f, 8.195f, 6.903f, 6.194f, 5.236f, 3.522f, 4.631f, 4.801f, + -1.468f, -1.821f, -3.202f, -5.673f, -7.825f, -9.610f, -11.046f, -12.254f, -12.947f, + -13.218f, -12.942f, -12.589f, -11.986f, -11.523f, -10.544f, -8.952f, -6.968f, -5.681f, + -3.920f, -1.714f, 0.516f, 3.273f, 4.999f, 3.335f, -7.320f, 6.053f, 8.421f, + 6.925f, 6.495f, 4.728f, 11.218f, 9.458f, 9.036f, 8.164f, 7.193f, 6.257f, + 5.695f, 4.994f, 3.963f, 3.877f, 2.375f, 0.955f, 0.684f, 1.138f, 1.153f, + 0.257f, -0.254f, 1.542f, 2.830f, 0.341f, 0.619f, 2.131f, 2.731f, 2.719f, + 3.116f, 3.950f, 4.813f, 7.142f, 8.841f, 9.826f, 10.561f, 11.123f, 12.873f, + 13.606f }, + { -29.534f, -30.009f, -28.905f, -31.618f, -34.458f, -39.141f, -44.283f, -46.455f, -49.231f, + -51.111f, -52.698f, -55.045f, -56.500f, -57.925f, -59.440f, -63.206f, -65.518f, -65.729f, + -66.119f, -64.949f, -63.127f, -61.342f, -58.277f, -55.775f, -53.298f, -50.867f, -48.759f, + -46.899f, -45.540f, -44.776f, -43.148f, -41.904f, -40.459f, -37.896f, -35.136f, -32.770f, + -30.308f, -27.553f, -24.216f, -21.203f, -18.718f, -16.423f, -13.715f, -10.806f, -8.170f, + -5.132f, -2.080f, 1.941f, 4.240f, 5.450f, 6.892f, 9.932f, 12.820f, 14.884f, + 16.259f, 18.611f, 19.637f, 20.222f, 21.036f, 22.826f, 24.615f, 26.307f, 27.352f, + 27.955f, 27.727f, 27.596f, 27.728f, 27.858f, 28.108f, 28.229f, 28.912f, 29.072f, + 29.433f, 28.365f, 28.428f, 28.697f, 29.815f, 25.177f, 24.622f, 24.034f, 22.434f, + 21.643f, 20.273f, 19.120f, 17.557f, 17.163f, 17.773f, 17.359f, 15.771f, 15.832f, + 15.189f, 14.651f, 13.859f, 14.009f, 13.870f, 12.785f, 11.642f, 10.985f, 10.841f, + 11.135f, 11.793f, 10.475f, 10.356f, 9.598f, 9.004f, 9.270f, 8.676f, 9.331f, + 8.588f, 9.840f, 9.279f, 7.669f, 7.284f, 6.489f, 4.110f, 5.554f, 5.704f, + -0.605f, -0.747f, -2.764f, -5.348f, -7.858f, -9.777f, -11.160f, -12.478f, -13.062f, + -13.560f, -12.939f, -12.294f, -11.667f, -11.078f, -10.227f, -8.793f, -7.184f, -5.663f, + -3.601f, -1.309f, 1.003f, 3.596f, 5.592f, 4.840f, -4.679f, 3.450f, 10.150f, + 8.316f, 7.410f, 7.620f, 11.356f, 10.182f, 9.477f, 8.747f, 7.391f, 6.412f, + 6.084f, 5.477f, 4.115f, 3.868f, 2.438f, 0.690f, 0.849f, 1.055f, 1.417f, + 0.217f, -0.371f, 1.857f, 2.834f, 0.449f, 0.985f, 2.297f, 2.577f, 2.649f, + 3.064f, 3.876f, 4.828f, 7.219f, 8.939f, 9.904f, 10.563f, 11.118f, 12.875f, + 13.606f }, + { -29.534f, -30.005f, -28.829f, -31.598f, -34.587f, -39.192f, -44.336f, -46.519f, -49.242f, + -51.150f, -52.602f, -54.892f, -56.715f, -58.013f, -59.405f, -63.038f, -65.854f, -65.749f, + -65.872f, -65.538f, -63.204f, -60.985f, -57.902f, -55.634f, -52.996f, -50.710f, -48.429f, + -46.582f, -45.121f, -44.014f, -42.861f, -41.461f, -39.773f, -37.264f, -34.807f, -32.329f, + -29.699f, -26.950f, -23.846f, -20.977f, -18.710f, -16.326f, -13.875f, -11.463f, -8.669f, + -6.067f, -3.511f, 0.441f, 2.600f, 4.134f, 6.166f, 8.700f, 11.071f, 14.432f, + 16.238f, 17.194f, 17.223f, 18.921f, 19.963f, 21.450f, 22.536f, 23.337f, 24.443f, + 24.625f, 24.667f, 24.702f, 24.721f, 25.010f, 25.567f, 25.861f, 26.208f, 28.909f, + 27.200f, 27.420f, 26.158f, 26.001f, 29.363f, 24.284f, 23.012f, 21.939f, 21.455f, + 20.264f, 18.884f, 17.746f, 17.325f, 16.757f, 16.168f, 16.059f, 16.149f, 15.743f, + 15.218f, 14.552f, 13.856f, 13.629f, 13.083f, 12.233f, 11.619f, 11.123f, 11.454f, + 11.134f, 11.679f, 12.389f, 10.765f, 9.649f, 10.241f, 8.084f, 9.648f, 9.772f, + 8.994f, 9.376f, 8.965f, 8.268f, 7.889f, 6.980f, 4.451f, 7.464f, 3.034f, + 1.034f, -0.464f, -2.532f, -5.337f, -8.078f, -9.898f, -11.280f, -12.671f, -13.334f, + -13.566f, -12.824f, -12.256f, -11.590f, -10.896f, -10.157f, -8.684f, -7.109f, -5.258f, + -3.296f, -0.917f, 1.480f, 3.849f, 5.682f, 5.494f, -1.535f, 1.591f, 12.526f, + 9.878f, 9.224f, 9.670f, 11.759f, 10.607f, 10.141f, 9.151f, 7.938f, 6.530f, + 6.318f, 5.306f, 4.407f, 3.528f, 2.173f, 0.576f, 1.079f, 0.787f, 1.529f, + 0.319f, -0.285f, 2.392f, 2.674f, 0.729f, 1.556f, 2.721f, 2.408f, 2.677f, + 3.052f, 3.841f, 4.883f, 7.287f, 9.043f, 9.962f, 10.565f, 11.118f, 12.877f, + 13.606f }, + { -29.534f, -30.001f, -28.760f, -31.563f, -34.724f, -39.420f, -44.447f, -46.517f, -49.199f, + -51.072f, -52.492f, -54.708f, -56.820f, -58.104f, -59.287f, -63.046f, -65.498f, -65.753f, + -65.498f, -65.093f, -63.471f, -60.300f, -57.698f, -55.381f, -52.867f, -50.423f, -48.029f, + -46.129f, -44.709f, -43.412f, -42.550f, -41.085f, -39.040f, -36.683f, -34.449f, -31.844f, + -29.421f, -26.669f, -23.625f, -21.212f, -18.942f, -16.452f, -14.028f, -11.703f, -9.364f, + -6.824f, -4.233f, -0.709f, 1.620f, 4.322f, 5.962f, 7.767f, 11.886f, 12.791f, + 14.180f, 15.641f, 16.220f, 17.598f, 18.691f, 19.390f, 20.527f, 21.362f, 21.812f, + 21.516f, 21.544f, 21.770f, 22.188f, 22.643f, 22.887f, 22.938f, 23.238f, 24.748f, + 24.913f, 23.869f, 22.749f, 22.523f, 23.556f, 21.463f, 20.494f, 20.408f, 19.877f, + 18.856f, 17.923f, 16.583f, 16.775f, 16.807f, 16.640f, 16.367f, 16.419f, 14.855f, + 14.624f, 14.270f, 14.320f, 13.566f, 13.174f, 12.452f, 12.074f, 11.794f, 12.288f, + 11.642f, 11.979f, 11.787f, 11.546f, 10.420f, 10.513f, 9.681f, 9.901f, 9.702f, + 9.811f, 9.934f, 8.852f, 8.965f, 8.422f, 7.040f, 5.560f, 6.138f, 5.272f, + 1.695f, 0.366f, -2.379f, -5.507f, -8.036f, -10.020f, -11.366f, -12.507f, -13.247f, + -13.619f, -13.021f, -12.222f, -11.311f, -10.612f, -9.893f, -8.568f, -6.945f, -4.673f, + -2.906f, -0.752f, 1.341f, 3.903f, 5.965f, 6.550f, 2.120f, -2.052f, 13.938f, + 10.879f, 10.333f, 11.579f, 11.974f, 10.890f, 10.752f, 9.732f, 8.451f, 6.910f, + 6.529f, 5.281f, 4.308f, 3.665f, 1.995f, 0.599f, 1.046f, 0.756f, 1.306f, + 0.424f, -0.200f, 2.704f, 2.304f, 1.116f, 2.065f, 3.255f, 2.352f, 2.756f, + 3.042f, 3.830f, 4.967f, 7.346f, 9.151f, 9.998f, 10.569f, 11.124f, 12.879f, + 13.606f }, + { -29.534f, -29.999f, -28.696f, -31.514f, -34.867f, -39.795f, -44.557f, -46.458f, -49.132f, + -50.916f, -52.450f, -54.724f, -56.712f, -58.238f, -59.030f, -63.281f, -65.051f, -65.579f, + -65.140f, -64.146f, -63.427f, -59.741f, -57.625f, -55.194f, -52.756f, -50.305f, -47.732f, + -45.784f, -44.377f, -42.973f, -42.086f, -40.584f, -38.419f, -36.388f, -34.031f, -31.389f, + -29.104f, -26.353f, -23.836f, -21.275f, -18.805f, -16.403f, -14.033f, -11.918f, -9.621f, + -7.619f, -4.631f, -2.159f, 0.577f, 3.190f, 5.485f, 9.603f, 12.152f, 11.671f, + 13.666f, 14.462f, 15.522f, 15.907f, 16.718f, 17.480f, 18.629f, 19.169f, 19.191f, + 19.103f, 19.580f, 19.419f, 19.649f, 19.899f, 20.548f, 20.290f, 21.093f, 20.970f, + 21.162f, 20.172f, 19.884f, 19.891f, 19.473f, 19.341f, 18.350f, 18.546f, 18.306f, + 17.422f, 17.195f, 16.814f, 16.870f, 16.902f, 16.701f, 16.297f, 15.494f, 14.319f, + 14.752f, 14.425f, 13.939f, 13.678f, 13.630f, 13.114f, 12.844f, 12.165f, 12.251f, + 12.274f, 12.247f, 11.941f, 11.831f, 11.591f, 11.036f, 10.393f, 10.315f, 10.141f, + 8.766f, 8.979f, 9.479f, 9.188f, 8.918f, 6.557f, 7.289f, 14.278f, 4.606f, + 2.239f, 0.845f, -2.383f, -5.767f, -8.121f, -10.111f, -11.273f, -12.235f, -13.244f, + -13.850f, -13.003f, -12.203f, -11.409f, -10.830f, -10.027f, -8.577f, -6.906f, -4.545f, + -2.735f, -0.394f, 2.038f, 4.099f, 6.167f, 7.376f, 5.491f, -2.751f, 13.531f, + 12.593f, 12.166f, 12.796f, 12.168f, 11.525f, 11.455f, 10.493f, 9.223f, 7.745f, + 6.664f, 5.250f, 4.882f, 4.071f, 2.074f, 0.577f, 0.867f, 0.936f, 0.907f, + 0.247f, -0.249f, 2.412f, 1.742f, 1.371f, 2.317f, 3.686f, 2.487f, 2.791f, + 3.005f, 3.816f, 5.064f, 7.400f, 9.260f, 10.014f, 10.577f, 11.137f, 12.882f, + 13.606f }, + { -29.534f, -29.997f, -28.640f, -31.456f, -35.014f, -40.257f, -44.617f, -46.369f, -49.072f, + -50.748f, -52.505f, -54.955f, -56.436f, -58.442f, -58.685f, -63.369f, -65.128f, -65.410f, + -65.138f, -63.899f, -62.770f, -59.617f, -57.513f, -55.164f, -52.481f, -50.166f, -47.581f, + -45.368f, -43.936f, -42.785f, -41.450f, -39.778f, -37.869f, -36.017f, -33.201f, -31.032f, + -28.856f, -26.153f, -23.840f, -21.147f, -18.581f, -16.099f, -14.109f, -12.078f, -10.253f, + -8.038f, -5.249f, -2.479f, 0.391f, 2.453f, 4.779f, 8.322f, 8.911f, 11.225f, + 12.189f, 12.918f, 13.615f, 14.353f, 15.034f, 15.682f, 16.451f, 17.089f, 17.196f, + 17.470f, 17.278f, 16.956f, 17.218f, 17.618f, 17.890f, 17.501f, 17.841f, 17.860f, + 17.657f, 17.385f, 17.031f, 17.225f, 17.016f, 17.043f, 16.895f, 16.836f, 17.248f, + 16.759f, 16.860f, 16.671f, 17.500f, 17.006f, 16.237f, 15.845f, 15.298f, 15.740f, + 14.615f, 14.283f, 13.999f, 13.909f, 13.498f, 13.117f, 13.183f, 13.278f, 12.805f, + 13.164f, 12.675f, 12.554f, 12.348f, 11.619f, 10.965f, 11.008f, 9.456f, 9.434f, + 9.083f, 8.656f, 8.974f, 9.694f, 8.804f, 6.073f, 12.246f, 7.444f, 3.026f, + 2.862f, 0.583f, -2.528f, -5.534f, -8.190f, -10.013f, -11.182f, -11.845f, -13.177f, + -13.821f, -13.117f, -12.355f, -11.676f, -10.894f, -9.816f, -8.199f, -6.886f, -4.742f, + -2.641f, -0.434f, 1.764f, 4.314f, 6.573f, 8.040f, 7.551f, -0.422f, 9.942f, + 15.037f, 13.905f, 12.973f, 12.983f, 12.043f, 11.807f, 11.396f, 9.913f, 8.485f, + 6.815f, 5.358f, 5.672f, 4.429f, 2.175f, 0.816f, 0.914f, 0.934f, 0.528f, + -0.010f, -0.274f, 1.664f, 1.136f, 1.460f, 2.394f, 3.887f, 2.733f, 2.672f, + 2.937f, 3.782f, 5.159f, 7.458f, 9.362f, 10.013f, 10.590f, 11.157f, 12.885f, + 13.606f }, + { -29.534f, -29.997f, -28.590f, -31.393f, -35.162f, -40.728f, -44.605f, -46.286f, -49.030f, + -50.619f, -52.612f, -55.151f, -56.149f, -58.689f, -58.708f, -63.232f, -65.443f, -65.406f, + -65.165f, -64.068f, -62.015f, -59.576f, -57.319f, -54.806f, -52.426f, -49.934f, -47.499f, + -44.868f, -43.321f, -42.407f, -40.845f, -39.322f, -37.409f, -35.312f, -32.635f, -30.871f, + -28.381f, -25.957f, -23.492f, -21.120f, -18.552f, -16.218f, -14.180f, -12.264f, -10.306f, + -8.317f, -5.548f, -2.583f, 0.061f, 2.349f, 5.946f, 5.897f, 8.078f, 9.967f, + 10.778f, 11.571f, 12.112f, 12.412f, 13.064f, 13.880f, 14.902f, 15.090f, 15.165f, + 15.176f, 15.192f, 15.218f, 15.470f, 15.699f, 15.442f, 15.548f, 15.811f, 15.822f, + 15.684f, 15.697f, 15.720f, 15.437f, 15.642f, 15.458f, 15.410f, 16.646f, 15.843f, + 15.944f, 16.576f, 16.845f, 16.701f, 16.819f, 16.847f, 15.783f, 15.229f, 14.891f, + 14.374f, 14.657f, 14.207f, 13.892f, 13.720f, 14.072f, 14.138f, 13.498f, 13.089f, + 13.434f, 13.280f, 13.343f, 12.370f, 11.692f, 11.208f, 9.788f, 9.576f, 9.011f, + 8.297f, 8.232f, 8.691f, 9.314f, 8.581f, 6.764f, 14.056f, 3.079f, 3.716f, + 2.688f, 0.220f, -2.802f, -5.694f, -8.060f, -9.946f, -11.025f, -11.999f, -13.084f, + -13.286f, -13.190f, -12.264f, -11.671f, -11.017f, -9.510f, -8.228f, -6.802f, -4.645f, + -2.510f, -0.525f, 1.851f, 4.357f, 6.663f, 8.493f, 8.771f, 2.441f, 3.704f, + 17.563f, 14.269f, 13.692f, 13.435f, 12.896f, 12.495f, 11.787f, 10.516f, 9.000f, + 7.167f, 5.890f, 6.309f, 4.894f, 2.235f, 1.145f, 0.899f, 0.628f, 0.165f, + -0.074f, -0.206f, 0.953f, 0.614f, 1.449f, 2.476f, 3.852f, 2.907f, 2.346f, + 2.853f, 3.725f, 5.242f, 7.531f, 9.453f, 9.998f, 10.610f, 11.184f, 12.889f, + 13.606f }, + { -29.534f, -29.997f, -28.548f, -31.332f, -35.311f, -41.138f, -44.525f, -46.238f, -48.995f, + -50.543f, -52.697f, -55.017f, -56.011f, -58.892f, -59.536f, -63.317f, -65.353f, -65.333f, + -64.767f, -63.800f, -61.656f, -59.360f, -57.113f, -54.418f, -52.427f, -49.729f, -47.223f, + -44.559f, -42.838f, -42.001f, -40.405f, -38.815f, -36.816f, -34.662f, -32.251f, -30.497f, + -28.039f, -25.550f, -23.185f, -21.094f, -18.356f, -16.107f, -14.155f, -11.956f, -10.482f, + -8.553f, -5.608f, -2.705f, -0.937f, 3.910f, 2.689f, 5.801f, 7.188f, 8.161f, + 9.398f, 10.354f, 10.586f, 11.160f, 11.658f, 12.136f, 13.523f, 13.599f, 13.397f, + 13.375f, 13.557f, 13.805f, 14.182f, 14.142f, 13.642f, 14.107f, 14.545f, 13.548f, + 14.237f, 14.117f, 13.654f, 13.749f, 14.213f, 13.691f, 14.781f, 14.603f, 14.939f, + 15.204f, 16.291f, 16.234f, 16.103f, 16.966f, 17.106f, 15.492f, 15.030f, 14.487f, + 15.143f, 14.968f, 14.630f, 14.866f, 14.027f, 14.465f, 14.240f, 14.011f, 13.103f, + 13.314f, 14.819f, 13.063f, 11.845f, 11.122f, 10.022f, 9.560f, 9.252f, 8.348f, + 7.707f, 7.984f, 8.613f, 9.156f, 8.676f, 8.382f, 9.571f, 3.933f, 4.162f, + 2.581f, -0.223f, -3.281f, -5.973f, -8.320f, -9.728f, -10.927f, -12.115f, -13.120f, + -13.099f, -12.961f, -12.175f, -11.606f, -11.350f, -9.948f, -8.613f, -7.189f, -4.850f, + -2.798f, -0.541f, 1.805f, 4.186f, 6.646f, 8.610f, 9.708f, 5.775f, 0.037f, + 17.655f, 15.527f, 14.288f, 14.052f, 13.610f, 12.832f, 11.887f, 10.994f, 9.666f, + 7.774f, 6.395f, 6.706f, 5.090f, 2.521f, 1.372f, 0.831f, 0.296f, -0.104f, + -0.038f, -0.156f, 0.575f, 0.113f, 1.182f, 2.519f, 3.627f, 2.890f, 1.873f, + 2.765f, 3.661f, 5.310f, 7.629f, 9.527f, 9.972f, 10.637f, 11.219f, 12.892f, + 13.606f }, + { -29.534f, -29.999f, -28.514f, -31.281f, -35.459f, -41.436f, -44.406f, -46.234f, -48.942f, + -50.500f, -52.714f, -54.493f, -56.053f, -58.902f, -60.873f, -63.862f, -64.865f, -65.068f, + -64.309f, -63.343f, -61.659f, -59.038f, -56.649f, -54.276f, -52.141f, -49.484f, -46.981f, + -44.145f, -42.416f, -41.442f, -39.789f, -38.258f, -36.057f, -33.900f, -32.049f, -29.966f, + -27.679f, -25.186f, -23.088f, -20.930f, -18.355f, -15.838f, -14.004f, -12.017f, -10.648f, + -8.439f, -5.565f, -3.226f, 0.115f, 1.915f, 3.090f, 4.965f, 6.351f, 7.469f, + 8.507f, 9.004f, 9.270f, 9.995f, 10.819f, 11.424f, 11.776f, 11.729f, 12.185f, + 12.000f, 11.849f, 12.010f, 12.353f, 12.618f, 12.550f, 13.518f, 13.131f, 12.427f, + 13.297f, 12.081f, 12.392f, 12.892f, 12.806f, 13.316f, 14.439f, 14.766f, 15.501f, + 14.988f, 14.935f, 15.017f, 15.914f, 16.460f, 16.573f, 15.242f, 15.090f, 15.010f, + 15.902f, 15.114f, 15.291f, 14.817f, 14.947f, 15.261f, 15.251f, 14.404f, 14.538f, + 13.443f, 13.388f, 12.909f, 10.910f, 10.512f, 9.540f, 8.752f, 8.295f, 7.944f, + 7.741f, 7.864f, 8.757f, 9.080f, 8.335f, 10.019f, 6.925f, 3.983f, 3.646f, + 1.650f, -0.926f, -3.896f, -6.464f, -8.256f, -9.470f, -10.891f, -12.482f, -13.176f, + -13.332f, -13.222f, -12.245f, -11.906f, -11.453f, -10.466f, -8.845f, -7.512f, -5.238f, + -3.107f, -0.469f, 1.729f, 4.096f, 6.511f, 8.728f, 10.151f, 8.211f, 0.443f, + 16.218f, 16.533f, 14.706f, 14.568f, 14.098f, 13.422f, 12.096f, 11.329f, 10.394f, + 8.633f, 6.845f, 6.806f, 5.257f, 3.079f, 1.986f, 1.372f, 0.098f, -0.131f, + 0.080f, -0.180f, 0.413f, -0.484f, 0.444f, 2.295f, 3.252f, 2.723f, 1.398f, + 2.667f, 3.617f, 5.365f, 7.757f, 9.582f, 9.940f, 10.671f, 11.262f, 12.897f, + 13.606f }, + { -29.534f, -30.001f, -28.489f, -31.246f, -35.609f, -41.603f, -44.284f, -46.263f, -48.853f, + -50.461f, -52.677f, -53.809f, -56.132f, -58.597f, -61.891f, -64.425f, -64.530f, -64.853f, + -64.167f, -63.174f, -61.799f, -58.915f, -56.111f, -54.146f, -51.927f, -49.352f, -46.884f, + -43.816f, -42.178f, -40.745f, -39.186f, -37.487f, -35.212f, -33.257f, -31.310f, -29.515f, + -27.170f, -24.903f, -22.888f, -20.535f, -18.449f, -16.124f, -13.790f, -12.196f, -10.457f, + -8.303f, -5.456f, -3.323f, -0.136f, 0.374f, 2.640f, 4.197f, 5.185f, 6.096f, + 6.942f, 7.700f, 7.973f, 8.859f, 9.588f, 10.012f, 10.160f, 10.191f, 10.386f, + 10.224f, 10.104f, 10.416f, 11.134f, 11.797f, 12.162f, 12.284f, 12.307f, 11.637f, + 13.415f, 11.675f, 11.584f, 11.823f, 12.582f, 13.776f, 14.137f, 14.984f, 15.160f, + 14.781f, 14.564f, 14.406f, 14.876f, 16.287f, 15.604f, 15.178f, 14.959f, 14.825f, + 15.523f, 15.605f, 15.764f, 15.526f, 16.270f, 15.927f, 15.140f, 13.802f, 14.328f, + 13.743f, 12.890f, 11.766f, 10.254f, 9.543f, 8.505f, 8.041f, 7.627f, 6.987f, + 7.246f, 7.590f, 8.591f, 8.804f, 7.876f, 10.649f, 4.725f, 3.791f, 2.883f, + 1.110f, -1.526f, -4.470f, -6.811f, -8.498f, -8.932f, -11.209f, -12.867f, -13.612f, + -13.846f, -13.661f, -12.714f, -12.524f, -11.978f, -11.076f, -9.501f, -8.008f, -5.702f, + -3.171f, -0.315f, 1.855f, 3.897f, 6.234f, 8.430f, 10.431f, 9.685f, 2.178f, + 12.575f, 16.692f, 15.000f, 14.895f, 14.500f, 13.942f, 12.883f, 11.781f, 10.852f, + 9.546f, 7.453f, 7.198f, 5.577f, 3.599f, 2.890f, 2.435f, -0.156f, -0.080f, + 0.371f, -0.340f, 0.150f, -1.065f, -0.559f, 1.739f, 2.772f, 2.530f, 1.051f, + 2.535f, 3.614f, 5.410f, 7.908f, 9.621f, 9.904f, 10.710f, 11.310f, 12.902f, + 13.606f }, + { -29.534f, -30.005f, -28.473f, -31.233f, -35.765f, -41.651f, -44.193f, -46.300f, -48.732f, + -50.412f, -52.614f, -53.286f, -56.028f, -58.033f, -62.222f, -64.479f, -64.565f, -64.759f, + -64.000f, -62.969f, -61.818f, -59.012f, -55.793f, -53.885f, -51.821f, -49.234f, -46.553f, + -43.656f, -41.628f, -40.104f, -38.632f, -36.740f, -34.500f, -32.598f, -30.446f, -28.901f, + -26.635f, -24.520f, -22.451f, -20.296f, -18.047f, -16.145f, -13.918f, -12.233f, -10.367f, + -8.209f, -5.589f, -2.865f, -1.700f, 0.326f, 1.878f, 3.376f, 4.356f, 5.502f, + 6.011f, 6.322f, 6.940f, 7.666f, 8.268f, 8.380f, 8.551f, 8.644f, 8.736f, + 8.802f, 8.993f, 9.914f, 10.914f, 11.302f, 11.260f, 11.710f, 11.269f, 11.046f, + 11.498f, 11.322f, 10.670f, 10.509f, 11.718f, 13.173f, 14.438f, 14.682f, 13.987f, + 13.077f, 14.165f, 13.788f, 14.756f, 14.869f, 15.133f, 14.939f, 14.418f, 14.791f, + 15.915f, 15.846f, 15.321f, 16.396f, 16.865f, 15.882f, 15.860f, 14.896f, 13.795f, + 12.894f, 12.491f, 10.783f, 9.732f, 8.488f, 7.538f, 7.126f, 6.974f, 6.368f, + 6.597f, 7.277f, 8.253f, 8.088f, 7.397f, 12.384f, 4.865f, 3.786f, 2.673f, + 0.463f, -1.964f, -4.362f, -6.938f, -8.556f, -9.935f, -11.871f, -13.244f, -13.923f, + -14.287f, -14.204f, -13.358f, -13.027f, -12.278f, -11.100f, -9.981f, -8.090f, -5.871f, + -3.367f, -0.529f, 1.703f, 3.672f, 5.730f, 8.099f, 10.464f, 10.756f, 4.362f, + 8.328f, 17.346f, 15.273f, 15.056f, 15.326f, 14.884f, 13.431f, 12.261f, 11.345f, + 10.506f, 8.305f, 7.640f, 5.933f, 4.142f, 3.599f, 3.438f, -0.522f, -0.313f, + 0.578f, -0.638f, -0.436f, -1.400f, -1.244f, 1.095f, 2.239f, 2.350f, 0.866f, + 2.346f, 3.661f, 5.445f, 8.069f, 9.645f, 9.869f, 10.755f, 11.365f, 12.907f, + 13.606f }, + { -29.534f, -30.009f, -28.466f, -31.247f, -35.928f, -41.621f, -44.152f, -46.319f, -48.607f, + -50.360f, -52.531f, -53.087f, -55.636f, -57.439f, -62.307f, -64.127f, -64.655f, -64.559f, + -63.612f, -62.521f, -61.649f, -58.990f, -55.670f, -53.713f, -51.740f, -48.987f, -46.242f, + -43.322f, -41.344f, -39.621f, -37.890f, -35.961f, -33.880f, -31.969f, -29.983f, -28.068f, + -26.072f, -24.074f, -21.947f, -19.874f, -18.124f, -16.092f, -14.360f, -12.337f, -10.143f, + -8.006f, -4.111f, -3.856f, -2.175f, -0.595f, 1.188f, 2.940f, 4.321f, 4.897f, + 5.061f, 5.429f, 6.261f, 6.763f, 6.968f, 6.908f, 7.000f, 7.183f, 7.436f, + 7.465f, 8.307f, 9.048f, 9.712f, 9.943f, 10.848f, 10.909f, 10.228f, 10.461f, + 10.379f, 9.954f, 10.190f, 9.769f, 10.399f, 11.696f, 12.642f, 12.250f, 12.574f, + 12.305f, 12.390f, 13.133f, 14.275f, 14.340f, 14.254f, 14.566f, 14.688f, 15.267f, + 15.603f, 15.934f, 15.959f, 16.671f, 15.867f, 16.538f, 16.757f, 15.252f, 13.498f, + 12.845f, 11.141f, 9.932f, 9.100f, 7.712f, 6.545f, 6.223f, 5.860f, 6.277f, + 6.800f, 7.514f, 7.861f, 7.185f, 7.611f, 7.473f, 4.462f, 3.516f, 2.292f, + 0.278f, -2.505f, -5.553f, -7.932f, -9.469f, -10.672f, -12.526f, -13.693f, -14.339f, + -14.615f, -14.687f, -13.994f, -13.399f, -12.610f, -11.095f, -10.175f, -8.318f, -6.055f, + -3.878f, -1.179f, 1.128f, 3.291f, 5.446f, 7.644f, 10.350f, 11.341f, 6.671f, + 7.172f, 17.659f, 15.663f, 14.851f, 15.427f, 15.139f, 14.513f, 12.799f, 11.740f, + 11.028f, 9.233f, 8.024f, 6.423f, 4.754f, 4.065f, 4.099f, -0.742f, -0.846f, + 0.442f, -0.792f, -1.390f, -1.544f, -1.285f, 0.605f, 1.678f, 2.069f, 0.769f, + 2.111f, 3.744f, 5.467f, 8.219f, 9.662f, 9.836f, 10.804f, 11.426f, 12.913f, + 13.606f }, + { -29.534f, -30.015f, -28.468f, -31.290f, -36.102f, -41.567f, -44.169f, -46.310f, -48.511f, + -50.323f, -52.415f, -53.119f, -55.045f, -57.021f, -62.618f, -63.864f, -64.545f, -64.245f, + -63.299f, -62.189f, -61.418f, -58.785f, -55.927f, -53.806f, -51.559f, -48.689f, -45.868f, + -42.987f, -40.967f, -39.033f, -37.334f, -35.186f, -33.315f, -31.425f, -29.590f, -27.315f, + -25.582f, -23.596f, -21.478f, -19.732f, -18.453f, -16.375f, -14.369f, -12.196f, -9.906f, + -8.089f, -5.520f, -4.498f, -2.465f, -0.947f, 0.935f, 2.619f, 3.895f, 4.021f, + 3.902f, 4.791f, 5.282f, 5.611f, 5.825f, 5.727f, 5.591f, 5.805f, 6.268f, + 6.763f, 7.306f, 7.906f, 8.248f, 8.969f, 9.952f, 11.038f, 9.328f, 10.440f, + 8.893f, 9.351f, 9.184f, 9.000f, 9.137f, 9.529f, 10.315f, 10.760f, 10.868f, + 11.198f, 12.197f, 12.493f, 13.020f, 14.005f, 13.950f, 14.373f, 15.265f, 15.314f, + 16.312f, 16.111f, 16.739f, 16.788f, 16.883f, 16.339f, 15.812f, 15.250f, 14.126f, + 11.550f, 10.242f, 9.234f, 7.946f, 6.870f, 5.920f, 5.333f, 5.146f, 5.562f, + 6.844f, 7.480f, 7.547f, 6.429f, 14.262f, 4.126f, 3.643f, 3.271f, 1.704f, + -0.608f, -3.404f, -6.560f, -8.706f, -10.315f, -11.323f, -12.959f, -14.235f, -14.704f, + -15.019f, -14.975f, -14.440f, -13.849f, -13.099f, -11.593f, -10.356f, -8.706f, -6.620f, + -4.233f, -1.960f, 0.355f, 2.900f, 5.104f, 7.369f, 10.006f, 11.373f, 8.912f, + 7.743f, 17.103f, 16.934f, 14.329f, 15.425f, 15.360f, 15.195f, 13.678f, 11.882f, + 10.899f, 9.817f, 8.565f, 6.702f, 5.193f, 4.153f, 4.186f, -0.723f, -1.246f, + 0.161f, -0.694f, -2.636f, -1.824f, -0.954f, 0.225f, 1.078f, 1.527f, 0.658f, + 1.883f, 3.837f, 5.470f, 8.334f, 9.678f, 9.809f, 10.855f, 11.490f, 12.920f, + 13.606f }, + { -29.534f, -30.021f, -28.480f, -31.360f, -36.285f, -41.544f, -44.235f, -46.277f, -48.459f, + -50.319f, -52.277f, -53.167f, -54.444f, -56.778f, -63.010f, -63.878f, -64.316f, -64.020f, + -63.095f, -62.036f, -61.054f, -58.531f, -56.223f, -53.673f, -51.103f, -48.573f, -45.439f, + -42.807f, -40.330f, -38.518f, -36.717f, -34.569f, -32.616f, -30.706f, -29.005f, -26.928f, + -25.156f, -23.095f, -21.026f, -20.449f, -18.113f, -16.451f, -14.466f, -11.998f, -9.843f, + -7.650f, -6.674f, -4.328f, -2.630f, -1.143f, 0.784f, 2.382f, 3.121f, 3.066f, + 3.144f, 3.433f, 4.003f, 4.522f, 4.429f, 4.142f, 4.236f, 4.461f, 4.829f, + 5.417f, 6.045f, 6.588f, 6.677f, 7.535f, 8.564f, 8.745f, 8.802f, 9.297f, + 7.844f, 8.056f, 8.370f, 8.234f, 8.161f, 8.815f, 9.295f, 9.232f, 9.670f, + 9.483f, 10.443f, 11.596f, 12.215f, 13.409f, 14.281f, 14.470f, 15.386f, 15.473f, + 16.641f, 16.859f, 17.355f, 17.924f, 17.487f, 16.626f, 16.201f, 14.511f, 12.869f, + 11.525f, 9.761f, 8.298f, 7.531f, 6.038f, 5.022f, 4.500f, 4.495f, 5.499f, + 6.946f, 7.276f, 6.597f, 6.071f, 10.866f, 4.229f, 3.695f, 2.769f, 0.862f, + -1.835f, -4.803f, -7.513f, -9.586f, -11.165f, -12.390f, -13.502f, -14.755f, -15.197f, + -15.369f, -15.201f, -14.914f, -13.748f, -13.097f, -11.974f, -10.721f, -9.476f, -7.390f, + -5.001f, -2.779f, -0.294f, 2.141f, 4.606f, 7.123f, 9.551f, 10.988f, 10.478f, + 7.889f, 15.502f, 16.344f, 14.563f, 15.362f, 15.355f, 14.803f, 13.750f, 12.085f, + 10.576f, 9.681f, 8.828f, 7.110f, 5.484f, 3.940f, 3.801f, -0.666f, -1.196f, + -0.107f, -0.935f, -3.945f, -2.402f, -0.740f, -0.207f, 0.480f, 0.715f, 0.492f, + 1.725f, 3.906f, 5.452f, 8.395f, 9.699f, 9.791f, 10.907f, 11.557f, 12.928f, + 13.606f }, + { -29.534f, -30.028f, -28.502f, -31.455f, -36.474f, -41.594f, -44.333f, -46.241f, -48.436f, + -50.353f, -52.182f, -53.087f, -53.945f, -56.576f, -63.122f, -63.908f, -64.060f, -63.849f, + -62.809f, -61.763f, -60.581f, -58.428f, -56.099f, -53.269f, -50.726f, -48.398f, -45.148f, + -42.266f, -39.903f, -38.035f, -35.998f, -34.047f, -32.103f, -30.005f, -28.179f, -26.411f, + -24.799f, -22.862f, -21.005f, -20.810f, -18.188f, -16.526f, -14.282f, -11.878f, -9.753f, + -6.929f, -6.989f, -4.807f, -3.599f, -1.474f, 0.147f, 1.346f, 1.858f, 1.868f, + 1.718f, 2.200f, 2.724f, 3.035f, 2.955f, 3.040f, 3.083f, 3.118f, 3.607f, + 4.102f, 4.495f, 5.103f, 5.609f, 6.027f, 7.560f, 6.819f, 9.629f, 7.585f, + 7.428f, 7.227f, 7.285f, 7.307f, 7.427f, 8.007f, 8.011f, 8.028f, 8.267f, + 12.384f, 9.589f, 10.873f, 11.638f, 12.867f, 13.715f, 14.750f, 15.380f, 15.820f, + 16.411f, 17.205f, 18.362f, 17.158f, 17.298f, 16.171f, 15.287f, 13.499f, 12.138f, + 11.248f, 8.587f, 7.538f, 6.146f, 4.954f, 3.971f, 3.440f, 4.165f, 5.254f, + 6.843f, 7.269f, 5.368f, 12.054f, 6.970f, 2.983f, 3.761f, 2.258f, -0.197f, + -3.227f, -6.090f, -8.644f, -10.566f, -11.992f, -13.260f, -14.239f, -15.020f, -15.623f, + -15.660f, -15.778f, -15.474f, -14.762f, -13.346f, -12.286f, -11.258f, -10.083f, -7.990f, + -5.710f, -3.530f, -1.021f, 1.407f, 4.025f, 6.753f, 8.750f, 10.519f, 11.042f, + 8.082f, 14.369f, 14.376f, 15.534f, 15.120f, 15.000f, 14.665f, 13.656f, 12.202f, + 10.959f, 9.695f, 8.595f, 7.475f, 5.782f, 4.072f, 3.315f, -0.680f, -0.984f, + -0.586f, -2.002f, -4.924f, -3.129f, -0.877f, -0.646f, 0.028f, -0.168f, 0.310f, + 1.673f, 3.929f, 5.418f, 8.394f, 9.730f, 9.784f, 10.960f, 11.626f, 12.937f, + 13.606f }, + { -29.534f, -30.037f, -28.533f, -31.568f, -36.662f, -41.733f, -44.441f, -46.216f, -48.397f, + -50.408f, -52.205f, -52.909f, -53.552f, -56.343f, -63.008f, -63.726f, -63.745f, -63.565f, + -62.528f, -61.399f, -60.397f, -58.533f, -55.876f, -52.943f, -50.486f, -47.995f, -44.996f, + -41.825f, -39.570f, -37.379f, -35.332f, -33.379f, -31.476f, -29.606f, -27.381f, -25.910f, + -24.295f, -22.494f, -21.983f, -20.127f, -18.320f, -16.317f, -13.925f, -11.922f, -9.746f, + -7.877f, -6.721f, -5.343f, -3.578f, -1.460f, -0.271f, 0.660f, 0.692f, 0.767f, + 1.033f, 1.457f, 1.772f, 1.990f, 2.140f, 1.795f, 2.042f, 2.187f, 2.182f, + 2.366f, 3.099f, 3.588f, 4.421f, 4.626f, 4.861f, 6.303f, 6.824f, 6.163f, + 6.795f, 6.681f, 6.688f, 7.080f, 6.923f, 7.197f, 7.311f, 7.880f, 7.983f, + 8.688f, 9.515f, 10.574f, 11.770f, 12.685f, 13.999f, 14.580f, 14.840f, 15.763f, + 16.385f, 17.445f, 17.966f, 16.764f, 16.124f, 15.408f, 14.209f, 12.929f, 11.345f, + 9.630f, 8.024f, 6.448f, 5.249f, 3.825f, 2.835f, 2.699f, 3.726f, 4.796f, + 5.600f, 6.118f, 6.130f, 15.271f, 1.632f, 2.624f, 3.157f, 1.286f, -1.774f, + -4.598f, -7.283f, -9.577f, -11.371f, -12.749f, -13.953f, -14.911f, -15.533f, -16.083f, + -16.044f, -16.184f, -15.751f, -15.181f, -14.244f, -13.131f, -11.909f, -10.563f, -8.599f, + -6.518f, -4.122f, -1.593f, 0.527f, 3.380f, 6.079f, 7.904f, 10.010f, 11.369f, + 8.359f, 13.154f, 13.069f, 15.050f, 15.169f, 15.285f, 14.991f, 13.863f, 11.863f, + 11.575f, 10.209f, 8.599f, 7.417f, 6.370f, 5.005f, 2.864f, -0.666f, -1.060f, + -1.342f, -3.376f, -5.340f, -3.840f, -1.344f, -0.902f, -0.151f, -0.862f, 0.173f, + 1.699f, 3.905f, 5.381f, 8.335f, 9.771f, 9.792f, 11.013f, 11.696f, 12.946f, + 13.606f }, + { -29.534f, -30.046f, -28.574f, -31.691f, -36.837f, -41.952f, -44.535f, -46.205f, -48.289f, + -50.453f, -52.359f, -52.785f, -53.276f, -56.119f, -62.892f, -63.419f, -63.424f, -63.220f, + -62.305f, -61.181f, -60.498f, -58.356f, -55.654f, -52.571f, -50.192f, -47.612f, -44.833f, + -41.529f, -39.082f, -36.854f, -34.814f, -32.863f, -30.902f, -29.000f, -26.874f, -25.380f, + -23.772f, -22.085f, -22.123f, -19.645f, -18.145f, -15.964f, -13.666f, -11.543f, -9.188f, + -8.394f, -7.107f, -5.901f, -4.149f, -2.317f, -0.757f, 0.046f, -0.257f, -0.209f, + -0.115f, 0.370f, 1.065f, 1.145f, 1.084f, 1.238f, 1.283f, 1.115f, 1.069f, + 1.560f, 1.917f, 2.672f, 3.387f, 3.480f, 4.040f, 4.910f, 5.211f, 5.086f, + 5.708f, 6.217f, 6.647f, 6.234f, 6.361f, 6.678f, 6.652f, 6.908f, 7.305f, + 7.953f, 9.202f, 10.660f, 11.874f, 12.521f, 13.587f, 14.443f, 15.044f, 15.757f, + 16.625f, 16.294f, 16.306f, 15.965f, 15.349f, 14.983f, 13.334f, 11.842f, 10.098f, + 8.585f, 7.066f, 5.644f, 4.634f, 2.915f, 1.931f, 1.871f, 2.988f, 3.560f, + 3.458f, 13.203f, 18.149f, 9.833f, -0.706f, 2.682f, 2.397f, -0.141f, -3.321f, + -6.006f, -8.386f, -10.472f, -12.115f, -13.173f, -14.127f, -15.119f, -15.899f, -16.329f, + -16.697f, -16.996f, -16.735f, -15.891f, -14.756f, -13.770f, -12.564f, -11.176f, -9.378f, + -7.454f, -4.932f, -2.433f, -0.217f, 2.638f, 5.144f, 7.186f, 9.689f, 11.638f, + 9.173f, 11.724f, 12.440f, 12.031f, 15.585f, 15.486f, 15.041f, 13.979f, 12.308f, + 11.582f, 10.430f, 9.101f, 7.668f, 7.154f, 6.470f, 2.605f, -0.541f, -1.386f, + -2.061f, -4.363f, -5.461f, -4.442f, -2.031f, -0.999f, -0.156f, -1.261f, 0.092f, + 1.730f, 3.848f, 5.361f, 8.232f, 9.822f, 9.816f, 11.066f, 11.765f, 12.957f, + 13.606f }, + { -29.534f, -30.056f, -28.622f, -31.815f, -36.986f, -42.221f, -44.595f, -46.184f, -48.078f, + -50.450f, -52.547f, -52.837f, -53.213f, -55.935f, -62.548f, -63.150f, -63.216f, -62.934f, + -61.962f, -61.043f, -60.358f, -57.774f, -55.363f, -52.313f, -49.905f, -47.198f, -44.534f, + -41.161f, -38.606f, -36.410f, -34.239f, -32.341f, -30.257f, -28.333f, -26.528f, -24.915f, + -23.404f, -22.549f, -21.285f, -19.604f, -17.989f, -15.493f, -13.390f, -11.825f, -9.928f, + -8.468f, -7.214f, -6.036f, -4.723f, -3.134f, -1.692f, -0.952f, -1.286f, -1.255f, + -1.071f, -0.310f, 0.435f, 0.527f, 0.645f, 0.554f, 0.544f, 0.257f, 0.236f, + 0.348f, 1.242f, 1.863f, 2.063f, 2.503f, 3.566f, 3.836f, 4.313f, 4.297f, + 4.459f, 5.748f, 6.290f, 6.008f, 5.708f, 5.510f, 5.737f, 5.881f, 7.011f, + 7.976f, 9.235f, 10.041f, 11.107f, 12.167f, 13.703f, 13.973f, 14.900f, 15.549f, + 15.697f, 15.622f, 15.392f, 14.795f, 14.557f, 14.208f, 12.535f, 10.932f, 9.440f, + 7.579f, 6.153f, 4.913f, 3.664f, 2.294f, 0.960f, 0.796f, 1.436f, 1.802f, + 1.324f, 7.873f, 12.436f, -0.362f, -0.073f, 1.913f, 0.876f, -1.914f, -4.927f, + -7.324f, -9.206f, -11.233f, -12.456f, -13.359f, -14.095f, -15.138f, -16.114f, -16.909f, + -17.242f, -17.634f, -17.379f, -16.591f, -15.573f, -14.549f, -13.155f, -11.877f, -10.404f, + -8.292f, -5.813f, -3.401f, -0.968f, 2.007f, 4.543f, 6.698f, 9.389f, 11.480f, + 10.347f, 9.941f, 13.289f, 11.683f, 14.507f, 15.333f, 14.796f, 14.575f, 13.820f, + 11.550f, 10.838f, 9.545f, 8.143f, 7.801f, 7.600f, 2.666f, -0.329f, -1.726f, + -2.494f, -5.144f, -5.728f, -4.714f, -2.718f, -1.248f, -0.328f, -1.475f, 0.026f, + 1.685f, 3.784f, 5.376f, 8.110f, 9.877f, 9.861f, 11.121f, 11.833f, 12.969f, + 13.606f }, + { -29.534f, -30.067f, -28.679f, -31.929f, -37.096f, -42.489f, -44.604f, -46.112f, -47.765f, + -50.375f, -52.615f, -53.040f, -53.441f, -55.740f, -61.468f, -62.904f, -63.036f, -62.643f, + -61.538f, -60.739f, -59.842f, -57.359f, -55.110f, -52.119f, -49.721f, -46.883f, -44.067f, + -40.853f, -38.206f, -35.922f, -33.736f, -31.799f, -29.728f, -27.710f, -26.270f, -24.288f, + -22.998f, -22.930f, -20.350f, -19.285f, -17.324f, -15.143f, -13.502f, -11.749f, -9.774f, + -9.180f, -8.197f, -6.742f, -5.337f, -3.595f, -2.286f, -1.906f, -2.338f, -2.045f, + -1.550f, -1.195f, -0.474f, -0.262f, 0.207f, -0.064f, -0.256f, -0.436f, -0.390f, + -0.125f, 0.497f, 0.957f, 1.481f, 1.679f, 2.056f, 2.302f, 2.792f, 3.372f, + 4.559f, 5.393f, 5.756f, 5.707f, 4.919f, 4.398f, 4.779f, 5.720f, 6.575f, + 7.665f, 8.863f, 9.827f, 10.939f, 11.850f, 12.854f, 13.774f, 14.778f, 15.148f, + 14.931f, 15.158f, 14.105f, 14.150f, 13.867f, 13.001f, 11.745f, 10.144f, 8.470f, + 6.733f, 5.491f, 3.951f, 2.604f, 1.061f, -0.493f, -0.794f, -0.018f, 0.037f, + -0.524f, -1.555f, -1.837f, -1.941f, -0.577f, -0.188f, -1.675f, -4.304f, -6.541f, + -8.500f, -10.136f, -11.737f, -12.706f, -13.450f, -14.102f, -15.342f, -16.706f, -17.640f, + -18.290f, -18.428f, -17.898f, -17.384f, -16.433f, -15.233f, -13.837f, -12.478f, -11.415f, + -9.091f, -6.693f, -4.445f, -1.725f, 1.234f, 3.566f, 6.047f, 8.819f, 10.861f, + 10.908f, 9.138f, 13.996f, 13.325f, 12.883f, 13.863f, 14.385f, 14.659f, 15.555f, + 12.245f, 11.682f, 9.873f, 8.561f, 8.369f, 7.719f, 2.863f, -0.127f, -2.091f, + -2.721f, -6.127f, -6.133f, -4.454f, -3.097f, -1.822f, -0.944f, -1.684f, -0.069f, + 1.538f, 3.734f, 5.432f, 7.994f, 9.930f, 9.928f, 11.179f, 11.898f, 12.981f, + 13.606f }, + { -29.534f, -30.079f, -28.743f, -32.024f, -37.150f, -42.705f, -44.553f, -45.946f, -47.389f, + -50.225f, -52.462f, -53.211f, -53.828f, -55.496f, -59.673f, -62.609f, -62.671f, -62.276f, + -61.185f, -60.198f, -59.198f, -57.123f, -54.832f, -51.739f, -49.595f, -46.659f, -43.471f, + -40.651f, -37.902f, -35.470f, -33.199f, -31.241f, -29.235f, -27.288f, -25.766f, -24.008f, + -23.085f, -22.078f, -20.279f, -18.947f, -16.743f, -14.886f, -13.460f, -12.001f, -11.047f, + -9.576f, -8.503f, -7.422f, -5.825f, -3.921f, -3.098f, -3.042f, -3.094f, -2.969f, + -2.582f, -2.046f, -1.550f, -0.636f, -0.497f, -0.713f, -0.846f, -1.193f, -1.037f, + -0.828f, -0.309f, 0.044f, 0.173f, 0.837f, 0.990f, 1.052f, 1.867f, 2.195f, + 3.446f, 4.397f, 4.833f, 4.517f, 4.049f, 3.887f, 4.191f, 4.860f, 6.203f, + 7.315f, 8.815f, 9.390f, 10.494f, 11.838f, 12.421f, 13.782f, 14.222f, 14.342f, + 14.364f, 14.675f, 13.807f, 13.718f, 12.694f, 11.908f, 10.734f, 8.972f, 7.367f, + 5.896f, 4.507f, 2.954f, 1.524f, -0.080f, -1.762f, -2.193f, -1.643f, -1.406f, + -1.578f, -2.485f, -2.781f, -2.525f, -2.581f, -3.185f, -4.510f, -6.529f, -8.093f, + -9.521f, -10.833f, -12.226f, -13.306f, -13.918f, -14.591f, -16.213f, -17.758f, -18.672f, + -19.486f, -19.643f, -19.165f, -18.331f, -17.439f, -16.173f, -14.910f, -13.418f, -12.216f, + -10.026f, -7.800f, -5.330f, -2.657f, 0.459f, 2.613f, 5.093f, 8.160f, 10.085f, + 10.916f, 10.252f, 10.837f, 14.446f, 12.511f, 12.085f, 12.576f, 14.803f, 14.936f, + 13.687f, 11.957f, 9.983f, 9.029f, 8.572f, 7.272f, 2.936f, -0.135f, -2.458f, + -3.188f, -7.061f, -6.307f, -3.923f, -3.076f, -2.447f, -1.889f, -1.932f, -0.175f, + 1.326f, 3.700f, 5.522f, 7.908f, 9.973f, 10.019f, 11.240f, 11.959f, 12.995f, + 13.606f }, + { -29.534f, -30.092f, -28.814f, -32.089f, -37.136f, -42.824f, -44.437f, -45.662f, -47.006f, + -50.018f, -52.119f, -53.127f, -54.029f, -55.234f, -57.885f, -62.354f, -62.168f, -61.890f, + -60.778f, -59.565f, -58.467f, -56.719f, -54.597f, -51.491f, -49.197f, -46.473f, -43.169f, + -40.316f, -37.701f, -35.234f, -32.771f, -30.687f, -28.789f, -27.000f, -25.230f, -23.800f, + -23.317f, -21.225f, -20.171f, -18.600f, -16.463f, -14.576f, -13.721f, -12.266f, -11.482f, + -10.279f, -9.270f, -8.230f, -6.503f, -5.101f, -4.242f, -4.278f, -4.102f, -3.862f, + -3.284f, -2.812f, -2.291f, -1.577f, -1.545f, -1.299f, -1.548f, -1.641f, -1.395f, + -1.101f, -0.922f, -1.096f, -1.002f, -1.156f, -0.401f, 0.425f, 0.790f, 2.350f, + 2.744f, 5.364f, 5.086f, 3.442f, 3.336f, 3.083f, 3.197f, 4.711f, 6.057f, + 7.297f, 8.276f, 9.241f, 10.314f, 10.764f, 12.712f, 13.677f, 13.767f, 13.642f, + 14.019f, 14.068f, 13.788f, 12.342f, 11.577f, 10.774f, 9.717f, 7.847f, 6.429f, + 5.046f, 3.425f, 1.821f, 0.394f, -1.306f, -2.705f, -3.222f, -3.162f, -3.132f, + -3.089f, -3.405f, -3.842f, -4.317f, -5.020f, -5.963f, -7.092f, -8.264f, -9.368f, + -10.657f, -11.552f, -12.637f, -13.954f, -14.648f, -15.640f, -17.156f, -18.936f, -19.788f, + -20.248f, -20.129f, -19.667f, -19.306f, -18.331f, -16.800f, -15.792f, -14.392f, -12.920f, + -11.027f, -8.739f, -6.273f, -3.503f, -0.576f, 1.671f, 4.346f, 7.059f, 9.171f, + 10.758f, 11.519f, 6.852f, 15.325f, 11.716f, 10.903f, 9.219f, 10.679f, 11.894f, + 15.889f, 11.952f, 10.257f, 9.513f, 8.547f, 7.336f, 2.869f, -0.489f, -2.736f, + -4.410f, -7.610f, -6.186f, -3.681f, -2.931f, -2.686f, -2.701f, -2.100f, -0.231f, + 1.127f, 3.665f, 5.625f, 7.867f, 10.001f, 10.134f, 11.306f, 12.016f, 13.010f, + 13.606f }, + { -29.534f, -30.105f, -28.889f, -32.119f, -37.045f, -42.817f, -44.261f, -45.270f, -46.668f, + -49.785f, -51.729f, -52.678f, -53.753f, -54.975f, -56.712f, -62.232f, -61.765f, -61.484f, + -60.244f, -59.016f, -57.747f, -56.292f, -54.280f, -51.295f, -48.699f, -46.319f, -43.028f, + -39.857f, -37.402f, -34.996f, -32.581f, -30.256f, -28.224f, -26.612f, -24.769f, -23.455f, + -23.013f, -21.001f, -19.791f, -18.019f, -16.330f, -14.630f, -14.119f, -12.966f, -11.756f, + -10.863f, -9.750f, -8.906f, -7.129f, -5.879f, -5.603f, -5.700f, -5.185f, -4.883f, + -3.735f, -3.259f, -2.799f, -2.183f, -2.252f, -1.635f, -1.706f, -1.576f, -1.011f, + -1.274f, -1.619f, -2.219f, -2.291f, -0.807f, -1.186f, -0.416f, -0.106f, 1.695f, + 2.971f, 5.470f, 3.544f, 2.418f, 1.977f, 1.688f, 2.607f, 4.256f, 5.464f, + 6.992f, 7.562f, 7.697f, 9.627f, 10.770f, 12.131f, 12.738f, 12.807f, 12.875f, + 13.457f, 13.413f, 12.880f, 11.430f, 10.717f, 9.593f, 8.188f, 7.027f, 5.646f, + 4.072f, 2.323f, 0.384f, -0.821f, -2.245f, -3.404f, -3.824f, -4.345f, -4.316f, + -4.610f, -5.187f, -5.443f, -6.089f, -7.195f, -7.960f, -8.762f, -9.705f, -10.726f, + -11.667f, -12.557f, -13.418f, -14.846f, -15.446f, -16.761f, -18.174f, -19.927f, -20.714f, + -21.079f, -20.963f, -20.980f, -20.691f, -19.683f, -17.589f, -16.615f, -15.556f, -13.987f, + -12.150f, -9.788f, -7.206f, -4.311f, -1.604f, 0.727f, 3.352f, 6.590f, 8.267f, + 10.467f, 11.675f, 6.230f, 14.007f, 12.612f, 10.205f, 10.719f, 5.871f, 9.594f, + 16.664f, 12.723f, 10.748f, 9.698f, 8.876f, 8.217f, 2.975f, -0.985f, -3.072f, + -6.176f, -7.956f, -6.097f, -3.875f, -2.985f, -2.510f, -2.994f, -2.070f, -0.191f, + 1.007f, 3.600f, 5.714f, 7.878f, 10.011f, 10.273f, 11.380f, 12.069f, 13.026f, + 13.606f }, + { -29.534f, -30.119f, -28.969f, -32.107f, -36.871f, -42.679f, -44.034f, -44.819f, -46.401f, + -49.545f, -51.422f, -51.963f, -53.045f, -54.637f, -56.013f, -62.040f, -61.388f, -60.992f, + -59.797f, -58.592f, -57.332f, -55.945f, -53.687f, -50.952f, -48.362f, -45.918f, -42.718f, + -39.766f, -37.091f, -34.633f, -32.403f, -29.979f, -27.897f, -26.280f, -24.305f, -23.175f, + -22.509f, -20.886f, -19.407f, -17.671f, -16.145f, -15.386f, -13.882f, -13.348f, -12.259f, + -11.539f, -10.349f, -9.161f, -7.991f, -7.417f, -6.922f, -6.691f, -6.268f, -5.550f, + -4.295f, -3.805f, -3.156f, -2.985f, -2.873f, -1.894f, -1.441f, -1.708f, -1.803f, + -2.240f, -2.230f, -2.586f, -3.704f, -3.059f, -2.615f, -2.156f, -0.868f, 0.559f, + 3.471f, 3.024f, 1.975f, 1.247f, 2.650f, 0.841f, 2.419f, 3.473f, 4.912f, + 5.306f, 6.065f, 7.078f, 8.660f, 10.118f, 11.648f, 12.012f, 12.172f, 12.275f, + 12.727f, 12.345f, 11.553f, 10.425f, 9.897f, 8.636f, 7.153f, 6.133f, 4.735f, + 2.751f, 1.080f, -0.523f, -1.534f, -2.755f, -3.801f, -4.295f, -4.833f, -5.406f, + -5.902f, -6.779f, -6.966f, -7.880f, -8.789f, -9.367f, -10.080f, -11.023f, -12.040f, + -12.712f, -13.619f, -14.675f, -15.841f, -16.480f, -18.105f, -19.730f, -20.997f, -21.737f, + -21.724f, -22.126f, -22.160f, -21.503f, -20.774f, -18.587f, -17.656f, -16.684f, -15.122f, + -13.273f, -10.969f, -8.273f, -5.265f, -2.586f, -0.035f, 2.606f, 5.694f, 7.270f, + 10.638f, 11.046f, 7.422f, 10.916f, 13.893f, 11.483f, 13.464f, 8.159f, 11.089f, + 15.457f, 13.592f, 10.782f, 9.346f, 9.220f, 9.153f, 3.334f, -1.373f, -3.575f, + -7.528f, -8.292f, -6.173f, -4.100f, -3.232f, -2.362f, -2.828f, -1.896f, -0.090f, + 0.980f, 3.484f, 5.768f, 7.938f, 10.001f, 10.433f, 11.461f, 12.117f, 13.044f, + 13.606f }, + { -29.534f, -30.134f, -29.051f, -32.053f, -36.613f, -42.424f, -43.770f, -44.381f, -46.200f, + -49.299f, -51.218f, -51.222f, -52.276f, -54.121f, -55.308f, -61.381f, -60.672f, -60.425f, + -59.480f, -58.214f, -57.058f, -55.456f, -53.072f, -50.554f, -47.832f, -45.422f, -42.323f, + -39.636f, -36.827f, -34.349f, -32.191f, -29.789f, -27.679f, -25.896f, -23.983f, -23.017f, + -21.786f, -20.487f, -19.033f, -17.503f, -16.015f, -16.001f, -13.568f, -13.746f, -12.686f, + -11.923f, -10.943f, -9.960f, -8.831f, -8.309f, -8.234f, -7.607f, -7.132f, -6.045f, + -5.250f, -4.587f, -3.882f, -3.537f, -3.319f, -2.717f, -2.171f, -2.670f, -2.995f, + -3.262f, -3.174f, -4.091f, -4.041f, -3.876f, -3.717f, -3.003f, -1.952f, -0.443f, + 3.440f, 1.394f, 0.579f, 1.048f, 1.047f, 0.106f, 1.083f, 2.623f, 3.551f, + 4.605f, 5.079f, 5.890f, 7.443f, 9.304f, 10.856f, 11.169f, 11.519f, 11.572f, + 11.715f, 11.399f, 10.539f, 9.572f, 8.806f, 7.623f, 6.459f, 5.202f, 3.616f, + 1.708f, 0.168f, -1.221f, -2.405f, -3.558f, -4.424f, -5.075f, -5.786f, -6.597f, + -7.225f, -7.856f, -8.442f, -9.268f, -10.259f, -10.724f, -11.397f, -12.382f, -13.123f, + -13.936f, -14.414f, -15.661f, -16.674f, -18.089f, -19.801f, -21.129f, -22.148f, -22.517f, + -22.553f, -22.610f, -22.458f, -21.906f, -21.795f, -19.816f, -18.903f, -17.836f, -16.249f, + -14.323f, -11.904f, -9.361f, -6.516f, -3.800f, -0.905f, 1.813f, 4.946f, 6.342f, + 10.222f, 9.484f, 8.335f, 8.310f, 13.205f, 12.870f, 13.349f, 11.759f, 15.668f, + 15.483f, 14.322f, 10.945f, 9.250f, 9.229f, 9.481f, 3.816f, -1.643f, -4.043f, + -8.005f, -8.425f, -6.114f, -4.070f, -3.459f, -2.636f, -2.616f, -1.788f, -0.025f, + 1.010f, 3.315f, 5.779f, 8.038f, 9.979f, 10.612f, 11.551f, 12.159f, 13.062f, + 13.606f }, + { -29.534f, -30.150f, -29.135f, -31.958f, -36.274f, -42.084f, -43.482f, -44.024f, -46.036f, + -49.030f, -51.008f, -50.680f, -51.800f, -53.454f, -54.484f, -60.082f, -59.635f, -59.787f, + -59.103f, -57.841f, -56.476f, -54.779f, -52.519f, -49.939f, -47.318f, -44.893f, -41.988f, + -39.427f, -36.665f, -34.187f, -31.958f, -29.646f, -27.409f, -25.545f, -23.881f, -22.967f, + -21.341f, -20.138f, -18.752f, -17.442f, -16.409f, -15.958f, -14.052f, -13.967f, -12.845f, + -12.078f, -11.434f, -10.614f, -9.963f, -9.551f, -8.870f, -8.137f, -7.404f, -6.507f, + -6.277f, -5.589f, -4.439f, -3.909f, -3.537f, -3.419f, -3.657f, -4.032f, -3.729f, + -3.610f, -4.098f, -3.874f, -3.800f, -5.403f, -5.149f, -4.114f, -3.350f, -2.136f, + -0.141f, -0.563f, -1.269f, 2.210f, -0.882f, -0.486f, 0.478f, 1.668f, 2.371f, + 3.481f, 3.994f, 5.192f, 6.852f, 8.235f, 9.939f, 10.180f, 10.521f, 11.127f, + 11.118f, 10.553f, 9.560f, 8.715f, 7.270f, 6.306f, 5.160f, 3.870f, 2.181f, + 0.818f, -0.706f, -1.995f, -3.210f, -4.267f, -5.276f, -6.422f, -7.233f, -7.831f, + -8.425f, -9.093f, -9.965f, -10.734f, -11.113f, -12.132f, -12.914f, -13.667f, -14.363f, + -15.110f, -15.355f, -16.588f, -17.432f, -19.614f, -21.105f, -22.519f, -23.107f, -23.206f, + -23.782f, -24.018f, -23.590f, -23.139f, -22.345f, -20.999f, -20.183f, -18.785f, -17.306f, + -15.134f, -12.881f, -10.354f, -7.696f, -4.943f, -2.018f, 0.904f, 3.743f, 5.745f, + 8.538f, 8.115f, 8.626f, 7.274f, 10.149f, 12.468f, 13.363f, 13.557f, 18.170f, + 16.314f, 15.168f, 11.331f, 9.528f, 8.787f, 9.312f, 4.762f, -1.717f, -4.222f, + -8.083f, -8.206f, -5.629f, -3.934f, -3.604f, -3.231f, -2.720f, -1.923f, -0.078f, + 1.042f, 3.115f, 5.755f, 8.165f, 9.951f, 10.806f, 11.649f, 12.197f, 13.082f, + 13.606f }, + { -29.534f, -30.166f, -29.220f, -31.826f, -35.862f, -41.699f, -43.179f, -43.794f, -45.872f, + -48.726f, -50.663f, -50.407f, -51.629f, -52.768f, -53.733f, -58.284f, -58.839f, -59.003f, + -58.629f, -57.436f, -55.773f, -54.127f, -52.014f, -49.272f, -46.866f, -44.231f, -41.789f, + -39.140f, -36.484f, -34.085f, -31.642f, -29.410f, -27.315f, -25.211f, -23.558f, -22.953f, + -20.880f, -19.946f, -18.675f, -17.118f, -17.055f, -15.416f, -14.920f, -14.086f, -13.578f, + -12.724f, -11.714f, -11.336f, -10.646f, -10.359f, -9.581f, -8.615f, -7.679f, -7.208f, + -6.740f, -6.060f, -5.133f, -4.523f, -4.989f, -4.804f, -4.731f, -4.642f, -4.169f, + -4.107f, -3.316f, -5.255f, -5.311f, -6.644f, -6.160f, -5.325f, -4.236f, -3.484f, + -2.627f, -2.875f, 0.800f, 0.175f, -1.863f, -1.405f, -0.070f, 0.726f, 1.579f, + 2.212f, 3.105f, 4.280f, 5.808f, 7.783f, 8.928f, 9.102f, 9.654f, 10.430f, + 10.061f, 9.706f, 8.614f, 7.747f, 5.942f, 5.211f, 3.661f, 2.535f, 0.910f, + -0.240f, -1.608f, -2.933f, -4.313f, -5.158f, -6.447f, -7.645f, -8.401f, -9.088f, + -9.562f, -10.403f, -11.325f, -12.426f, -12.973f, -13.850f, -14.188f, -14.967f, -15.462f, + -16.142f, -16.481f, -17.467f, -18.459f, -21.174f, -22.522f, -23.653f, -23.970f, -24.463f, + -24.721f, -25.334f, -24.623f, -24.104f, -23.775f, -22.073f, -21.393f, -19.797f, -18.205f, + -15.969f, -13.665f, -11.437f, -8.669f, -6.066f, -2.900f, -0.183f, 2.331f, 4.679f, + 6.667f, 7.364f, 8.567f, 7.862f, 6.307f, 10.957f, 12.437f, 15.509f, 18.245f, + 16.709f, 14.701f, 11.598f, 9.516f, 7.922f, 8.877f, 6.070f, -1.556f, -3.876f, + -8.190f, -7.801f, -4.856f, -3.864f, -3.812f, -3.754f, -3.154f, -2.276f, -0.250f, + 1.039f, 2.919f, 5.711f, 8.305f, 9.930f, 11.008f, 11.755f, 12.231f, 13.103f, + 13.606f }, + { -29.534f, -30.183f, -29.303f, -31.665f, -35.390f, -41.308f, -42.867f, -43.687f, -45.684f, + -48.392f, -50.155f, -50.323f, -51.468f, -52.113f, -52.999f, -56.183f, -58.553f, -58.185f, + -58.069f, -56.917f, -55.382f, -53.572f, -51.595f, -48.683f, -46.122f, -43.706f, -41.534f, + -38.859f, -36.409f, -33.909f, -31.417f, -29.300f, -27.244f, -25.046f, -23.194f, -22.520f, + -20.523f, -19.661f, -18.608f, -17.391f, -16.751f, -16.182f, -15.290f, -14.291f, -13.649f, + -13.013f, -12.217f, -11.790f, -11.433f, -10.889f, -9.967f, -8.950f, -8.409f, -7.857f, + -7.229f, -6.695f, -6.079f, -5.805f, -6.124f, -5.961f, -5.650f, -5.100f, -4.701f, + -4.014f, -4.610f, -5.027f, -6.407f, -7.222f, -6.381f, -6.197f, -5.851f, -4.609f, + -3.765f, -2.426f, -0.107f, -1.772f, -2.506f, -2.526f, -1.638f, -0.495f, 0.312f, + 1.086f, 2.170f, 3.648f, 5.380f, 6.688f, 7.545f, 8.041f, 8.693f, 9.239f, + 8.958f, 8.227f, 7.390f, 6.546f, 5.049f, 3.893f, 2.587f, 1.393f, -0.148f, + -1.427f, -2.621f, -4.105f, -5.282f, -6.223f, -7.341f, -8.770f, -9.687f, -10.437f, + -11.073f, -12.098f, -12.849f, -13.904f, -14.712f, -15.565f, -15.614f, -16.068f, -16.542f, + -17.054f, -17.725f, -18.544f, -19.765f, -22.894f, -23.841f, -24.738f, -25.102f, -25.504f, + -25.566f, -26.193f, -26.285f, -25.506f, -24.901f, -23.224f, -22.194f, -20.685f, -19.034f, + -16.914f, -14.682f, -12.546f, -9.780f, -7.231f, -4.178f, -1.180f, 1.392f, 3.477f, + 5.246f, 6.637f, 8.218f, 8.120f, 5.995f, 8.420f, 11.930f, 17.075f, 16.728f, + 17.119f, 13.548f, 11.991f, 9.235f, 7.294f, 8.363f, 6.870f, -1.498f, -2.971f, + -8.290f, -7.447f, -4.306f, -3.837f, -4.178f, -4.048f, -3.692f, -2.662f, -0.469f, + 0.998f, 2.759f, 5.665f, 8.441f, 9.929f, 11.213f, 11.868f, 12.261f, 13.125f, + 13.606f }, + { -29.534f, -30.200f, -29.385f, -31.484f, -34.873f, -40.943f, -42.545f, -43.661f, -45.470f, + -48.046f, -49.588f, -50.318f, -51.081f, -51.358f, -51.942f, -54.031f, -58.282f, -57.607f, + -57.317f, -56.312f, -55.043f, -53.003f, -51.045f, -47.958f, -45.499f, -43.316f, -41.041f, + -38.567f, -36.164f, -33.715f, -31.240f, -29.007f, -27.082f, -25.066f, -22.868f, -22.057f, + -20.142f, -19.242f, -18.225f, -17.861f, -16.497f, -16.460f, -15.572f, -14.825f, -13.670f, + -13.430f, -12.418f, -12.175f, -11.714f, -11.017f, -10.351f, -9.468f, -9.391f, -8.445f, + -7.864f, -7.619f, -7.284f, -7.074f, -7.134f, -6.978f, -6.275f, -5.373f, -5.296f, + -3.951f, -5.687f, -6.785f, -7.570f, -7.628f, -7.068f, -6.987f, -5.771f, -5.973f, + -4.487f, -3.148f, -1.774f, -2.767f, -3.030f, -3.274f, -2.355f, -1.537f, -0.552f, + 0.412f, 1.722f, 3.154f, 4.834f, 5.750f, 6.742f, 7.097f, 7.663f, 7.946f, + 7.634f, 6.932f, 6.383f, 5.267f, 3.942f, 2.861f, 1.479f, -0.003f, -1.339f, + -2.708f, -3.865f, -5.340f, -6.391f, -7.184f, -8.454f, -10.230f, -11.347f, -12.252f, + -13.019f, -13.933f, -14.811f, -15.660f, -16.452f, -17.069f, -16.947f, -17.375f, -17.901f, + -18.261f, -19.082f, -20.015f, -21.460f, -23.930f, -24.929f, -25.769f, -26.216f, -26.827f, + -27.055f, -27.305f, -26.988f, -26.547f, -26.290f, -24.361f, -23.141f, -21.532f, -19.804f, + -17.801f, -15.910f, -13.839f, -10.988f, -8.105f, -5.263f, -2.512f, 0.476f, 2.404f, + 4.211f, 5.556f, 7.509f, 7.920f, 7.095f, 6.802f, 11.622f, 17.775f, 16.607f, + 17.233f, 13.111f, 12.111f, 8.982f, 7.069f, 8.089f, 7.104f, -1.711f, -2.227f, + -8.363f, -7.282f, -4.431f, -3.976f, -4.650f, -4.329f, -4.143f, -2.920f, -0.658f, + 0.940f, 2.650f, 5.624f, 8.558f, 9.960f, 11.417f, 11.984f, 12.288f, 13.148f, + 13.606f }, + { -29.534f, -30.217f, -29.464f, -31.295f, -34.331f, -40.617f, -42.216f, -43.645f, -45.245f, + -47.708f, -49.118f, -50.359f, -50.602f, -50.331f, -50.481f, -52.288f, -57.542f, -57.201f, + -56.450f, -55.681f, -54.372f, -52.456f, -50.354f, -47.342f, -45.049f, -42.785f, -40.517f, + -38.180f, -35.981f, -33.606f, -31.157f, -28.777f, -26.755f, -24.857f, -23.064f, -21.436f, + -19.824f, -18.905f, -18.221f, -17.693f, -17.060f, -16.508f, -15.768f, -15.110f, -14.570f, + -13.994f, -13.188f, -12.524f, -11.639f, -11.040f, -10.321f, -10.196f, -9.726f, -9.112f, + -8.631f, -8.157f, -7.997f, -8.081f, -8.220f, -7.721f, -7.007f, -6.059f, -4.383f, + -5.217f, -6.766f, -7.805f, -8.390f, -8.141f, -7.747f, -7.802f, -7.460f, -6.293f, + -5.577f, -3.275f, -4.208f, -3.703f, -3.947f, -4.029f, -3.545f, -2.425f, -1.379f, + 0.144f, 1.729f, 2.920f, 4.203f, 4.823f, 5.587f, 5.778f, 6.482f, 6.566f, + 6.334f, 5.786f, 5.020f, 3.992f, 2.965f, 1.168f, 0.043f, -1.424f, -2.696f, + -3.980f, -5.149f, -6.446f, -7.512f, -8.532f, -9.695f, -11.678f, -12.706f, -13.667f, + -14.757f, -15.533f, -16.546f, -17.431f, -17.866f, -18.471f, -18.593f, -18.593f, -19.166f, + -19.611f, -20.540f, -21.633f, -22.878f, -24.816f, -26.026f, -26.994f, -27.405f, -27.882f, + -28.814f, -29.064f, -28.920f, -28.098f, -27.510f, -25.415f, -24.149f, -22.309f, -20.801f, + -18.920f, -17.041f, -15.073f, -12.332f, -9.368f, -6.512f, -3.298f, -0.858f, 1.197f, + 3.032f, 4.528f, 6.381f, 7.169f, 7.053f, 6.382f, 11.053f, 17.659f, 18.466f, + 16.335f, 12.765f, 11.911f, 8.896f, 6.900f, 7.828f, 7.104f, -1.849f, -2.574f, + -8.382f, -7.364f, -5.187f, -4.561f, -5.148f, -4.799f, -4.490f, -3.046f, -0.802f, + 0.883f, 2.586f, 5.581f, 8.643f, 10.029f, 11.614f, 12.102f, 12.312f, 13.173f, + 13.606f }, + { -29.534f, -30.235f, -29.538f, -31.109f, -33.785f, -40.331f, -41.884f, -43.574f, -45.035f, + -47.382f, -48.820f, -50.477f, -50.417f, -49.050f, -48.967f, -51.246f, -56.569f, -56.576f, + -55.714f, -54.933f, -53.567f, -51.906f, -49.663f, -46.904f, -44.590f, -42.220f, -40.349f, + -37.929f, -35.811f, -33.343f, -30.962f, -28.552f, -26.584f, -24.897f, -22.719f, -20.781f, + -19.500f, -18.777f, -18.422f, -16.778f, -17.775f, -16.846f, -16.142f, -15.426f, -15.186f, + -14.459f, -13.654f, -12.737f, -11.874f, -11.184f, -10.917f, -10.550f, -10.225f, -9.640f, + -9.134f, -8.565f, -8.862f, -8.892f, -8.800f, -8.187f, -7.416f, -6.595f, -5.093f, + -6.296f, -7.687f, -8.630f, -8.859f, -8.753f, -8.585f, -8.004f, -7.910f, -6.910f, + -6.539f, -4.236f, -4.772f, -4.858f, -5.138f, -4.348f, -4.085f, -3.059f, -1.693f, + -0.266f, 1.197f, 2.639f, 3.458f, 3.770f, 4.330f, 4.561f, 5.399f, 5.117f, + 4.881f, 4.506f, 3.636f, 2.527f, 1.803f, -0.165f, -1.326f, -2.917f, -4.248f, + -5.522f, -6.672f, -7.626f, -8.632f, -9.944f, -11.009f, -13.124f, -14.334f, -15.455f, + -16.401f, -17.134f, -18.046f, -18.721f, -19.600f, -20.019f, -19.908f, -19.786f, -20.376f, + -21.116f, -22.158f, -23.091f, -24.134f, -25.625f, -27.157f, -27.855f, -28.643f, -29.137f, + -30.076f, -30.447f, -30.124f, -29.722f, -28.476f, -26.359f, -25.111f, -23.139f, -21.612f, + -20.080f, -18.314f, -16.228f, -13.717f, -10.730f, -7.674f, -4.737f, -2.326f, -0.226f, + 1.466f, 3.382f, 5.587f, 6.366f, 6.506f, 6.242f, 10.267f, 16.057f, 18.224f, + 14.517f, 12.648f, 11.502f, 8.756f, 6.986f, 7.267f, 6.527f, -1.818f, -3.887f, + -8.208f, -7.622f, -6.080f, -5.528f, -5.640f, -5.331f, -4.790f, -3.154f, -0.945f, + 0.841f, 2.552f, 5.524f, 8.685f, 10.140f, 11.800f, 12.219f, 12.335f, 13.198f, + 13.606f }, + { -29.534f, -30.253f, -29.607f, -30.936f, -33.260f, -40.071f, -41.560f, -43.410f, -44.858f, + -47.057f, -48.628f, -50.648f, -50.731f, -47.758f, -47.683f, -50.491f, -55.710f, -55.763f, + -55.112f, -54.098f, -52.904f, -51.195f, -49.024f, -46.400f, -44.107f, -41.946f, -40.359f, + -37.801f, -35.747f, -33.166f, -30.575f, -28.384f, -26.393f, -24.843f, -21.975f, -20.391f, + -19.195f, -18.307f, -18.485f, -17.408f, -17.803f, -17.319f, -16.426f, -16.011f, -15.414f, + -14.836f, -14.042f, -13.321f, -12.349f, -11.738f, -11.362f, -10.881f, -10.726f, -9.984f, + -9.432f, -8.994f, -9.326f, -9.348f, -9.282f, -8.542f, -7.672f, -7.078f, -6.392f, + -7.403f, -8.873f, -9.472f, -9.396f, -9.034f, -9.002f, -8.887f, -8.333f, -8.008f, + -6.420f, -5.913f, -5.139f, -5.213f, -5.601f, -4.874f, -4.746f, -3.421f, -2.078f, + -0.837f, 0.341f, 1.926f, 2.644f, 3.065f, 3.144f, 3.574f, 4.342f, 3.639f, + 3.439f, 2.984f, 1.949f, 0.959f, 0.161f, -1.472f, -2.738f, -4.603f, -5.924f, + -7.130f, -8.066f, -8.966f, -10.087f, -11.361f, -12.273f, -14.274f, -15.789f, -17.361f, + -18.368f, -19.166f, -19.698f, -20.203f, -20.960f, -21.075f, -21.068f, -21.161f, -21.852f, + -22.622f, -23.731f, -24.734f, -25.449f, -26.603f, -28.007f, -28.531f, -29.488f, -30.397f, + -31.042f, -31.438f, -31.375f, -31.191f, -29.816f, -27.297f, -25.926f, -24.144f, -22.520f, + -21.247f, -19.565f, -17.551f, -14.836f, -12.018f, -8.939f, -6.336f, -3.992f, -1.680f, + 0.168f, 2.194f, 4.601f, 5.158f, 5.268f, 7.294f, 10.502f, 14.875f, 16.794f, + 13.144f, 12.355f, 10.850f, 8.676f, 7.261f, 6.558f, 5.381f, -2.020f, -5.207f, + -7.948f, -7.889f, -6.745f, -6.410f, -6.096f, -5.665f, -5.048f, -3.328f, -1.133f, + 0.824f, 2.536f, 5.436f, 8.679f, 10.287f, 11.973f, 12.333f, 12.359f, 13.224f, + 13.606f }, + { -29.534f, -30.272f, -29.669f, -30.787f, -32.784f, -39.814f, -41.264f, -43.156f, -44.716f, + -46.726f, -48.392f, -50.728f, -51.253f, -46.730f, -46.514f, -49.376f, -54.695f, -55.211f, + -54.461f, -53.368f, -52.298f, -50.521f, -48.528f, -46.054f, -43.453f, -41.957f, -40.043f, + -37.641f, -35.565f, -32.829f, -30.368f, -28.301f, -26.199f, -24.368f, -21.440f, -19.980f, + -18.755f, -17.924f, -18.142f, -18.432f, -17.828f, -17.051f, -16.692f, -16.447f, -15.720f, + -14.889f, -14.341f, -13.704f, -12.935f, -12.162f, -11.568f, -11.218f, -10.766f, -10.061f, + -9.506f, -9.441f, -9.744f, -9.691f, -9.522f, -8.624f, -8.216f, -7.541f, -8.051f, + -8.965f, -9.910f, -10.169f, -9.973f, -9.689f, -9.352f, -9.377f, -9.060f, -8.378f, + -7.264f, -7.009f, -5.346f, -5.733f, -5.796f, -5.228f, -4.633f, -3.595f, -2.899f, + -0.471f, 2.843f, 0.488f, 1.429f, 1.979f, 2.207f, 2.519f, 2.755f, 2.103f, + 2.082f, 1.267f, 0.281f, -0.205f, -1.270f, -2.949f, -4.574f, -6.222f, -7.700f, + -8.790f, -9.554f, -10.710f, -11.941f, -12.804f, -13.772f, -15.184f, -17.367f, -18.938f, + -19.997f, -20.858f, -21.536f, -21.995f, -22.596f, -22.431f, -22.500f, -22.902f, -23.125f, + -24.363f, -25.223f, -26.023f, -26.833f, -27.721f, -28.868f, -29.469f, -30.614f, -31.504f, + -32.213f, -32.539f, -32.600f, -32.002f, -30.446f, -28.473f, -26.730f, -25.249f, -23.794f, + -22.398f, -20.781f, -18.659f, -16.039f, -13.154f, -10.138f, -7.549f, -5.319f, -3.152f, + -1.196f, 1.405f, 2.911f, 3.777f, 3.902f, 8.135f, 10.449f, 16.592f, 14.831f, + 12.449f, 11.574f, 10.708f, 8.761f, 7.258f, 5.621f, 4.213f, -2.501f, -5.998f, + -7.852f, -8.071f, -7.310f, -6.949f, -6.499f, -5.796f, -5.225f, -3.541f, -1.355f, + 0.842f, 2.539f, 5.313f, 8.626f, 10.463f, 12.133f, 12.440f, 12.383f, 13.251f, + 13.606f }, + { -29.534f, -30.290f, -29.725f, -30.668f, -32.381f, -39.539f, -41.012f, -42.852f, -44.583f, + -46.401f, -48.016f, -50.517f, -51.359f, -46.041f, -45.290f, -48.025f, -53.179f, -54.890f, + -53.732f, -52.660f, -51.588f, -50.045f, -48.071f, -45.906f, -43.234f, -41.923f, -39.578f, + -37.568f, -35.335f, -32.594f, -30.231f, -28.100f, -26.139f, -23.391f, -20.930f, -19.510f, + -18.119f, -18.225f, -18.090f, -18.542f, -17.431f, -17.005f, -16.823f, -16.644f, -15.692f, + -15.025f, -14.503f, -13.984f, -13.357f, -12.465f, -12.035f, -11.464f, -10.876f, -10.189f, + -9.744f, -9.646f, -9.959f, -9.939f, -9.754f, -9.206f, -8.780f, -8.198f, -9.125f, + -9.969f, -10.726f, -10.849f, -10.537f, -10.382f, -10.142f, -9.973f, -8.976f, -9.100f, + -8.431f, -7.318f, -6.302f, -6.722f, -6.822f, -5.893f, -4.877f, -3.835f, -2.540f, + 2.357f, 0.833f, -0.305f, 0.625f, 0.864f, 0.920f, 1.181f, 1.383f, 1.014f, + 0.676f, -0.453f, -1.038f, -1.694f, -2.920f, -4.319f, -6.375f, -7.966f, -9.442f, + -10.595f, -11.405f, -12.425f, -13.452f, -14.453f, -15.498f, -16.504f, -19.074f, -20.537f, + -21.834f, -22.468f, -22.822f, -23.244f, -23.948f, -24.012f, -24.007f, -24.668f, -24.796f, + -25.934f, -26.834f, -27.295f, -28.113f, -28.753f, -29.750f, -30.458f, -31.555f, -32.526f, + -33.245f, -33.987f, -33.427f, -32.898f, -31.466f, -29.266f, -27.660f, -26.177f, -25.024f, + -23.638f, -21.879f, -19.755f, -17.208f, -14.310f, -11.536f, -8.839f, -6.701f, -4.532f, + -2.145f, 0.394f, 1.666f, 2.619f, 2.822f, 7.431f, 10.503f, 16.253f, 12.676f, + 11.608f, 10.950f, 11.002f, 8.532f, 6.985f, 4.635f, 2.968f, -2.948f, -6.382f, + -7.834f, -8.192f, -7.965f, -7.358f, -6.878f, -5.991f, -5.327f, -3.712f, -1.548f, + 0.907f, 2.569f, 5.165f, 8.538f, 10.652f, 12.280f, 12.539f, 12.409f, 13.279f, + 13.606f }, + { -29.534f, -30.309f, -29.773f, -30.583f, -32.078f, -39.232f, -40.819f, -42.555f, -44.422f, + -46.111f, -47.538f, -49.921f, -50.617f, -45.518f, -44.184f, -47.113f, -51.477f, -54.251f, + -52.998f, -51.846f, -50.831f, -49.455f, -47.599f, -45.647f, -43.397f, -41.561f, -39.243f, + -37.473f, -35.103f, -32.345f, -30.151f, -27.766f, -26.112f, -22.671f, -20.393f, -19.058f, + -18.082f, -18.330f, -18.853f, -17.830f, -17.042f, -17.186f, -17.074f, -16.636f, -15.723f, + -15.096f, -14.803f, -14.310f, -13.326f, -12.795f, -12.301f, -11.701f, -11.069f, -10.521f, + -9.974f, -9.958f, -10.431f, -10.267f, -10.015f, -9.493f, -9.306f, -9.861f, -10.524f, + -10.819f, -11.411f, -11.422f, -11.113f, -10.930f, -9.512f, -10.042f, -9.855f, -9.248f, + -8.711f, -7.720f, -7.910f, -7.958f, -7.143f, -6.040f, -4.845f, -3.707f, 0.706f, + -1.519f, -1.489f, -0.308f, 0.158f, -0.136f, -0.279f, -0.065f, -0.081f, -0.267f, + -0.897f, -1.980f, -2.515f, -3.475f, -4.488f, -5.963f, -8.162f, -9.779f, -11.058f, + -12.328f, -13.394f, -14.524f, -15.364f, -16.379f, -17.174f, -18.247f, -20.831f, -21.981f, + -23.319f, -23.845f, -24.202f, -24.737f, -25.481f, -25.798f, -25.804f, -26.093f, -26.676f, + -27.548f, -28.314f, -28.739f, -29.432f, -29.957f, -30.738f, -31.595f, -32.477f, -33.276f, + -34.151f, -34.701f, -34.595f, -33.777f, -32.286f, -29.967f, -28.590f, -27.066f, -26.037f, + -24.572f, -22.969f, -20.694f, -18.367f, -15.580f, -12.546f, -10.323f, -7.951f, -5.832f, + -3.209f, -0.756f, 0.532f, 1.251f, 3.437f, 5.090f, 11.501f, 13.397f, 11.698f, + 10.744f, 10.301f, 10.679f, 7.798f, 5.975f, 3.853f, 0.977f, -3.450f, -6.476f, + -7.696f, -8.293f, -8.559f, -7.868f, -7.270f, -6.411f, -5.428f, -3.808f, -1.647f, + 1.017f, 2.635f, 5.016f, 8.427f, 10.838f, 12.417f, 12.629f, 12.438f, 13.308f, + 13.606f }, + { -29.534f, -30.327f, -29.813f, -30.534f, -31.894f, -38.891f, -40.685f, -42.313f, -44.192f, + -45.871f, -47.098f, -49.045f, -49.176f, -44.927f, -43.459f, -46.622f, -50.134f, -53.244f, + -52.277f, -51.151f, -50.078f, -48.691f, -47.126f, -45.248f, -43.120f, -41.092f, -39.182f, + -37.192f, -34.625f, -32.243f, -29.939f, -27.357f, -25.835f, -22.180f, -20.015f, -18.584f, + -17.924f, -18.413f, -19.516f, -18.190f, -17.463f, -17.213f, -17.284f, -16.730f, -16.168f, + -15.455f, -14.995f, -14.180f, -13.564f, -13.102f, -12.339f, -11.872f, -11.212f, -10.757f, + -10.257f, -10.253f, -10.556f, -10.622f, -10.297f, -10.075f, -10.040f, -10.714f, -11.290f, + -11.718f, -11.918f, -11.736f, -11.520f, -11.320f, -10.462f, -10.214f, -10.002f, -10.066f, + -9.053f, -8.875f, -8.861f, -9.124f, -7.656f, -6.781f, -5.445f, -4.006f, -2.067f, + -2.657f, -1.672f, -0.954f, -1.207f, -1.239f, -1.536f, -1.343f, -1.569f, -1.702f, + -2.423f, -3.540f, -4.048f, -5.011f, -6.204f, -7.904f, -9.755f, -11.198f, -12.649f, + -13.955f, -15.096f, -16.420f, -17.505f, -18.170f, -18.711f, -20.114f, -22.335f, -23.395f, + -24.745f, -25.336f, -25.892f, -26.592f, -27.250f, -27.419f, -27.573f, -28.068f, -28.251f, + -28.981f, -29.644f, -30.045f, -30.560f, -31.010f, -31.666f, -32.659f, -33.596f, -34.280f, + -35.186f, -35.772f, -35.231f, -34.443f, -33.022f, -30.626f, -29.537f, -28.130f, -26.846f, + -25.545f, -23.937f, -21.630f, -19.223f, -16.708f, -13.872f, -11.449f, -9.008f, -6.684f, + -3.972f, -1.924f, -0.624f, 0.341f, 2.471f, 7.147f, 11.007f, 11.571f, 10.715f, + 9.690f, 9.695f, 9.920f, 6.855f, 4.545f, 2.882f, -1.670f, -4.042f, -6.144f, + -7.500f, -8.434f, -8.948f, -8.409f, -7.653f, -6.893f, -5.592f, -3.870f, -1.649f, + 1.146f, 2.731f, 4.899f, 8.314f, 11.006f, 12.547f, 12.710f, 12.470f, 13.337f, + 13.606f }, + { -29.534f, -30.346f, -29.844f, -30.518f, -31.842f, -38.531f, -40.595f, -42.147f, -43.873f, + -45.652f, -46.803f, -48.132f, -47.644f, -44.199f, -42.984f, -45.777f, -49.316f, -52.389f, + -51.629f, -50.588f, -49.169f, -47.927f, -46.462f, -44.717f, -42.720f, -40.757f, -39.279f, + -36.871f, -34.336f, -32.100f, -29.535f, -27.137f, -25.485f, -21.945f, -19.866f, -18.468f, + -17.706f, -19.217f, -19.204f, -18.382f, -17.584f, -17.274f, -17.190f, -16.458f, -16.220f, + -15.816f, -14.677f, -14.313f, -13.609f, -13.371f, -12.482f, -12.113f, -11.318f, -10.773f, + -10.772f, -10.633f, -10.800f, -10.846f, -10.648f, -10.766f, -10.875f, -11.598f, -11.982f, + -12.319f, -12.292f, -12.124f, -11.999f, -11.104f, -10.904f, -10.447f, -10.479f, -10.145f, + -9.655f, -9.924f, -9.795f, -9.592f, -8.518f, -7.583f, -6.281f, -4.672f, -3.908f, + -3.168f, -2.544f, -2.217f, -2.442f, -2.530f, -2.885f, -2.776f, -3.225f, -3.270f, + -4.116f, -5.095f, -5.688f, -6.831f, -7.961f, -9.777f, -11.418f, -12.825f, -14.274f, + -15.497f, -16.890f, -18.371f, -19.298f, -20.122f, -20.712f, -22.239f, -23.800f, -25.395f, + -26.438f, -27.035f, -27.948f, -28.421f, -28.843f, -28.927f, -29.244f, -29.757f, -29.910f, + -30.540f, -30.810f, -31.161f, -31.793f, -32.264f, -33.070f, -33.661f, -34.802f, -35.154f, + -36.067f, -36.683f, -35.677f, -34.802f, -33.940f, -31.340f, -30.108f, -28.975f, -27.525f, + -26.336f, -24.676f, -22.443f, -19.966f, -17.627f, -14.935f, -12.725f, -10.230f, -7.784f, + -4.940f, -3.251f, -2.282f, -0.879f, 2.973f, 9.252f, 9.677f, 9.936f, 9.463f, + 8.467f, 8.981f, 9.297f, 6.255f, 4.374f, 1.683f, -3.747f, -4.247f, -5.404f, + -7.373f, -8.708f, -9.317f, -8.834f, -7.961f, -7.166f, -5.802f, -3.943f, -1.616f, + 1.256f, 2.839f, 4.842f, 8.217f, 11.145f, 12.672f, 12.781f, 12.507f, 13.367f, + 13.606f }, + { -29.534f, -30.364f, -29.866f, -30.529f, -31.925f, -38.178f, -40.520f, -42.045f, -43.478f, + -45.375f, -46.607f, -47.389f, -46.578f, -43.490f, -42.343f, -44.449f, -49.048f, -51.777f, + -51.112f, -49.806f, -48.212f, -47.048f, -45.702f, -44.102f, -42.442f, -40.540f, -39.068f, + -36.570f, -34.143f, -31.763f, -29.257f, -26.773f, -25.039f, -21.845f, -19.855f, -18.298f, + -17.391f, -20.243f, -18.678f, -18.326f, -17.881f, -17.337f, -17.010f, -16.190f, -16.145f, + -15.737f, -14.333f, -14.230f, -13.805f, -13.439f, -12.637f, -12.249f, -11.690f, -11.241f, + -11.141f, -11.030f, -11.272f, -11.214f, -11.015f, -11.325f, -11.408f, -12.353f, -12.580f, + -12.941f, -12.898f, -12.372f, -12.084f, -11.896f, -10.714f, -11.191f, -11.054f, -10.320f, + -10.298f, -10.770f, -10.488f, -9.938f, -9.025f, -8.345f, -7.010f, -5.577f, -4.819f, + -4.397f, -3.941f, -3.550f, -3.725f, -3.881f, -4.075f, -4.005f, -4.417f, -4.831f, + -5.766f, -6.622f, -7.518f, -8.622f, -9.779f, -11.653f, -13.124f, -14.555f, -15.782f, + -17.322f, -18.901f, -20.013f, -21.350f, -22.032f, -22.958f, -24.195f, -25.592f, -27.393f, + -28.323f, -28.999f, -29.494f, -30.316f, -30.860f, -30.595f, -30.863f, -31.403f, -31.506f, + -31.938f, -32.282f, -32.513f, -32.960f, -33.336f, -34.210f, -34.931f, -35.636f, -36.410f, + -36.868f, -37.181f, -36.367f, -35.379f, -34.458f, -31.946f, -30.685f, -29.646f, -28.333f, + -27.006f, -25.446f, -23.282f, -20.775f, -18.332f, -15.914f, -13.686f, -11.238f, -8.764f, + -5.877f, -5.457f, -3.934f, 0.842f, 4.055f, 5.598f, 8.271f, 8.339f, 8.072f, + 7.398f, 8.054f, 8.587f, 5.715f, 4.097f, 0.111f, -4.829f, -4.104f, -4.607f, + -7.301f, -9.056f, -9.756f, -9.095f, -8.123f, -7.157f, -5.976f, -4.022f, -1.642f, + 1.316f, 2.937f, 4.857f, 8.153f, 11.248f, 12.796f, 12.846f, 12.549f, 13.398f, + 13.606f }, + { -29.534f, -30.382f, -29.879f, -30.558f, -32.134f, -37.867f, -40.425f, -41.971f, -43.051f, + -44.947f, -46.318f, -46.851f, -46.072f, -42.995f, -41.414f, -43.561f, -49.213f, -51.058f, + -50.577f, -48.855f, -47.482f, -46.138f, -45.039f, -43.513f, -42.042f, -40.546f, -38.646f, + -36.429f, -33.883f, -31.522f, -29.020f, -26.503f, -24.534f, -21.761f, -19.865f, -18.375f, + -17.085f, -20.393f, -18.563f, -18.194f, -17.833f, -17.311f, -16.758f, -16.180f, -15.648f, + -15.191f, -14.589f, -14.217f, -13.821f, -13.367f, -12.810f, -12.278f, -11.898f, -11.684f, + -11.556f, -11.121f, -11.592f, -11.571f, -11.516f, -11.893f, -12.063f, -12.950f, -13.096f, + -13.285f, -13.087f, -12.734f, -12.792f, -10.647f, -10.935f, -11.439f, -11.430f, -10.638f, + -10.855f, -11.086f, -10.627f, -10.117f, -9.338f, -8.789f, -7.658f, -6.599f, -6.040f, + -5.559f, -5.280f, -4.904f, -5.059f, -5.237f, -5.238f, -5.351f, -5.737f, -6.150f, + -6.863f, -7.850f, -9.169f, -10.058f, -11.513f, -13.210f, -14.777f, -16.444f, -17.835f, + -19.297f, -20.859f, -22.032f, -23.064f, -23.972f, -25.046f, -26.103f, -27.485f, -29.274f, + -29.960f, -30.908f, -31.374f, -32.148f, -32.395f, -32.504f, -32.571f, -33.071f, -33.079f, + -33.289f, -33.599f, -33.772f, -34.312f, -34.528f, -35.536f, -36.057f, -36.888f, -37.707f, + -37.497f, -37.457f, -36.825f, -35.858f, -34.975f, -32.570f, -31.181f, -30.162f, -28.948f, + -27.436f, -25.660f, -23.885f, -21.343f, -19.045f, -16.576f, -14.368f, -11.873f, -9.240f, + -7.892f, -6.645f, -0.681f, 2.076f, 2.858f, 5.409f, 6.667f, 7.087f, 7.012f, + 6.294f, 7.170f, 7.694f, 4.299f, 1.866f, -1.696f, -5.555f, -4.321f, -3.947f, + -7.214f, -9.207f, -9.977f, -9.129f, -8.029f, -6.988f, -6.034f, -4.066f, -1.791f, + 1.316f, 3.013f, 4.942f, 8.130f, 11.316f, 12.920f, 12.905f, 12.596f, 13.429f, + 13.606f }, + { -29.534f, -30.399f, -29.883f, -30.597f, -32.447f, -37.631f, -40.283f, -41.881f, -42.653f, + -44.321f, -45.728f, -46.382f, -45.788f, -42.715f, -40.609f, -43.666f, -48.950f, -50.276f, + -49.776f, -48.068f, -46.679f, -45.451f, -44.354f, -42.890f, -41.686f, -40.415f, -38.180f, + -36.004f, -33.425f, -30.979f, -28.614f, -26.594f, -23.679f, -21.551f, -19.767f, -18.371f, + -18.121f, -19.625f, -18.520f, -18.210f, -17.699f, -17.112f, -16.409f, -16.043f, -15.347f, + -15.167f, -14.493f, -14.383f, -13.802f, -13.239f, -12.863f, -12.435f, -11.996f, -11.919f, + -11.423f, -11.361f, -11.869f, -12.017f, -11.993f, -12.232f, -12.614f, -13.294f, -13.403f, + -13.372f, -12.900f, -12.600f, -12.436f, -12.148f, -11.157f, -11.473f, -11.413f, -10.960f, + -11.191f, -11.019f, -10.655f, -10.113f, -9.690f, -9.153f, -8.218f, -7.432f, -6.756f, + -6.618f, -6.437f, -6.138f, -6.316f, -6.231f, -6.037f, -6.800f, -6.785f, -7.393f, + -8.364f, -9.232f, -10.502f, -11.499f, -13.213f, -14.722f, -16.356f, -18.035f, -19.460f, + -21.343f, -22.841f, -23.779f, -24.904f, -25.982f, -27.166f, -28.265f, -29.395f, -31.099f, + -31.976f, -32.855f, -33.425f, -33.573f, -33.774f, -33.895f, -34.462f, -34.386f, -34.611f, + -34.781f, -34.861f, -35.196f, -35.520f, -35.872f, -36.555f, -37.215f, -38.152f, -38.738f, + -38.694f, -38.033f, -37.422f, -36.076f, -35.369f, -32.907f, -31.575f, -30.360f, -29.209f, + -27.892f, -25.789f, -24.027f, -21.638f, -19.411f, -17.248f, -14.774f, -12.481f, -11.234f, + -9.092f, -3.841f, -0.316f, 0.845f, 1.803f, 5.203f, 5.327f, 5.988f, 6.019f, + 5.211f, 5.922f, 7.032f, 2.057f, -0.162f, -2.305f, -5.808f, -5.122f, -3.364f, + -6.996f, -9.014f, -9.813f, -8.850f, -7.560f, -6.756f, -5.963f, -4.070f, -2.069f, + 1.268f, 3.071f, 5.074f, 8.151f, 11.355f, 13.046f, 12.963f, 12.648f, 13.461f, + 13.606f }, + { -29.534f, -30.416f, -29.878f, -30.633f, -32.828f, -37.496f, -40.081f, -41.748f, -42.336f, + -43.538f, -44.772f, -45.789f, -45.336f, -42.443f, -40.401f, -44.097f, -47.269f, -49.626f, + -48.735f, -47.364f, -45.660f, -44.797f, -43.587f, -42.283f, -41.388f, -39.864f, -37.812f, + -35.579f, -32.924f, -30.345f, -28.095f, -26.582f, -23.070f, -21.318f, -19.657f, -18.276f, + -18.817f, -18.683f, -18.256f, -18.039f, -17.473f, -16.815f, -15.955f, -15.541f, -14.942f, + -14.951f, -14.262f, -14.283f, -13.844f, -13.452f, -12.875f, -12.669f, -11.928f, -11.947f, + -11.272f, -10.930f, -11.828f, -12.078f, -12.302f, -12.570f, -13.134f, -13.478f, -13.587f, + -13.293f, -12.889f, -12.769f, -12.323f, -11.780f, -11.456f, -11.771f, -11.638f, -11.383f, + -11.223f, -10.924f, -10.551f, -9.968f, -9.652f, -9.103f, -8.504f, -7.883f, -7.491f, + -7.829f, -7.549f, -7.277f, -7.272f, -7.126f, -7.384f, -7.536f, -7.629f, -8.605f, + -9.435f, -10.589f, -11.745f, -13.006f, -14.564f, -16.053f, -17.602f, -19.620f, -21.585f, + -23.143f, -24.285f, -25.695f, -26.697f, -28.148f, -29.279f, -30.569f, -31.572f, -33.075f, + -33.926f, -34.678f, -34.997f, -35.059f, -35.201f, -35.136f, -35.894f, -35.956f, -36.336f, + -36.390f, -36.265f, -36.295f, -36.717f, -36.994f, -37.570f, -38.169f, -39.055f, -39.107f, + -38.979f, -38.814f, -38.025f, -36.708f, -36.107f, -32.956f, -31.676f, -30.395f, -29.291f, + -27.734f, -25.841f, -23.888f, -21.613f, -19.615f, -17.475f, -15.175f, -13.423f, -11.693f, + -6.429f, -3.643f, -1.286f, 0.884f, 2.626f, 3.267f, 4.188f, 4.839f, 4.869f, + 4.344f, 5.087f, 6.699f, -0.125f, -1.058f, -1.997f, -5.549f, -6.100f, -3.136f, + -6.419f, -8.616f, -9.441f, -8.239f, -6.761f, -6.463f, -5.812f, -4.078f, -2.417f, + 1.186f, 3.132f, 5.223f, 8.212f, 11.375f, 13.172f, 13.023f, 12.705f, 13.493f, + 13.606f }, + { -29.534f, -30.432f, -29.865f, -30.656f, -33.234f, -37.470f, -39.828f, -41.567f, -42.124f, + -42.717f, -43.593f, -44.962f, -44.568f, -41.973f, -40.673f, -43.959f, -44.751f, -48.702f, + -47.684f, -46.507f, -44.981f, -43.977f, -42.751f, -41.693f, -40.911f, -39.297f, -37.414f, + -35.235f, -32.578f, -30.030f, -27.563f, -26.019f, -22.869f, -20.991f, -19.639f, -18.334f, + -18.522f, -18.126f, -17.863f, -17.565f, -16.989f, -16.470f, -15.371f, -15.119f, -14.940f, + -14.560f, -14.094f, -14.190f, -13.733f, -13.454f, -12.908f, -12.580f, -11.939f, -11.728f, + -11.247f, -11.064f, -11.741f, -12.039f, -12.326f, -12.834f, -13.287f, -13.508f, -13.550f, + -13.273f, -12.855f, -12.753f, -12.217f, -11.428f, -11.367f, -11.753f, -11.529f, -11.332f, + -11.127f, -10.991f, -10.320f, -9.881f, -9.607f, -9.056f, -8.655f, -8.267f, -8.162f, + -8.497f, -8.286f, -8.404f, -7.996f, -8.084f, -8.614f, -8.559f, -9.032f, -9.797f, + -10.579f, -11.800f, -12.979f, -14.418f, -16.034f, -17.341f, -18.852f, -21.145f, -23.256f, + -24.928f, -26.149f, -27.604f, -28.658f, -30.018f, -31.512f, -32.534f, -33.578f, -34.534f, + -35.638f, -36.159f, -36.397f, -36.472f, -36.489f, -36.485f, -36.854f, -37.520f, -37.796f, + -37.784f, -37.587f, -37.806f, -37.897f, -38.423f, -38.507f, -38.840f, -39.797f, -39.869f, + -39.194f, -38.870f, -38.358f, -37.015f, -36.207f, -32.928f, -31.632f, -30.505f, -29.118f, + -27.759f, -25.522f, -23.690f, -21.713f, -20.035f, -17.865f, -15.709f, -14.436f, -9.179f, + -7.879f, -4.773f, -2.278f, 1.149f, 2.433f, 2.009f, 2.844f, 3.761f, 3.596f, + 3.308f, 4.844f, 5.413f, -1.825f, -2.034f, -2.462f, -5.538f, -6.815f, -3.801f, + -5.357f, -8.078f, -8.767f, -7.227f, -5.909f, -6.119f, -5.632f, -4.117f, -2.744f, + 1.073f, 3.217f, 5.360f, 8.304f, 11.388f, 13.297f, 13.087f, 12.766f, 13.526f, + 13.606f }, + { -29.534f, -30.448f, -29.843f, -30.656f, -33.612f, -37.538f, -39.552f, -41.358f, -42.000f, + -41.999f, -42.455f, -43.944f, -43.568f, -41.268f, -40.699f, -43.119f, -43.200f, -47.172f, + -46.704f, -45.543f, -44.523f, -43.137f, -41.853f, -40.958f, -40.184f, -38.823f, -36.837f, + -34.779f, -32.341f, -29.628f, -27.109f, -25.265f, -22.674f, -20.689f, -19.392f, -18.232f, + -18.168f, -17.408f, -17.368f, -17.001f, -16.553f, -15.845f, -15.008f, -14.708f, -14.922f, + -14.398f, -14.193f, -13.916f, -13.591f, -13.186f, -12.792f, -12.460f, -11.744f, -11.766f, + -11.299f, -11.014f, -11.304f, -11.845f, -12.333f, -12.804f, -13.378f, -13.468f, -13.330f, + -13.057f, -12.722f, -12.297f, -11.818f, -11.402f, -11.307f, -11.723f, -11.651f, -11.180f, + -10.878f, -10.687f, -9.898f, -9.568f, -9.499f, -9.242f, -8.733f, -8.632f, -8.837f, + -9.129f, -9.116f, -9.147f, -8.933f, -9.093f, -9.368f, -9.643f, -10.253f, -10.864f, + -11.755f, -13.054f, -14.350f, -15.846f, -17.397f, -18.636f, -20.123f, -22.580f, -24.897f, + -26.386f, -27.688f, -29.188f, -30.694f, -32.061f, -33.319f, -34.502f, -35.320f, -36.312f, + -37.395f, -37.771f, -37.809f, -37.646f, -37.927f, -38.305f, -38.584f, -38.912f, -39.365f, + -39.223f, -39.179f, -39.216f, -39.275f, -39.314f, -39.606f, -39.434f, -40.460f, -40.272f, + -39.865f, -39.191f, -38.633f, -37.248f, -36.467f, -32.556f, -31.243f, -30.315f, -28.927f, + -26.749f, -24.980f, -23.276f, -21.752f, -20.044f, -18.203f, -16.562f, -13.264f, -10.747f, + -8.848f, -6.000f, -2.171f, 0.969f, 1.087f, 1.604f, 1.941f, 2.813f, 2.150f, + 2.252f, 4.189f, 3.362f, -3.528f, -2.957f, -3.484f, -5.915f, -7.273f, -5.373f, + -4.422f, -7.361f, -7.382f, -5.724f, -5.296f, -5.738f, -5.421f, -4.147f, -2.961f, + 0.923f, 3.333f, 5.467f, 8.419f, 11.407f, 13.416f, 13.160f, 12.831f, 13.559f, + 13.606f }, + { -29.534f, -30.463f, -29.813f, -30.626f, -33.912f, -37.666f, -39.290f, -41.148f, -41.912f, + -41.477f, -41.595f, -42.906f, -42.460f, -40.396f, -39.859f, -41.841f, -43.058f, -45.650f, + -45.815f, -44.616f, -43.625f, -42.374f, -40.976f, -40.069f, -39.323f, -38.166f, -36.251f, + -34.525f, -31.941f, -29.002f, -26.713f, -24.600f, -22.321f, -20.351f, -19.059f, -17.815f, + -17.697f, -16.867f, -16.563f, -16.307f, -15.826f, -15.226f, -14.811f, -14.499f, -14.372f, + -14.283f, -14.005f, -13.839f, -13.554f, -13.119f, -12.745f, -12.321f, -11.962f, -11.805f, + -11.435f, -11.059f, -11.040f, -11.623f, -12.152f, -12.664f, -13.163f, -13.152f, -12.973f, + -12.729f, -12.505f, -11.485f, -11.439f, -11.167f, -11.210f, -11.651f, -11.405f, -11.067f, + -10.676f, -10.351f, -9.639f, -9.634f, -9.502f, -9.212f, -8.937f, -8.996f, -9.244f, + -9.688f, -9.888f, -9.728f, -9.540f, -9.926f, -10.434f, -10.838f, -11.490f, -12.208f, + -13.154f, -14.529f, -15.669f, -17.217f, -18.716f, -19.939f, -21.683f, -23.839f, -26.046f, + -27.673f, -29.262f, -30.613f, -32.274f, -33.673f, -34.974f, -36.113f, -37.013f, -37.978f, + -38.700f, -39.169f, -39.386f, -39.528f, -39.466f, -39.893f, -39.994f, -40.569f, -40.842f, + -40.637f, -40.498f, -40.518f, -40.465f, -40.136f, -40.045f, -40.194f, -40.629f, -40.316f, + -40.105f, -39.639f, -38.624f, -37.237f, -36.635f, -32.102f, -31.023f, -29.987f, -28.542f, + -26.248f, -24.595f, -23.469f, -21.818f, -20.551f, -18.042f, -17.337f, -14.113f, -11.580f, + -9.114f, -7.051f, -3.247f, -1.551f, -0.004f, 0.354f, 0.454f, 1.384f, 1.615f, + 1.796f, 3.261f, 1.904f, -5.103f, -3.825f, -4.530f, -6.581f, -7.954f, -7.267f, + -4.962f, -6.853f, -5.596f, -4.111f, -4.983f, -5.223f, -5.114f, -4.096f, -3.014f, + 0.737f, 3.469f, 5.540f, 8.544f, 11.441f, 13.528f, 13.244f, 12.898f, 13.592f, + 13.606f }, + { -29.534f, -30.476f, -29.775f, -30.561f, -34.089f, -37.799f, -39.078f, -40.962f, -41.800f, + -41.158f, -41.091f, -42.061f, -41.333f, -39.361f, -38.341f, -40.357f, -42.769f, -44.674f, + -45.164f, -43.823f, -42.546f, -41.583f, -40.190f, -39.127f, -38.449f, -37.353f, -35.640f, + -33.996f, -31.550f, -28.564f, -26.674f, -24.021f, -21.912f, -20.185f, -18.640f, -17.311f, + -17.124f, -16.380f, -15.988f, -15.463f, -15.029f, -14.617f, -14.247f, -14.001f, -13.785f, + -13.803f, -13.681f, -13.598f, -13.206f, -12.985f, -12.645f, -12.350f, -12.164f, -11.939f, + -11.541f, -11.222f, -11.123f, -11.551f, -11.936f, -12.409f, -12.843f, -12.916f, -12.620f, + -12.294f, -11.891f, -11.155f, -10.959f, -10.927f, -11.107f, -11.515f, -10.967f, -10.599f, + -10.586f, -10.008f, -9.599f, -9.488f, -9.425f, -9.232f, -9.234f, -9.278f, -9.534f, + -10.216f, -10.441f, -10.481f, -10.285f, -10.732f, -11.473f, -11.667f, -12.599f, -13.494f, + -14.495f, -15.736f, -16.911f, -18.416f, -19.915f, -21.290f, -22.937f, -25.209f, -27.291f, + -29.070f, -30.748f, -32.318f, -33.914f, -35.158f, -36.333f, -37.581f, -38.615f, -39.366f, + -39.834f, -40.429f, -40.883f, -41.018f, -41.064f, -41.036f, -41.341f, -41.586f, -41.987f, + -41.842f, -41.904f, -41.789f, -41.341f, -40.885f, -40.459f, -40.767f, -40.975f, -40.704f, + -40.146f, -39.781f, -38.902f, -36.944f, -36.583f, -31.923f, -30.626f, -29.670f, -28.177f, + -26.550f, -24.951f, -23.473f, -21.932f, -20.839f, -20.232f, -16.453f, -14.187f, -12.180f, + -10.313f, -7.716f, -5.544f, -2.640f, -0.998f, -1.008f, -0.984f, -0.340f, 0.893f, + 1.144f, 1.620f, -0.088f, -6.017f, -4.723f, -5.528f, -7.513f, -8.850f, -8.884f, + -7.393f, -7.203f, -4.684f, -3.375f, -4.866f, -4.429f, -4.666f, -3.956f, -2.913f, + 0.545f, 3.597f, 5.595f, 8.671f, 11.494f, 13.627f, 13.341f, 12.968f, 13.626f, + 13.606f }, + { -29.534f, -30.489f, -29.731f, -30.461f, -34.111f, -37.875f, -38.933f, -40.798f, -41.615f, + -40.980f, -40.863f, -41.545f, -40.324f, -38.135f, -36.980f, -39.123f, -41.360f, -43.588f, + -44.700f, -43.196f, -41.733f, -40.698f, -39.559f, -38.317f, -37.610f, -36.605f, -35.075f, + -33.457f, -31.193f, -28.074f, -26.726f, -23.607f, -21.435f, -19.969f, -18.459f, -16.450f, + -16.059f, -15.734f, -15.366f, -14.843f, -14.341f, -13.943f, -13.617f, -13.621f, -13.453f, + -13.369f, -13.486f, -13.313f, -12.894f, -12.729f, -12.437f, -12.379f, -12.318f, -11.768f, + -11.483f, -11.185f, -11.068f, -11.477f, -11.874f, -12.031f, -12.309f, -12.540f, -12.246f, + -11.882f, -11.296f, -10.996f, -10.615f, -10.789f, -11.035f, -11.207f, -10.675f, -10.433f, + -10.369f, -9.747f, -9.421f, -9.344f, -9.296f, -9.343f, -9.270f, -9.447f, -9.996f, + -10.404f, -10.990f, -11.058f, -11.082f, -11.623f, -12.158f, -12.735f, -13.792f, -14.521f, + -15.677f, -16.847f, -18.241f, -19.671f, -21.067f, -22.559f, -24.293f, -26.529f, -28.518f, + -30.596f, -32.206f, -33.974f, -35.479f, -36.527f, -37.614f, -39.111f, -39.929f, -40.364f, + -41.115f, -41.657f, -42.040f, -42.150f, -42.064f, -42.003f, -42.477f, -42.662f, -43.022f, + -43.118f, -42.833f, -42.590f, -42.081f, -41.307f, -40.728f, -41.097f, -41.160f, -40.952f, + -40.375f, -39.816f, -38.812f, -36.780f, -36.480f, -31.664f, -30.512f, -29.290f, -27.715f, + -26.442f, -25.114f, -23.718f, -22.026f, -21.535f, -19.588f, -15.445f, -14.202f, -13.038f, + -9.654f, -8.423f, -6.743f, -3.919f, -2.220f, -2.558f, -2.552f, -0.942f, 0.089f, + 0.349f, -0.344f, -3.180f, -6.732f, -5.466f, -6.073f, -8.233f, -9.484f, -10.091f, + -10.015f, -8.378f, -5.436f, -4.212f, -4.965f, -3.449f, -4.119f, -3.827f, -2.728f, + 0.390f, 3.689f, 5.654f, 8.792f, 11.568f, 13.711f, 13.452f, 13.038f, 13.659f, + 13.606f }, + { -29.534f, -30.501f, -29.681f, -30.328f, -33.962f, -37.836f, -38.849f, -40.636f, -41.335f, + -40.860f, -40.765f, -41.336f, -39.649f, -36.882f, -36.329f, -38.617f, -39.862f, -41.828f, + -44.163f, -42.667f, -41.001f, -40.031f, -38.968f, -37.698f, -36.872f, -35.847f, -34.508f, + -33.095f, -30.846f, -27.997f, -26.390f, -23.225f, -20.893f, -19.638f, -18.513f, -15.855f, + -15.175f, -14.984f, -14.565f, -14.049f, -13.569f, -13.258f, -12.928f, -13.127f, -12.987f, + -13.058f, -13.133f, -12.953f, -12.666f, -12.623f, -12.171f, -12.280f, -12.207f, -11.503f, + -11.277f, -11.184f, -10.922f, -11.177f, -11.467f, -11.725f, -11.997f, -12.107f, -11.858f, + -11.575f, -11.005f, -10.718f, -10.346f, -10.358f, -10.758f, -10.677f, -10.318f, -10.026f, + -9.967f, -9.312f, -9.110f, -9.169f, -9.307f, -9.311f, -9.407f, -9.593f, -10.082f, + -11.057f, -11.678f, -11.639f, -11.804f, -12.320f, -12.851f, -13.948f, -14.866f, -15.866f, + -16.969f, -18.092f, -19.535f, -20.847f, -22.147f, -23.731f, -25.437f, -27.669f, -29.816f, + -31.869f, -33.615f, -35.417f, -37.020f, -38.054f, -39.089f, -40.059f, -41.150f, -41.513f, + -42.191f, -42.931f, -43.281f, -43.390f, -43.346f, -43.464f, -43.479f, -43.791f, -44.127f, + -43.922f, -43.629f, -42.984f, -42.427f, -41.678f, -41.279f, -41.274f, -41.249f, -41.102f, + -40.458f, -39.554f, -38.616f, -36.682f, -35.881f, -31.652f, -30.172f, -29.073f, -27.734f, + -26.519f, -25.221f, -24.071f, -22.958f, -21.418f, -16.358f, -15.445f, -14.134f, -12.212f, + -9.539f, -8.731f, -6.902f, -4.635f, -3.910f, -3.956f, -3.825f, -1.849f, -0.838f, + -0.897f, -2.581f, -6.719f, -7.441f, -6.371f, -6.645f, -8.705f, -10.034f, -11.124f, + -10.948f, -9.591f, -7.138f, -6.173f, -5.454f, -2.723f, -3.583f, -3.827f, -2.559f, + 0.307f, 3.732f, 5.740f, 8.900f, 11.661f, 13.780f, 13.577f, 13.108f, 13.693f, + 13.606f }, + { -29.534f, -30.512f, -29.626f, -30.168f, -33.649f, -37.639f, -38.794f, -40.436f, -40.959f, + -40.741f, -40.681f, -41.257f, -39.434f, -36.029f, -36.128f, -38.572f, -39.320f, -40.296f, + -43.597f, -42.155f, -40.294f, -39.760f, -38.252f, -37.126f, -36.310f, -35.111f, -33.964f, + -32.615f, -30.568f, -28.263f, -25.739f, -22.894f, -20.644f, -19.158f, -18.093f, -15.230f, + -14.656f, -14.381f, -13.936f, -13.397f, -12.915f, -12.532f, -12.466f, -12.673f, -12.619f, + -12.594f, -12.754f, -12.661f, -12.382f, -12.333f, -12.214f, -12.223f, -12.274f, -11.676f, + -11.334f, -10.809f, -11.086f, -11.038f, -11.209f, -11.398f, -11.713f, -11.831f, -11.485f, + -11.286f, -10.771f, -10.454f, -10.163f, -10.149f, -10.302f, -10.107f, -9.861f, -9.350f, + -9.508f, -8.895f, -8.826f, -8.875f, -9.085f, -9.365f, -9.465f, -9.739f, -10.290f, + -11.345f, -11.929f, -12.113f, -12.682f, -13.192f, -13.802f, -15.082f, -16.002f, -17.083f, + -18.265f, -19.324f, -20.791f, -22.177f, -23.445f, -25.053f, -26.601f, -28.908f, -31.050f, + -33.193f, -34.915f, -36.501f, -38.220f, -39.336f, -40.472f, -41.320f, -42.195f, -42.779f, + -43.121f, -43.727f, -44.405f, -44.540f, -44.539f, -44.722f, -44.462f, -44.819f, -45.090f, + -44.635f, -44.039f, -43.876f, -42.895f, -42.179f, -41.628f, -41.427f, -41.432f, -41.078f, + -40.449f, -39.289f, -37.943f, -36.142f, -35.004f, -31.811f, -30.044f, -29.285f, -28.710f, + -27.498f, -26.064f, -24.525f, -22.549f, -19.565f, -14.891f, -15.066f, -12.842f, -11.324f, + -10.897f, -9.300f, -7.693f, -5.818f, -5.256f, -5.410f, -4.676f, -3.477f, -2.404f, + -3.023f, -5.699f, -9.565f, -8.504f, -7.527f, -7.660f, -8.988f, -10.769f, -11.956f, + -10.474f, -10.218f, -8.526f, -8.160f, -6.338f, -2.687f, -3.149f, -3.951f, -2.477f, + 0.299f, 3.735f, 5.866f, 8.993f, 11.771f, 13.834f, 13.714f, 13.176f, 13.728f, + 13.606f }, + { -29.534f, -30.522f, -29.567f, -29.989f, -33.198f, -37.264f, -38.723f, -40.161f, -40.502f, + -40.604f, -40.567f, -41.089f, -39.537f, -35.948f, -35.888f, -38.263f, -39.151f, -39.934f, + -43.100f, -41.589f, -39.775f, -39.333f, -37.596f, -36.613f, -35.822f, -34.615f, -33.403f, + -32.124f, -30.163f, -28.686f, -24.888f, -22.566f, -20.706f, -18.630f, -17.298f, -14.911f, + -14.191f, -13.732f, -13.454f, -12.691f, -12.448f, -11.928f, -12.080f, -12.035f, -12.284f, + -12.204f, -12.327f, -12.355f, -12.180f, -12.162f, -12.090f, -12.206f, -12.042f, -11.803f, + -10.994f, -11.090f, -11.005f, -11.157f, -10.966f, -11.240f, -11.448f, -11.351f, -11.135f, + -10.877f, -10.252f, -9.981f, -9.786f, -9.726f, -9.746f, -9.540f, -9.258f, -8.751f, + -8.932f, -8.375f, -8.412f, -8.567f, -8.784f, -9.106f, -9.330f, -9.753f, -10.406f, + -11.456f, -12.344f, -12.977f, -13.534f, -13.805f, -14.684f, -15.948f, -17.054f, -18.055f, + -19.467f, -20.578f, -22.112f, -23.396f, -24.617f, -26.194f, -27.879f, -30.088f, -32.277f, + -34.330f, -36.114f, -37.687f, -39.349f, -40.582f, -41.620f, -42.423f, -42.953f, -43.661f, + -44.114f, -44.443f, -45.298f, -45.575f, -45.486f, -45.538f, -45.458f, -45.544f, -45.576f, + -45.334f, -44.364f, -44.028f, -43.416f, -42.268f, -41.600f, -41.668f, -41.475f, -40.740f, + -39.959f, -39.006f, -37.303f, -35.663f, -33.730f, -32.531f, -30.161f, -29.236f, -27.883f, + -26.905f, -25.796f, -24.478f, -22.974f, -17.300f, -16.830f, -14.666f, -11.708f, -11.557f, + -11.803f, -10.222f, -8.368f, -7.653f, -6.283f, -8.448f, -6.776f, -4.837f, -4.186f, + -5.275f, -8.097f, -10.599f, -10.366f, -8.985f, -8.482f, -8.640f, -11.468f, -12.315f, + -9.943f, -10.195f, -9.136f, -9.569f, -7.240f, -3.321f, -2.833f, -4.031f, -2.476f, + 0.332f, 3.724f, 6.032f, 9.072f, 11.892f, 13.875f, 13.862f, 13.241f, 13.762f, + 13.606f }, + { -29.534f, -30.531f, -29.505f, -29.803f, -32.657f, -36.728f, -38.589f, -39.794f, -39.977f, + -40.443f, -40.417f, -40.719f, -39.614f, -36.550f, -35.704f, -37.682f, -38.464f, -40.026f, + -42.300f, -40.970f, -39.576f, -38.537f, -37.193f, -36.265f, -35.285f, -34.067f, -32.871f, + -31.598f, -29.821f, -28.341f, -24.606f, -22.632f, -20.596f, -18.426f, -16.915f, -14.351f, + -13.755f, -13.133f, -12.904f, -12.107f, -11.934f, -11.464f, -11.795f, -11.574f, -11.745f, + -11.818f, -11.934f, -12.011f, -12.031f, -12.068f, -12.137f, -12.203f, -12.049f, -11.756f, + -11.608f, -11.280f, -11.553f, -11.271f, -10.766f, -11.152f, -11.210f, -10.988f, -10.831f, + -10.360f, -9.892f, -9.465f, -9.209f, -9.135f, -9.149f, -8.716f, -8.451f, -8.197f, + -8.133f, -7.782f, -7.980f, -8.262f, -8.635f, -8.837f, -9.236f, -9.808f, -10.702f, + -11.459f, -12.720f, -13.313f, -14.076f, -14.416f, -15.314f, -16.760f, -17.834f, -18.988f, + -20.459f, -21.781f, -23.202f, -24.533f, -25.824f, -27.348f, -28.847f, -31.150f, -33.284f, + -35.225f, -37.190f, -38.806f, -40.334f, -41.661f, -42.653f, -43.516f, -43.928f, -44.525f, + -45.033f, -45.654f, -46.167f, -46.317f, -46.223f, -46.201f, -46.390f, -46.322f, -46.014f, + -45.489f, -44.827f, -44.140f, -43.462f, -42.352f, -41.708f, -41.443f, -41.263f, -40.140f, + -38.686f, -37.982f, -37.135f, -33.591f, -30.970f, -29.710f, -26.661f, -24.110f, -23.402f, + -22.561f, -22.724f, -23.070f, -20.301f, -17.378f, -17.479f, -13.969f, -12.942f, -12.149f, + -12.079f, -10.625f, -9.611f, -8.368f, -8.867f, -10.750f, -10.322f, -8.360f, -7.232f, + -7.912f, -9.404f, -11.337f, -11.967f, -10.438f, -8.945f, -8.163f, -12.205f, -12.521f, + -9.683f, -9.703f, -9.277f, -10.496f, -7.700f, -4.168f, -2.634f, -3.867f, -2.463f, + 0.366f, 3.731f, 6.219f, 9.140f, 12.023f, 13.908f, 14.017f, 13.303f, 13.797f, + 13.606f }, + { -29.534f, -30.538f, -29.440f, -29.621f, -32.083f, -36.074f, -38.358f, -39.344f, -39.396f, + -40.246f, -40.212f, -40.198f, -39.398f, -37.262f, -36.027f, -37.436f, -37.529f, -39.442f, + -41.116f, -40.458f, -39.574f, -37.723f, -36.822f, -36.018f, -34.807f, -33.459f, -32.357f, + -31.004f, -29.520f, -27.370f, -24.380f, -22.476f, -20.305f, -18.349f, -16.452f, -13.585f, + -13.303f, -12.501f, -12.370f, -11.580f, -11.551f, -11.036f, -11.490f, -11.342f, -11.421f, + -11.634f, -11.614f, -11.946f, -11.978f, -12.076f, -12.467f, -12.356f, -12.113f, -12.008f, + -11.673f, -11.656f, -11.742f, -11.307f, -10.731f, -10.836f, -10.816f, -10.652f, -10.454f, + -9.852f, -9.306f, -8.994f, -8.629f, -8.365f, -8.356f, -7.844f, -7.785f, -7.486f, + -7.436f, -7.334f, -7.517f, -7.893f, -8.285f, -8.552f, -9.306f, -9.647f, -10.610f, + -11.521f, -12.868f, -13.635f, -14.413f, -14.830f, -15.852f, -17.214f, -18.543f, -20.016f, + -21.303f, -22.708f, -24.259f, -25.481f, -26.973f, -28.231f, -29.926f, -31.934f, -34.182f, + -36.123f, -37.916f, -39.561f, -41.130f, -42.580f, -43.517f, -44.311f, -44.753f, -45.261f, + -45.819f, -46.324f, -46.954f, -47.087f, -46.940f, -46.898f, -46.946f, -46.743f, -46.461f, + -45.880f, -45.024f, -44.228f, -43.240f, -42.211f, -41.856f, -40.955f, -40.632f, -39.455f, + -37.859f, -36.625f, -33.025f, -29.662f, -28.372f, -25.342f, -24.125f, -23.214f, -22.472f, + -21.835f, -20.457f, -20.539f, -20.262f, -20.566f, -16.838f, -13.577f, -13.603f, -13.256f, + -12.684f, -11.742f, -10.875f, -10.262f, -11.763f, -12.353f, -11.941f, -11.292f, -10.679f, + -10.569f, -10.811f, -12.860f, -13.278f, -11.536f, -9.557f, -8.491f, -12.967f, -13.165f, + -9.480f, -9.067f, -9.349f, -11.098f, -7.665f, -4.796f, -2.605f, -3.391f, -2.314f, + 0.385f, 3.773f, 6.404f, 9.207f, 12.162f, 13.938f, 14.175f, 13.360f, 13.832f, + 13.606f }, + { -29.534f, -30.544f, -29.373f, -29.454f, -31.541f, -35.374f, -38.026f, -38.850f, -38.774f, + -39.985f, -39.908f, -39.660f, -38.892f, -37.523f, -36.743f, -37.463f, -36.961f, -38.394f, + -40.177f, -40.102f, -39.030f, -36.824f, -36.314f, -35.672f, -34.392f, -33.126f, -31.787f, + -30.296f, -29.175f, -26.556f, -24.183f, -22.193f, -19.916f, -18.603f, -15.288f, -13.140f, + -12.750f, -12.048f, -11.875f, -11.126f, -10.971f, -10.779f, -11.036f, -11.198f, -10.956f, + -11.394f, -11.442f, -11.821f, -12.215f, -12.488f, -12.683f, -12.627f, -12.488f, -12.411f, + -11.751f, -12.227f, -11.932f, -11.118f, -10.841f, -10.800f, -10.739f, -10.410f, -10.004f, + -9.377f, -8.941f, -8.329f, -8.020f, -7.820f, -7.476f, -7.013f, -6.964f, -6.783f, + -6.723f, -6.819f, -6.945f, -7.490f, -7.910f, -8.326f, -9.050f, -9.622f, -10.760f, + -11.894f, -13.233f, -14.029f, -14.601f, -15.164f, -16.428f, -17.814f, -19.354f, -20.679f, + -22.125f, -23.554f, -25.060f, -26.316f, -27.826f, -29.148f, -30.844f, -32.483f, -34.716f, + -36.829f, -38.497f, -40.208f, -41.638f, -43.042f, -43.882f, -44.720f, -45.141f, -45.857f, + -46.442f, -46.823f, -47.434f, -47.541f, -47.402f, -47.171f, -47.205f, -47.112f, -46.221f, + -45.907f, -44.997f, -44.206f, -43.296f, -42.244f, -41.551f, -40.710f, -39.712f, -39.227f, + -36.380f, -33.354f, -31.936f, -29.786f, -27.657f, -24.879f, -22.807f, -21.243f, -20.567f, + -20.387f, -19.855f, -20.166f, -21.612f, -18.875f, -16.618f, -14.798f, -14.172f, -13.478f, + -13.513f, -12.492f, -12.667f, -12.124f, -13.257f, -13.373f, -12.413f, -12.301f, -13.053f, + -12.405f, -12.589f, -14.575f, -15.060f, -12.946f, -10.451f, -9.410f, -13.447f, -14.024f, + -9.643f, -8.735f, -9.668f, -11.378f, -7.540f, -5.125f, -2.805f, -2.720f, -1.944f, + 0.412f, 3.843f, 6.562f, 9.286f, 12.308f, 13.970f, 14.332f, 13.412f, 13.868f, + 13.606f }, + { -29.534f, -30.549f, -29.307f, -29.312f, -31.092f, -34.711f, -37.614f, -38.361f, -38.141f, + -39.638f, -39.482f, -39.180f, -38.253f, -37.259f, -37.061f, -37.015f, -36.710f, -37.617f, + -39.489f, -39.678f, -37.776f, -36.121f, -35.917f, -35.280f, -34.009f, -32.700f, -31.490f, + -29.815f, -28.774f, -25.931f, -24.017f, -21.797f, -19.581f, -18.802f, -14.514f, -12.732f, + -12.280f, -11.650f, -11.294f, -10.736f, -10.561f, -10.549f, -10.753f, -11.062f, -10.815f, + -11.235f, -11.280f, -11.732f, -12.355f, -12.718f, -12.944f, -12.947f, -12.711f, -12.155f, + -12.120f, -11.711f, -12.105f, -11.129f, -10.856f, -10.690f, -10.616f, -10.089f, -9.823f, + -8.938f, -8.337f, -7.737f, -7.354f, -7.140f, -6.757f, -6.212f, -6.235f, -6.090f, + -6.166f, -6.216f, -6.516f, -6.997f, -7.558f, -8.069f, -8.853f, -9.722f, -10.804f, + -12.277f, -13.518f, -14.350f, -14.887f, -15.728f, -17.159f, -18.307f, -20.026f, -21.353f, + -22.783f, -24.259f, -25.616f, -27.077f, -28.462f, -29.677f, -31.331f, -33.003f, -35.155f, + -37.238f, -39.102f, -40.725f, -42.004f, -43.219f, -44.045f, -44.955f, -45.662f, -45.758f, + -46.805f, -47.351f, -47.569f, -47.702f, -47.538f, -47.511f, -47.140f, -46.826f, -46.329f, + -45.639f, -44.823f, -44.011f, -42.906f, -41.795f, -40.965f, -40.366f, -39.053f, -36.262f, + -33.256f, -32.691f, -30.994f, -27.231f, -23.423f, -22.688f, -21.369f, -20.071f, -19.494f, + -20.094f, -19.683f, -18.239f, -17.851f, -16.704f, -15.990f, -15.192f, -14.303f, -13.797f, + -13.850f, -13.682f, -13.901f, -13.472f, -14.649f, -14.670f, -13.882f, -13.780f, -13.991f, + -13.612f, -14.384f, -15.633f, -16.489f, -14.709f, -11.310f, -10.522f, -14.126f, -14.539f, + -10.408f, -8.987f, -10.394f, -11.496f, -7.702f, -5.296f, -3.157f, -2.035f, -1.361f, + 0.489f, 3.915f, 6.676f, 9.389f, 12.463f, 14.008f, 14.484f, 13.458f, 13.903f, + 13.606f }, + { -29.534f, -30.552f, -29.240f, -29.204f, -30.786f, -34.165f, -37.168f, -37.919f, -37.536f, + -39.208f, -38.973f, -38.705f, -37.572f, -36.844f, -36.538f, -36.105f, -36.623f, -37.005f, + -38.229f, -39.107f, -36.812f, -35.997f, -35.609f, -34.977f, -33.613f, -32.229f, -31.155f, + -29.682f, -27.976f, -25.783f, -23.647f, -21.401f, -19.587f, -18.506f, -14.323f, -12.628f, + -12.045f, -11.421f, -10.904f, -10.441f, -10.242f, -10.395f, -10.422f, -10.787f, -10.692f, + -10.932f, -11.280f, -11.619f, -12.337f, -12.786f, -12.902f, -12.915f, -12.729f, -12.511f, + -12.225f, -11.866f, -11.470f, -11.154f, -10.832f, -10.651f, -10.455f, -9.952f, -9.471f, + -8.577f, -7.783f, -7.259f, -6.780f, -6.431f, -6.025f, -5.664f, -5.528f, -5.390f, + -5.523f, -5.628f, -5.998f, -6.567f, -7.166f, -7.887f, -8.780f, -9.887f, -11.028f, + -12.572f, -13.436f, -14.538f, -15.233f, -16.281f, -17.514f, -18.840f, -20.408f, -21.923f, + -23.146f, -24.831f, -26.079f, -27.583f, -28.951f, -30.236f, -31.803f, -33.267f, -35.370f, + -37.444f, -39.423f, -40.836f, -42.201f, -43.242f, -44.172f, -44.844f, -45.674f, -46.056f, + -46.757f, -47.189f, -47.576f, -47.487f, -47.406f, -47.312f, -47.124f, -46.555f, -46.189f, + -45.214f, -44.334f, -43.151f, -42.404f, -41.472f, -40.781f, -38.420f, -37.231f, -33.954f, + -34.083f, -32.350f, -25.939f, -23.671f, -23.328f, -21.539f, -19.960f, -19.272f, -17.952f, + -19.165f, -20.384f, -19.521f, -17.923f, -16.168f, -16.043f, -15.836f, -14.758f, -14.277f, + -13.685f, -15.389f, -14.847f, -14.363f, -15.115f, -16.836f, -15.902f, -15.826f, -14.970f, + -15.791f, -16.173f, -16.214f, -17.296f, -15.903f, -12.456f, -11.914f, -15.490f, -14.878f, + -11.449f, -9.807f, -11.245f, -11.694f, -8.097f, -5.397f, -3.423f, -1.430f, -0.649f, + 0.639f, 3.952f, 6.749f, 9.525f, 12.625f, 14.057f, 14.624f, 13.498f, 13.939f, + 13.606f }, + { -29.534f, -30.554f, -29.175f, -29.133f, -30.653f, -33.799f, -36.741f, -37.539f, -37.001f, + -38.730f, -38.489f, -38.128f, -36.842f, -36.609f, -35.742f, -35.716f, -36.956f, -36.249f, + -36.514f, -38.608f, -36.485f, -35.708f, -35.102f, -34.557f, -33.128f, -31.941f, -30.628f, + -29.348f, -27.262f, -25.448f, -23.295f, -21.060f, -19.566f, -18.241f, -14.142f, -12.564f, + -11.785f, -11.187f, -10.675f, -10.265f, -9.951f, -10.302f, -10.108f, -10.469f, -10.502f, + -10.853f, -11.190f, -11.559f, -12.177f, -12.656f, -12.685f, -12.894f, -12.765f, -12.383f, + -11.975f, -11.519f, -11.577f, -11.109f, -10.776f, -10.596f, -10.153f, -9.797f, -9.281f, + -8.247f, -7.443f, -6.714f, -6.231f, -5.825f, -5.357f, -5.069f, -4.856f, -4.828f, + -4.876f, -5.063f, -5.509f, -6.074f, -6.680f, -7.598f, -8.555f, -9.854f, -11.012f, + -12.516f, -13.473f, -14.683f, -15.406f, -16.741f, -17.882f, -19.362f, -20.786f, -22.246f, + -23.593f, -25.154f, -26.543f, -27.858f, -29.267f, -30.486f, -31.927f, -33.531f, -35.425f, + -37.399f, -39.402f, -40.961f, -42.157f, -43.135f, -44.065f, -44.912f, -45.302f, -45.929f, + -46.344f, -46.779f, -47.134f, -47.336f, -47.147f, -46.942f, -46.837f, -46.160f, -45.674f, + -44.765f, -44.030f, -42.662f, -41.901f, -40.885f, -39.057f, -37.702f, -37.176f, -32.509f, + -31.684f, -26.771f, -24.360f, -24.748f, -23.160f, -21.285f, -19.376f, -18.329f, -17.550f, + -17.179f, -20.659f, -19.650f, -18.185f, -16.313f, -15.932f, -16.390f, -14.992f, -14.530f, + -14.617f, -16.466f, -15.941f, -15.405f, -16.919f, -17.994f, -17.112f, -18.229f, -17.646f, + -18.289f, -17.658f, -17.786f, -18.020f, -16.494f, -14.513f, -13.570f, -16.892f, -15.423f, + -12.420f, -10.983f, -11.759f, -11.918f, -8.399f, -5.445f, -3.383f, -0.876f, 0.092f, + 0.854f, 3.933f, 6.793f, 9.695f, 12.790f, 14.118f, 14.751f, 13.533f, 13.976f, + 13.606f }, + { -29.534f, -30.554f, -29.111f, -29.100f, -30.698f, -33.642f, -36.376f, -37.203f, -36.554f, + -38.245f, -38.153f, -37.426f, -36.119f, -36.523f, -35.519f, -36.202f, -37.701f, -35.637f, + -35.286f, -38.201f, -36.193f, -35.048f, -34.561f, -34.056f, -32.802f, -31.465f, -30.113f, + -28.746f, -26.990f, -25.156f, -23.052f, -21.162f, -19.465f, -17.823f, -14.121f, -12.716f, + -11.655f, -11.004f, -10.536f, -10.239f, -9.797f, -10.087f, -9.897f, -10.176f, -10.411f, + -10.674f, -11.099f, -11.477f, -12.012f, -12.316f, -12.593f, -12.713f, -12.546f, -12.300f, + -12.006f, -11.935f, -11.292f, -10.999f, -10.657f, -10.472f, -9.976f, -9.532f, -9.109f, + -7.968f, -7.057f, -6.232f, -5.682f, -5.205f, -4.794f, -4.479f, -4.202f, -4.254f, + -4.259f, -4.499f, -4.880f, -5.556f, -6.044f, -7.272f, -8.352f, -9.485f, -11.012f, + -12.329f, -13.381f, -14.625f, -15.662f, -16.766f, -17.978f, -19.475f, -21.195f, -22.468f, + -23.949f, -25.249f, -26.658f, -28.217f, -29.370f, -30.781f, -32.143f, -33.408f, -35.392f, + -37.186f, -39.082f, -40.612f, -41.818f, -43.086f, -43.695f, -44.369f, -44.635f, -45.151f, + -45.679f, -46.213f, -46.358f, -46.624f, -46.633f, -46.199f, -45.956f, -45.436f, -45.014f, + -44.206f, -43.291f, -41.933f, -41.034f, -39.550f, -38.296f, -37.119f, -34.158f, -31.893f, + -28.918f, -27.129f, -25.461f, -23.667f, -22.678f, -20.394f, -18.263f, -17.543f, -16.998f, + -16.304f, -18.197f, -18.592f, -17.497f, -16.279f, -16.183f, -15.961f, -14.728f, -14.195f, + -15.387f, -16.781f, -17.434f, -17.422f, -18.799f, -19.039f, -18.336f, -20.339f, -20.085f, + -19.716f, -19.022f, -19.380f, -18.670f, -17.255f, -16.567f, -15.385f, -17.729f, -16.010f, + -13.256f, -12.155f, -12.067f, -11.898f, -8.437f, -5.534f, -3.059f, -0.322f, 0.817f, + 1.103f, 3.864f, 6.831f, 9.894f, 12.954f, 14.191f, 14.861f, 13.563f, 14.013f, + 13.606f }, + { -29.534f, -30.553f, -29.050f, -29.103f, -30.902f, -33.686f, -36.096f, -36.866f, -36.183f, + -37.789f, -38.035f, -36.717f, -35.598f, -36.366f, -35.838f, -36.592f, -38.173f, -35.405f, + -34.441f, -37.658f, -35.740f, -34.701f, -34.044f, -33.661f, -32.453f, -30.997f, -29.644f, + -28.212f, -26.676f, -24.960f, -22.945f, -21.099f, -19.515f, -17.069f, -14.148f, -12.937f, + -11.802f, -11.204f, -10.635f, -10.238f, -9.598f, -9.797f, -9.763f, -9.936f, -10.222f, + -10.661f, -11.022f, -11.301f, -11.814f, -12.016f, -12.224f, -12.412f, -12.420f, -12.187f, + -12.125f, -11.661f, -11.358f, -10.866f, -10.621f, -10.218f, -9.746f, -9.247f, -8.712f, + -7.630f, -6.425f, -5.692f, -5.204f, -4.754f, -4.255f, -3.954f, -3.692f, -3.628f, + -3.641f, -3.891f, -4.232f, -4.826f, -5.512f, -6.737f, -7.882f, -9.150f, -10.713f, + -11.940f, -13.379f, -14.353f, -15.510f, -16.623f, -18.082f, -19.571f, -21.208f, -22.508f, + -23.996f, -25.318f, -26.636f, -27.959f, -29.289f, -30.828f, -32.140f, -33.523f, -35.171f, + -36.828f, -38.594f, -39.958f, -41.069f, -42.285f, -43.068f, -43.615f, -44.065f, -43.914f, + -44.761f, -45.400f, -45.569f, -45.948f, -45.728f, -45.620f, -45.061f, -44.586f, -44.184f, + -43.359f, -42.506f, -41.788f, -40.227f, -38.494f, -36.502f, -33.181f, -31.850f, -31.647f, + -30.432f, -28.038f, -25.462f, -22.301f, -21.096f, -19.176f, -17.163f, -16.205f, -17.081f, + -15.281f, -16.499f, -17.465f, -16.633f, -15.794f, -15.886f, -15.653f, -13.114f, -14.657f, + -16.322f, -17.275f, -18.365f, -19.255f, -20.362f, -19.627f, -20.388f, -22.436f, -21.966f, + -21.500f, -20.754f, -19.812f, -18.828f, -18.256f, -17.551f, -17.083f, -18.059f, -16.429f, + -14.078f, -13.078f, -12.790f, -11.633f, -8.300f, -5.819f, -2.712f, 0.186f, 1.552f, + 1.368f, 3.782f, 6.885f, 10.109f, 13.111f, 14.274f, 14.951f, 13.589f, 14.050f, + 13.606f }, + { -29.534f, -30.551f, -28.992f, -29.134f, -31.225f, -33.885f, -35.891f, -36.473f, -35.846f, + -37.377f, -38.110f, -36.178f, -35.415f, -36.078f, -35.801f, -35.959f, -37.751f, -35.229f, + -33.398f, -37.001f, -35.226f, -34.341f, -33.455f, -33.164f, -31.953f, -30.616f, -29.404f, + -27.825f, -26.260f, -24.841f, -23.016f, -21.029f, -19.995f, -16.855f, -14.219f, -13.059f, + -11.993f, -11.157f, -10.681f, -10.339f, -9.726f, -9.739f, -9.777f, -9.832f, -10.060f, + -10.423f, -10.814f, -11.115f, -11.537f, -11.724f, -12.022f, -12.119f, -12.054f, -11.928f, + -11.617f, -11.616f, -11.303f, -10.734f, -10.453f, -10.003f, -9.535f, -8.978f, -8.262f, + -7.254f, -5.980f, -5.428f, -4.812f, -4.383f, -3.872f, -3.586f, -3.223f, -3.082f, + -3.108f, -3.388f, -3.750f, -4.344f, -4.986f, -6.035f, -7.240f, -8.680f, -10.261f, + -11.646f, -13.014f, -14.139f, -15.432f, -16.672f, -17.960f, -19.458f, -20.993f, -22.460f, + -23.817f, -25.183f, -26.431f, -27.733f, -29.028f, -30.545f, -31.762f, -33.137f, -34.720f, + -36.212f, -37.806f, -39.020f, -40.303f, -41.309f, -42.124f, -42.387f, -43.177f, -43.508f, + -43.865f, -44.190f, -44.431f, -44.587f, -44.719f, -44.697f, -44.336f, -43.134f, -43.222f, + -42.894f, -43.366f, -40.697f, -38.398f, -34.144f, -32.501f, -34.244f, -32.429f, -31.427f, + -28.793f, -27.154f, -24.683f, -22.018f, -19.722f, -18.023f, -16.044f, -16.022f, -15.495f, + -15.024f, -15.843f, -15.973f, -16.352f, -15.383f, -15.436f, -14.152f, -12.240f, -16.439f, + -17.535f, -17.898f, -19.311f, -20.137f, -21.205f, -20.083f, -22.357f, -24.373f, -23.907f, + -23.452f, -22.188f, -20.466f, -18.727f, -19.004f, -18.519f, -18.363f, -18.034f, -16.819f, + -15.098f, -13.918f, -13.982f, -11.418f, -8.112f, -6.327f, -2.586f, 0.503f, 2.344f, + 1.665f, 3.741f, 6.969f, 10.327f, 13.253f, 14.364f, 15.020f, 13.612f, 14.088f, + 13.606f }, + { -29.534f, -30.547f, -28.937f, -29.186f, -31.607f, -34.161f, -35.723f, -35.981f, -35.490f, + -37.010f, -38.278f, -35.902f, -35.430f, -35.789f, -34.753f, -34.580f, -36.492f, -34.812f, + -32.647f, -36.353f, -34.745f, -33.754f, -32.944f, -32.487f, -31.602f, -30.273f, -29.091f, + -27.531f, -25.923f, -24.632f, -23.018f, -21.568f, -19.737f, -17.255f, -14.269f, -13.034f, + -12.061f, -11.240f, -10.786f, -10.450f, -9.982f, -9.515f, -9.657f, -9.631f, -9.816f, + -10.201f, -10.678f, -10.836f, -11.272f, -11.498f, -11.732f, -11.829f, -11.774f, -11.524f, + -11.155f, -11.168f, -11.120f, -10.610f, -10.186f, -9.864f, -9.250f, -8.714f, -7.932f, + -6.878f, -5.848f, -5.213f, -4.604f, -4.007f, -3.571f, -3.246f, -2.961f, -2.729f, + -2.672f, -2.886f, -3.315f, -3.885f, -4.549f, -5.581f, -6.747f, -8.128f, -9.583f, + -11.156f, -12.758f, -13.948f, -15.241f, -16.473f, -17.760f, -19.303f, -20.716f, -22.122f, + -23.417f, -24.721f, -25.906f, -27.076f, -28.518f, -30.084f, -31.372f, -32.780f, -34.094f, + -35.446f, -36.774f, -37.963f, -39.181f, -40.043f, -40.543f, -41.067f, -41.574f, -42.207f, + -42.420f, -42.795f, -43.011f, -43.110f, -43.302f, -43.139f, -42.729f, -42.576f, -41.754f, + -42.586f, -37.387f, -37.795f, -34.618f, -34.869f, -35.331f, -34.136f, -32.594f, -30.368f, + -28.741f, -26.574f, -24.007f, -20.946f, -19.352f, -17.096f, -15.040f, -14.916f, -13.119f, + -14.016f, -14.887f, -15.090f, -15.403f, -15.312f, -14.147f, -13.466f, -15.499f, -17.815f, + -18.646f, -19.003f, -20.045f, -21.713f, -22.898f, -21.228f, -24.236f, -26.227f, -25.922f, + -25.296f, -23.361f, -21.530f, -19.660f, -19.988f, -20.734f, -19.416f, -18.038f, -17.170f, + -16.243f, -14.947f, -14.932f, -11.427f, -7.954f, -6.891f, -2.695f, 0.504f, 3.179f, + 2.033f, 3.785f, 7.086f, 10.535f, 13.376f, 14.457f, 15.070f, 13.633f, 14.126f, + 13.606f }, + { -29.534f, -30.541f, -28.887f, -29.246f, -31.980f, -34.423f, -35.536f, -35.376f, -35.086f, + -36.689f, -38.412f, -35.816f, -35.306f, -35.571f, -33.071f, -33.236f, -34.894f, -34.272f, + -32.595f, -35.581f, -34.453f, -33.549f, -32.265f, -31.867f, -31.072f, -30.010f, -28.650f, + -27.205f, -25.725f, -24.437f, -23.196f, -22.044f, -19.042f, -17.408f, -14.408f, -13.065f, + -12.246f, -11.346f, -10.994f, -10.418f, -9.996f, -9.409f, -9.432f, -9.463f, -9.725f, + -10.023f, -10.351f, -10.628f, -10.894f, -11.132f, -11.347f, -11.490f, -11.362f, -11.205f, + -10.796f, -11.031f, -10.896f, -10.325f, -10.007f, -9.476f, -9.004f, -8.375f, -7.452f, + -6.390f, -5.661f, -5.219f, -4.492f, -3.796f, -3.278f, -3.004f, -2.703f, -2.427f, + -2.354f, -2.570f, -2.982f, -3.542f, -4.215f, -5.232f, -6.361f, -7.559f, -8.949f, + -10.565f, -12.140f, -13.659f, -14.905f, -16.210f, -17.508f, -18.879f, -20.248f, -21.618f, + -22.804f, -24.144f, -25.250f, -26.500f, -27.965f, -29.473f, -30.719f, -32.120f, -33.274f, + -34.413f, -35.668f, -36.627f, -37.746f, -38.561f, -38.919f, -39.494f, -39.759f, -40.476f, + -40.844f, -41.228f, -41.478f, -41.757f, -41.883f, -41.746f, -41.608f, -41.265f, -41.269f, + -37.749f, -37.482f, -35.285f, -36.520f, -35.721f, -34.478f, -32.773f, -31.351f, -29.419f, + -27.302f, -25.644f, -22.832f, -20.550f, -19.121f, -17.492f, -14.571f, -13.664f, -11.491f, + -13.005f, -13.375f, -14.396f, -15.096f, -14.701f, -15.554f, -16.846f, -18.130f, -19.590f, + -20.116f, -20.482f, -20.974f, -22.074f, -23.835f, -24.222f, -26.186f, -27.857f, -27.691f, + -26.527f, -24.183f, -22.335f, -21.264f, -21.720f, -23.396f, -20.349f, -18.443f, -17.315f, + -17.221f, -16.133f, -15.275f, -11.582f, -7.995f, -7.327f, -2.865f, 0.194f, 3.949f, + 2.504f, 3.931f, 7.234f, 10.729f, 13.479f, 14.548f, 15.100f, 13.655f, 14.165f, + 13.606f }, + { -29.534f, -30.534f, -28.841f, -29.303f, -32.279f, -34.578f, -35.272f, -34.679f, -34.635f, + -36.402f, -38.407f, -35.737f, -34.864f, -35.332f, -31.775f, -32.161f, -33.414f, -33.826f, + -32.509f, -34.845f, -34.148f, -33.452f, -31.596f, -31.327f, -30.441f, -29.508f, -28.192f, + -26.804f, -25.560f, -24.315f, -23.007f, -22.294f, -19.132f, -16.876f, -14.512f, -13.342f, + -12.296f, -11.469f, -11.139f, -10.403f, -10.150f, -9.485f, -9.391f, -9.395f, -9.527f, + -9.803f, -10.144f, -10.350f, -10.576f, -10.849f, -10.988f, -11.132f, -10.862f, -10.702f, + -10.813f, -10.823f, -10.370f, -10.033f, -9.669f, -9.187f, -8.752f, -7.997f, -6.827f, + -6.093f, -5.510f, -4.990f, -4.366f, -3.873f, -3.239f, -2.805f, -2.404f, -2.132f, + -2.066f, -2.315f, -2.808f, -3.358f, -4.062f, -5.036f, -6.103f, -7.242f, -8.520f, + -10.059f, -11.576f, -13.423f, -14.698f, -15.821f, -17.112f, -18.418f, -19.735f, -20.967f, + -22.163f, -23.507f, -24.611f, -25.903f, -27.200f, -28.604f, -29.916f, -31.217f, -32.155f, + -33.249f, -34.305f, -35.367f, -36.429f, -36.935f, -37.417f, -37.837f, -38.284f, -38.590f, + -39.055f, -39.250f, -39.651f, -39.998f, -40.099f, -40.164f, -40.513f, -39.311f, -37.186f, + -37.388f, -35.111f, -36.666f, -35.438f, -34.382f, -32.646f, -31.894f, -30.193f, -26.831f, + -24.706f, -23.192f, -21.271f, -20.497f, -18.692f, -17.349f, -14.739f, -12.971f, -11.183f, + -11.080f, -12.018f, -12.718f, -12.981f, -14.471f, -16.874f, -17.504f, -19.459f, -20.773f, + -21.657f, -21.762f, -22.504f, -23.237f, -24.472f, -26.877f, -28.055f, -29.239f, -28.653f, + -27.362f, -25.288f, -23.587f, -22.558f, -23.414f, -25.166f, -20.928f, -19.184f, -17.635f, + -18.149f, -17.311f, -15.479f, -11.798f, -8.438f, -7.597f, -2.982f, -0.283f, 4.489f, + 3.067f, 4.157f, 7.406f, 10.912f, 13.564f, 14.633f, 15.114f, 13.677f, 14.205f, + 13.606f }, + { -29.534f, -30.526f, -28.799f, -29.345f, -32.447f, -34.555f, -34.890f, -33.929f, -34.169f, + -36.113f, -38.204f, -35.503f, -34.276f, -35.022f, -31.506f, -31.186f, -32.231f, -33.473f, + -31.999f, -34.492f, -33.642f, -32.957f, -31.459f, -30.621f, -29.832f, -28.904f, -27.645f, + -26.315f, -25.410f, -24.204f, -22.768f, -22.129f, -19.340f, -16.694f, -14.464f, -13.448f, + -12.191f, -11.687f, -11.345f, -10.716f, -10.408f, -9.624f, -9.555f, -9.474f, -9.564f, + -9.763f, -9.947f, -10.120f, -10.337f, -10.570f, -10.727f, -10.702f, -10.469f, -10.373f, + -10.512f, -10.442f, -10.156f, -9.661f, -9.238f, -8.877f, -8.358f, -7.759f, -6.763f, + -5.767f, -5.175f, -4.610f, -4.184f, -3.765f, -3.228f, -2.682f, -2.238f, -2.009f, + -2.049f, -2.264f, -2.701f, -3.288f, -3.923f, -4.884f, -5.880f, -7.047f, -8.304f, + -9.670f, -11.117f, -12.607f, -14.144f, -15.534f, -16.669f, -17.943f, -19.267f, -20.510f, + -21.686f, -22.925f, -23.929f, -25.205f, -26.558f, -27.746f, -28.978f, -30.048f, -30.906f, + -31.918f, -32.741f, -33.679f, -34.585f, -35.314f, -35.884f, -35.977f, -36.471f, -36.638f, + -36.980f, -37.262f, -37.646f, -38.073f, -38.166f, -38.650f, -36.864f, -36.638f, -36.266f, + -35.725f, -35.914f, -34.543f, -32.916f, -32.218f, -31.158f, -30.714f, -28.836f, -24.669f, + -23.479f, -22.638f, -18.959f, -18.290f, -17.721f, -16.912f, -14.530f, -11.866f, -10.896f, + -9.422f, -11.668f, -12.827f, -13.982f, -14.551f, -17.534f, -18.714f, -19.682f, -21.785f, + -22.915f, -23.365f, -23.670f, -25.098f, -26.290f, -28.679f, -29.440f, -30.099f, -29.475f, + -28.429f, -27.000f, -25.140f, -23.878f, -24.683f, -26.392f, -21.645f, -20.370f, -18.877f, + -19.282f, -18.391f, -15.941f, -12.109f, -9.205f, -7.779f, -3.131f, -0.742f, 4.679f, + 3.674f, 4.419f, 7.597f, 11.095f, 13.637f, 14.710f, 15.113f, 13.704f, 14.245f, + 13.606f }, + { -29.534f, -30.516f, -28.761f, -29.363f, -32.444f, -34.313f, -34.375f, -33.175f, -33.730f, + -35.758f, -37.790f, -35.090f, -33.883f, -34.773f, -31.987f, -30.342f, -31.305f, -33.010f, + -31.529f, -34.013f, -33.163f, -32.408f, -31.162f, -29.801f, -29.049f, -28.292f, -27.164f, + -25.992f, -25.168f, -24.026f, -22.655f, -21.402f, -19.256f, -16.402f, -14.379f, -13.393f, + -12.376f, -11.683f, -11.535f, -10.930f, -10.563f, -9.795f, -9.604f, -9.533f, -9.637f, + -9.751f, -9.889f, -9.971f, -10.127f, -10.275f, -10.484f, -10.370f, -10.035f, -10.003f, + -10.135f, -10.147f, -10.082f, -9.593f, -8.963f, -8.633f, -8.062f, -7.358f, -6.442f, + -5.419f, -4.975f, -4.651f, -4.216f, -3.732f, -3.120f, -2.619f, -2.245f, -2.034f, + -2.051f, -2.282f, -2.773f, -3.296f, -3.969f, -4.749f, -5.701f, -6.893f, -8.052f, + -9.388f, -10.844f, -12.164f, -13.368f, -14.871f, -16.357f, -17.545f, -18.840f, -19.966f, + -21.099f, -22.152f, -23.150f, -24.475f, -25.641f, -26.715f, -27.767f, -28.605f, -29.454f, + -30.115f, -31.049f, -31.774f, -32.868f, -33.299f, -33.708f, -33.871f, -34.476f, -34.818f, + -35.127f, -34.968f, -35.724f, -36.139f, -36.568f, -36.529f, -35.354f, -34.142f, -35.306f, + -35.627f, -33.864f, -32.755f, -31.498f, -30.344f, -29.662f, -29.135f, -26.387f, -24.286f, + -23.496f, -23.044f, -20.545f, -17.789f, -16.281f, -13.973f, -13.594f, -10.674f, -9.262f, + -8.557f, -11.244f, -11.543f, -14.267f, -15.125f, -17.352f, -18.799f, -20.001f, -21.919f, + -23.481f, -24.408f, -25.255f, -26.358f, -28.239f, -29.928f, -30.362f, -30.959f, -30.378f, + -29.080f, -28.177f, -26.480f, -25.209f, -26.011f, -27.907f, -23.400f, -22.347f, -21.034f, + -20.276f, -19.249f, -16.404f, -12.557f, -9.859f, -7.923f, -3.464f, -1.070f, 4.522f, + 4.266f, 4.672f, 7.802f, 11.289f, 13.706f, 14.779f, 15.103f, 13.735f, 14.286f, + 13.606f }, + { -29.534f, -30.504f, -28.728f, -29.348f, -32.255f, -33.850f, -33.747f, -32.452f, -33.336f, + -35.265f, -37.180f, -34.633f, -33.840f, -34.715f, -32.377f, -29.751f, -30.622f, -32.376f, + -31.137f, -32.950f, -32.843f, -31.985f, -30.474f, -29.117f, -28.399f, -27.648f, -26.667f, + -25.707f, -24.872f, -23.637f, -22.560f, -20.448f, -18.716f, -16.130f, -14.479f, -13.480f, + -12.395f, -11.766f, -11.701f, -10.858f, -10.620f, -9.936f, -9.753f, -9.583f, -9.561f, + -9.692f, -9.768f, -9.939f, -10.056f, -10.287f, -10.317f, -10.280f, -9.995f, -9.866f, + -9.884f, -9.809f, -9.511f, -9.336f, -8.894f, -8.438f, -7.859f, -6.943f, -6.022f, + -5.243f, -4.840f, -4.597f, -4.102f, -3.661f, -3.088f, -2.667f, -2.311f, -2.184f, + -2.201f, -2.409f, -2.848f, -3.339f, -4.035f, -4.737f, -5.705f, -6.768f, -7.832f, + -9.180f, -10.525f, -11.817f, -13.067f, -14.297f, -15.893f, -17.111f, -18.397f, -19.485f, + -20.424f, -21.439f, -22.526f, -23.551f, -24.654f, -25.532f, -26.222f, -27.082f, -28.094f, + -28.574f, -29.057f, -30.188f, -30.840f, -31.485f, -32.024f, -32.351f, -32.815f, -33.024f, + -33.349f, -33.674f, -33.938f, -34.202f, -34.610f, -33.071f, -32.610f, -35.104f, -34.535f, + -33.150f, -31.789f, -31.051f, -29.825f, -28.380f, -28.153f, -27.515f, -24.322f, -24.452f, + -21.204f, -21.541f, -19.780f, -20.195f, -18.435f, -12.887f, -14.279f, -10.103f, -7.904f, + -7.482f, -11.122f, -11.879f, -14.565f, -16.155f, -17.374f, -19.052f, -19.551f, -22.040f, + -24.009f, -25.146f, -27.033f, -27.649f, -29.170f, -31.059f, -31.046f, -31.667f, -31.316f, + -29.993f, -29.015f, -27.900f, -26.769f, -27.586f, -29.326f, -26.025f, -24.836f, -23.116f, + -20.819f, -19.800f, -16.627f, -13.096f, -10.041f, -8.003f, -3.961f, -1.258f, 4.132f, + 4.800f, 4.894f, 8.015f, 11.503f, 13.781f, 14.839f, 15.087f, 13.773f, 14.327f, + 13.606f }, + { -29.534f, -30.491f, -28.700f, -29.297f, -31.889f, -33.203f, -33.053f, -31.776f, -32.975f, + -34.606f, -36.403f, -34.300f, -34.017f, -34.701f, -32.078f, -29.261f, -30.211f, -31.817f, + -30.615f, -32.152f, -32.666f, -31.496f, -30.111f, -28.665f, -27.698f, -27.020f, -26.168f, + -25.290f, -24.429f, -22.984f, -22.274f, -19.578f, -18.463f, -16.044f, -14.515f, -13.447f, + -12.425f, -11.920f, -11.613f, -10.803f, -10.688f, -10.049f, -9.948f, -9.549f, -9.523f, + -9.671f, -9.712f, -9.802f, -9.945f, -10.127f, -10.267f, -10.112f, -9.855f, -9.839f, + -9.735f, -9.588f, -9.131f, -9.068f, -8.724f, -8.220f, -7.563f, -6.695f, -5.919f, + -4.978f, -4.709f, -4.454f, -4.066f, -3.553f, -3.039f, -2.770f, -2.525f, -2.405f, + -2.359f, -2.580f, -3.060f, -3.389f, -4.183f, -4.882f, -5.890f, -6.894f, -7.981f, + -9.160f, -10.405f, -11.650f, -12.873f, -14.028f, -15.549f, -16.830f, -17.893f, -18.921f, + -19.809f, -20.652f, -21.779f, -22.718f, -23.649f, -24.343f, -24.997f, -25.679f, -26.555f, + -26.935f, -26.935f, -28.393f, -28.957f, -29.701f, -29.830f, -30.569f, -30.638f, -31.449f, + -31.666f, -31.692f, -32.142f, -32.234f, -32.555f, -32.913f, -33.243f, -32.632f, -31.417f, + -30.578f, -29.142f, -28.589f, -27.914f, -27.405f, -26.793f, -26.000f, -23.169f, -23.080f, + -20.373f, -21.308f, -19.390f, -17.917f, -16.662f, -14.122f, -13.550f, -10.136f, -9.767f, + -11.822f, -12.677f, -12.451f, -14.663f, -16.312f, -17.322f, -19.620f, -20.016f, -22.022f, + -24.617f, -26.025f, -28.251f, -29.041f, -30.096f, -32.177f, -31.838f, -32.281f, -32.401f, + -30.993f, -30.171f, -29.337f, -28.654f, -29.505f, -30.356f, -28.424f, -26.921f, -24.263f, + -21.294f, -20.089f, -16.799f, -13.603f, -9.865f, -7.944f, -4.393f, -1.351f, 3.657f, + 5.261f, 5.097f, 8.226f, 11.737f, 13.870f, 14.893f, 15.069f, 13.819f, 14.369f, + 13.606f }, + { -29.534f, -30.476f, -28.675f, -29.211f, -31.375f, -32.437f, -32.357f, -31.152f, -32.607f, + -33.832f, -35.491f, -34.138f, -34.179f, -34.412f, -31.190f, -28.628f, -29.841f, -31.361f, + -30.249f, -31.771f, -32.476f, -31.018f, -29.813f, -28.505f, -27.113f, -26.429f, -25.711f, + -24.856f, -23.833f, -22.303f, -21.497f, -19.382f, -17.994f, -15.814f, -14.448f, -13.425f, + -12.559f, -12.102f, -11.544f, -10.876f, -10.741f, -10.100f, -9.866f, -9.662f, -9.474f, + -9.399f, -9.405f, -9.499f, -9.809f, -9.855f, -10.040f, -10.033f, -9.852f, -9.864f, + -9.595f, -9.437f, -8.913f, -8.780f, -8.454f, -7.961f, -7.290f, -6.439f, -5.563f, + -4.771f, -4.559f, -4.244f, -3.911f, -3.610f, -3.200f, -2.815f, -2.742f, -2.583f, + -2.662f, -2.694f, -3.204f, -3.578f, -4.326f, -5.117f, -6.087f, -7.130f, -8.167f, + -9.231f, -10.256f, -11.545f, -12.771f, -13.846f, -15.294f, -16.414f, -17.488f, -18.385f, + -19.172f, -20.223f, -20.973f, -21.824f, -22.543f, -23.244f, -23.801f, -24.541f, -25.030f, + -25.100f, -25.504f, -26.356f, -26.965f, -27.528f, -27.771f, -28.615f, -29.218f, -29.587f, + -29.890f, -30.316f, -30.325f, -30.571f, -31.033f, -31.116f, -30.387f, -29.789f, -28.713f, + -27.151f, -24.948f, -24.921f, -25.061f, -25.780f, -25.647f, -23.853f, -22.340f, -20.846f, + -21.433f, -20.511f, -16.768f, -16.628f, -15.633f, -15.563f, -14.352f, -13.595f, -12.816f, + -11.195f, -13.909f, -14.184f, -15.929f, -16.665f, -17.412f, -19.969f, -20.646f, -22.334f, + -25.077f, -26.968f, -28.957f, -29.458f, -30.518f, -32.925f, -32.631f, -33.051f, -33.514f, + -32.429f, -32.087f, -31.311f, -30.340f, -31.333f, -31.172f, -29.823f, -27.923f, -24.578f, + -21.824f, -20.092f, -17.020f, -13.940f, -9.732f, -7.678f, -4.527f, -1.362f, 3.184f, + 5.642f, 5.313f, 8.421f, 11.981f, 13.977f, 14.944f, 15.053f, 13.875f, 14.412f, + 13.606f }, + { -29.534f, -30.460f, -28.654f, -29.091f, -30.763f, -31.629f, -31.720f, -30.581f, -32.190f, + -33.063f, -34.490f, -33.991f, -34.173f, -33.728f, -30.236f, -27.883f, -29.189f, -30.563f, + -29.985f, -30.367f, -31.952f, -30.635f, -29.385f, -28.233f, -26.762f, -25.976f, -25.269f, + -24.223f, -23.307f, -21.738f, -20.663f, -19.552f, -17.368f, -15.593f, -14.356f, -13.343f, + -12.570f, -12.081f, -11.413f, -11.010f, -10.615f, -10.260f, -9.780f, -9.441f, -9.284f, + -9.081f, -9.119f, -9.295f, -9.412f, -9.605f, -9.758f, -9.705f, -9.678f, -9.537f, + -9.164f, -9.262f, -8.588f, -8.345f, -8.054f, -7.591f, -7.063f, -6.141f, -5.312f, + -4.528f, -4.106f, -3.871f, -3.855f, -3.575f, -3.266f, -3.052f, -2.907f, -2.754f, + -2.876f, -3.103f, -3.327f, -3.946f, -4.669f, -5.416f, -6.397f, -7.426f, -8.447f, + -9.360f, -10.405f, -11.477f, -12.522f, -13.693f, -14.985f, -16.136f, -17.065f, -17.904f, + -18.719f, -19.390f, -20.051f, -20.796f, -21.425f, -22.067f, -22.613f, -23.134f, -23.392f, + -23.466f, -23.916f, -24.194f, -24.832f, -25.251f, -25.459f, -26.013f, -26.494f, -26.949f, + -27.634f, -27.994f, -29.049f, -30.165f, -29.030f, -28.493f, -27.386f, -26.463f, -24.374f, + -23.668f, -23.528f, -23.793f, -25.147f, -25.529f, -24.928f, -23.945f, -22.867f, -22.109f, + -20.048f, -18.577f, -15.116f, -14.447f, -13.011f, -11.549f, -13.445f, -12.496f, -10.207f, + -13.699f, -14.745f, -14.644f, -16.236f, -16.977f, -18.851f, -20.971f, -21.550f, -23.324f, + -25.902f, -27.670f, -29.095f, -29.808f, -31.628f, -33.303f, -33.966f, -33.982f, -34.307f, + -33.828f, -33.627f, -33.250f, -31.737f, -32.212f, -31.693f, -30.393f, -28.025f, -24.637f, + -21.916f, -19.892f, -17.107f, -14.051f, -9.817f, -7.213f, -4.349f, -1.227f, 2.718f, + 5.922f, 5.587f, 8.589f, 12.219f, 14.103f, 14.995f, 15.041f, 13.940f, 14.455f, + 13.606f }, + { -29.534f, -30.442f, -28.637f, -28.944f, -30.112f, -30.860f, -31.190f, -30.075f, -31.707f, + -32.424f, -33.470f, -33.618f, -33.915f, -32.883f, -29.549f, -27.234f, -28.424f, -29.337f, + -29.234f, -28.127f, -31.243f, -30.174f, -29.016f, -27.622f, -26.254f, -25.517f, -24.735f, + -23.745f, -22.794f, -21.448f, -20.136f, -18.981f, -17.010f, -15.574f, -14.374f, -13.314f, + -12.410f, -11.856f, -11.149f, -11.107f, -10.441f, -10.212f, -9.635f, -9.317f, -9.008f, + -8.873f, -9.022f, -8.960f, -9.175f, -9.185f, -9.368f, -9.502f, -9.453f, -9.109f, + -8.942f, -8.787f, -8.280f, -7.989f, -7.820f, -7.215f, -6.716f, -5.892f, -4.938f, + -3.984f, -3.725f, -3.489f, -3.616f, -3.500f, -3.181f, -3.075f, -3.047f, -2.972f, + -3.213f, -3.441f, -3.573f, -4.504f, -5.080f, -6.031f, -6.858f, -7.861f, -8.879f, + -9.700f, -10.627f, -11.676f, -12.613f, -13.530f, -14.729f, -15.843f, -16.662f, -17.468f, + -18.191f, -18.601f, -19.079f, -19.541f, -20.272f, -20.759f, -21.198f, -21.616f, -21.809f, + -21.686f, -22.078f, -22.106f, -22.455f, -22.794f, -23.176f, -23.479f, -23.556f, -24.047f, + -24.737f, -27.938f, -29.377f, -27.966f, -25.320f, -25.251f, -22.359f, -21.864f, -21.477f, + -23.130f, -23.857f, -24.518f, -24.540f, -24.484f, -24.176f, -22.316f, -21.062f, -19.937f, + -18.862f, -17.033f, -16.198f, -13.719f, -12.278f, -10.703f, -11.795f, -13.632f, -14.641f, + -14.833f, -15.858f, -15.835f, -16.733f, -17.176f, -19.427f, -21.045f, -21.880f, -23.649f, + -25.772f, -28.199f, -29.131f, -29.886f, -32.336f, -33.960f, -35.114f, -35.235f, -35.338f, + -34.678f, -34.121f, -33.864f, -32.899f, -32.754f, -32.304f, -30.797f, -27.993f, -24.720f, + -21.769f, -19.966f, -17.042f, -13.995f, -9.908f, -6.719f, -4.062f, -0.857f, 2.241f, + 6.066f, 5.950f, 8.728f, 12.434f, 14.245f, 15.050f, 15.036f, 14.018f, 14.499f, + 13.606f }, + { -29.534f, -30.422f, -28.622f, -28.781f, -29.480f, -30.191f, -30.783f, -29.660f, -31.184f, + -31.963f, -32.518f, -32.912f, -33.349f, -32.172f, -29.041f, -26.764f, -27.995f, -28.181f, + -28.042f, -27.042f, -30.667f, -29.486f, -28.491f, -27.153f, -25.900f, -25.091f, -24.221f, + -23.288f, -22.249f, -21.331f, -19.893f, -18.127f, -16.893f, -15.262f, -14.154f, -13.051f, + -11.961f, -11.768f, -11.332f, -10.873f, -10.362f, -10.106f, -9.476f, -9.155f, -8.847f, + -8.530f, -8.820f, -8.701f, -8.934f, -8.758f, -8.948f, -9.065f, -9.077f, -8.775f, + -8.317f, -8.153f, -7.874f, -7.546f, -7.466f, -6.877f, -6.340f, -5.689f, -4.583f, + -3.609f, -3.353f, -3.140f, -3.226f, -3.284f, -3.087f, -3.118f, -3.197f, -3.302f, + -3.475f, -3.452f, -4.580f, -5.069f, -5.632f, -6.539f, -7.615f, -8.525f, -9.369f, + -10.184f, -10.935f, -11.965f, -12.884f, -13.636f, -14.563f, -15.559f, -16.326f, -16.988f, + -17.555f, -17.942f, -18.231f, -18.670f, -19.155f, -19.428f, -19.673f, -19.856f, -20.043f, + -19.926f, -20.050f, -20.093f, -20.282f, -20.487f, -20.820f, -21.005f, -21.217f, -21.824f, + -22.910f, -24.708f, -20.856f, -21.793f, -22.394f, -20.852f, -19.306f, -20.632f, -21.049f, + -22.164f, -23.314f, -23.777f, -24.008f, -23.908f, -23.456f, -22.441f, -22.942f, -21.938f, + -18.673f, -17.291f, -17.370f, -15.962f, -17.207f, -15.133f, -13.697f, -15.003f, -14.572f, + -14.621f, -15.852f, -16.314f, -17.242f, -17.811f, -19.333f, -20.893f, -22.298f, -24.486f, + -26.265f, -28.848f, -29.732f, -31.051f, -32.721f, -34.799f, -35.865f, -36.937f, -36.738f, + -36.202f, -35.067f, -34.444f, -34.183f, -33.766f, -33.052f, -31.272f, -28.302f, -24.948f, + -22.231f, -20.472f, -16.942f, -13.827f, -9.739f, -6.464f, -3.868f, -0.250f, 1.796f, + 6.058f, 6.422f, 8.853f, 12.614f, 14.398f, 15.112f, 15.040f, 14.106f, 14.544f, + 13.606f }, + { -29.534f, -30.401f, -28.609f, -28.613f, -28.923f, -29.660f, -30.488f, -29.372f, -30.679f, + -31.607f, -31.696f, -32.017f, -32.539f, -31.633f, -28.498f, -26.427f, -27.770f, -27.159f, + -26.951f, -26.959f, -30.041f, -28.689f, -28.031f, -26.939f, -25.488f, -24.538f, -23.802f, + -22.844f, -21.794f, -20.803f, -19.535f, -17.233f, -16.115f, -14.606f, -13.657f, -12.625f, + -11.924f, -11.597f, -10.988f, -10.629f, -10.231f, -9.725f, -9.359f, -8.945f, -8.635f, + -8.368f, -8.322f, -8.424f, -8.589f, -8.476f, -8.357f, -8.492f, -8.695f, -8.436f, + -7.962f, -7.428f, -7.457f, -7.320f, -7.112f, -6.585f, -6.025f, -5.345f, -4.425f, + -3.421f, -2.948f, -2.921f, -3.070f, -3.200f, -3.129f, -3.239f, -3.424f, -3.589f, + -3.712f, -4.170f, -4.978f, -5.631f, -6.404f, -7.396f, -8.507f, -9.453f, -10.196f, + -10.702f, -11.428f, -12.298f, -13.060f, -13.773f, -14.512f, -15.329f, -16.047f, -16.560f, + -16.983f, -17.352f, -17.591f, -17.706f, -17.968f, -17.941f, -18.004f, -18.170f, -18.182f, + -18.075f, -18.026f, -18.016f, -18.114f, -18.172f, -18.384f, -18.663f, -19.345f, -19.572f, + -23.410f, -19.195f, -15.905f, -18.418f, -18.080f, -17.688f, -18.293f, -19.664f, -20.582f, + -21.350f, -21.887f, -22.595f, -22.479f, -23.034f, -26.447f, -23.523f, -23.945f, -23.942f, + -20.602f, -19.775f, -21.326f, -19.635f, -19.194f, -18.207f, -17.907f, -15.136f, -12.935f, + -15.451f, -15.706f, -15.929f, -17.670f, -18.618f, -19.600f, -21.153f, -22.939f, -25.128f, + -27.277f, -29.489f, -30.657f, -32.277f, -33.749f, -35.279f, -37.152f, -38.416f, -38.447f, + -37.955f, -37.035f, -35.819f, -35.511f, -34.699f, -33.462f, -31.525f, -28.727f, -25.443f, + -23.070f, -20.643f, -16.694f, -13.517f, -9.303f, -6.565f, -3.808f, 0.425f, 1.508f, + 5.930f, 7.001f, 8.998f, 12.757f, 14.555f, 15.182f, 15.053f, 14.206f, 14.589f, + 13.606f }, + { -29.534f, -30.378f, -28.597f, -28.450f, -28.480f, -29.270f, -30.268f, -29.235f, -30.262f, + -31.204f, -30.985f, -31.194f, -31.753f, -31.105f, -27.912f, -26.183f, -27.201f, -25.948f, + -25.965f, -26.069f, -29.253f, -28.081f, -27.597f, -26.766f, -25.090f, -23.995f, -23.190f, + -22.473f, -21.273f, -20.129f, -18.908f, -16.624f, -15.508f, -13.816f, -12.988f, -12.180f, + -11.843f, -11.157f, -10.606f, -10.299f, -9.811f, -9.453f, -9.165f, -8.557f, -8.289f, + -7.959f, -7.995f, -7.954f, -8.490f, -8.000f, -7.980f, -7.897f, -8.262f, -7.954f, + -7.565f, -6.986f, -7.062f, -6.982f, -6.824f, -6.244f, -5.612f, -5.054f, -4.005f, + -3.243f, -2.677f, -2.626f, -2.867f, -3.107f, -3.174f, -3.359f, -3.597f, -3.964f, + -4.175f, -4.473f, -5.145f, -6.044f, -7.067f, -8.006f, -9.162f, -10.098f, -11.168f, + -11.642f, -12.092f, -12.702f, -13.335f, -13.890f, -14.455f, -15.090f, -15.639f, -16.075f, + -16.465f, -16.620f, -16.783f, -16.742f, -16.784f, -16.680f, -16.590f, -16.449f, -16.310f, + -16.416f, -16.393f, -16.024f, -15.920f, -15.906f, -16.109f, -16.751f, -17.241f, -20.007f, + -18.330f, -15.972f, -14.311f, -15.055f, -15.201f, -15.591f, -16.768f, -18.539f, -20.293f, + -20.262f, -21.209f, -22.299f, -22.693f, -24.397f, -24.084f, -22.494f, -24.025f, -24.900f, + -24.016f, -22.837f, -23.212f, -22.202f, -21.011f, -19.650f, -18.833f, -17.603f, -16.704f, + -17.159f, -16.486f, -16.895f, -17.766f, -18.751f, -20.026f, -22.232f, -23.963f, -26.425f, + -29.191f, -30.547f, -31.326f, -33.015f, -34.869f, -36.286f, -38.846f, -39.423f, -40.248f, + -39.343f, -38.903f, -37.102f, -36.375f, -35.542f, -34.025f, -31.355f, -28.738f, -25.878f, + -23.178f, -19.883f, -16.185f, -13.056f, -8.774f, -6.823f, -3.808f, 0.896f, 1.516f, + 5.773f, 7.672f, 9.200f, 12.872f, 14.712f, 15.261f, 15.076f, 14.316f, 14.634f, + 13.606f }, + { -29.534f, -30.354f, -28.586f, -28.306f, -28.174f, -28.999f, -30.073f, -29.247f, -29.981f, + -30.620f, -30.270f, -30.553f, -31.266f, -30.504f, -27.402f, -25.966f, -26.269f, -24.939f, + -24.844f, -24.605f, -28.238f, -27.613f, -26.939f, -26.346f, -24.794f, -23.601f, -22.871f, + -21.926f, -20.886f, -19.559f, -18.373f, -16.226f, -14.846f, -13.376f, -12.343f, -11.815f, + -11.658f, -10.838f, -10.036f, -10.109f, -9.365f, -9.238f, -8.806f, -8.111f, -7.870f, + -7.425f, -7.467f, -7.663f, -8.170f, -7.825f, -7.723f, -7.669f, -7.775f, -7.178f, + -7.211f, -6.454f, -6.736f, -6.605f, -6.472f, -5.927f, -5.231f, -4.631f, -3.973f, + -2.992f, -2.046f, -2.329f, -2.639f, -2.949f, -3.104f, -3.433f, -3.901f, -4.135f, + -4.564f, -4.881f, -5.406f, -6.494f, -7.509f, -8.522f, -9.370f, -10.484f, -11.440f, + -12.158f, -12.911f, -13.086f, -13.727f, -14.083f, -14.443f, -14.868f, -15.216f, -15.503f, + -15.729f, -15.842f, -15.850f, -15.701f, -15.515f, -15.261f, -15.041f, -14.800f, -14.672f, + -14.847f, -14.675f, -14.133f, -13.886f, -13.873f, -14.463f, -14.763f, -15.399f, -19.008f, + -14.294f, -12.968f, -11.836f, -12.608f, -13.383f, -14.352f, -15.427f, -16.343f, -17.936f, + -20.255f, -21.017f, -21.789f, -23.968f, -24.501f, -25.723f, -24.935f, -26.177f, -26.757f, + -27.098f, -25.634f, -24.613f, -23.959f, -22.958f, -20.907f, -19.005f, -18.734f, -19.772f, + -19.522f, -19.065f, -18.729f, -18.327f, -20.026f, -21.447f, -23.045f, -24.340f, -27.388f, + -29.966f, -31.153f, -32.145f, -33.662f, -35.755f, -37.993f, -40.292f, -40.796f, -41.514f, + -40.867f, -40.242f, -38.283f, -36.989f, -36.342f, -34.869f, -31.052f, -28.210f, -25.716f, + -22.388f, -18.717f, -15.571f, -12.482f, -8.261f, -6.907f, -3.832f, 0.974f, 1.878f, + 5.698f, 8.399f, 9.485f, 12.975f, 14.866f, 15.348f, 15.107f, 14.437f, 14.680f, + 13.606f }, + { -29.534f, -30.327f, -28.574f, -28.189f, -28.010f, -28.803f, -29.860f, -29.374f, -29.841f, + -29.837f, -29.415f, -29.946f, -31.035f, -29.890f, -26.953f, -25.643f, -25.347f, -24.595f, + -23.753f, -23.901f, -26.922f, -26.813f, -26.421f, -25.648f, -24.228f, -23.162f, -22.580f, + -21.494f, -20.532f, -18.827f, -17.612f, -15.880f, -14.536f, -12.984f, -12.097f, -11.456f, + -11.057f, -10.163f, -9.839f, -9.780f, -9.144f, -8.814f, -8.236f, -7.492f, -7.319f, + -6.958f, -6.835f, -7.506f, -7.628f, -7.668f, -7.437f, -7.422f, -7.300f, -6.712f, + -6.639f, -6.169f, -6.326f, -6.305f, -6.199f, -5.633f, -4.925f, -4.214f, -3.400f, + -2.618f, -1.855f, -2.075f, -2.375f, -2.823f, -3.089f, -3.277f, -3.920f, -4.430f, + -5.035f, -5.490f, -5.601f, -6.792f, -7.672f, -8.685f, -9.572f, -10.568f, -11.762f, + -12.284f, -13.151f, -13.190f, -13.813f, -14.046f, -14.441f, -14.551f, -14.720f, -14.877f, + -14.970f, -15.031f, -14.891f, -14.624f, -14.213f, -13.862f, -13.562f, -13.250f, -13.043f, + -13.110f, -13.007f, -12.531f, -12.124f, -12.184f, -12.511f, -12.885f, -14.560f, -14.297f, + -8.504f, -10.749f, -9.508f, -11.052f, -12.173f, -13.203f, -14.209f, -14.750f, -18.739f, + -21.072f, -22.965f, -23.639f, -23.947f, -24.482f, -26.156f, -27.310f, -28.169f, -27.821f, + -28.356f, -27.567f, -25.876f, -25.242f, -24.249f, -22.431f, -20.851f, -21.115f, -23.184f, + -21.604f, -20.769f, -20.899f, -20.637f, -21.493f, -22.991f, -24.544f, -26.815f, -28.034f, + -30.458f, -31.970f, -33.354f, -34.680f, -36.573f, -39.504f, -41.093f, -41.730f, -42.415f, + -42.331f, -41.730f, -39.447f, -37.612f, -36.560f, -35.316f, -31.161f, -27.658f, -25.017f, + -21.327f, -17.715f, -14.870f, -11.739f, -7.734f, -6.699f, -3.886f, 0.735f, 2.512f, + 5.788f, 9.129f, 9.858f, 13.084f, 15.016f, 15.443f, 15.144f, 14.567f, 14.726f, + 13.606f }, + { -29.534f, -30.299f, -28.561f, -28.108f, -27.973f, -28.630f, -29.602f, -29.554f, -29.800f, + -28.976f, -28.371f, -29.158f, -30.679f, -29.264f, -26.425f, -25.162f, -24.388f, -24.208f, + -22.978f, -23.688f, -26.098f, -25.942f, -25.742f, -25.090f, -23.836f, -22.834f, -21.967f, + -20.972f, -19.988f, -18.374f, -16.932f, -15.633f, -14.134f, -12.594f, -11.949f, -11.119f, + -10.303f, -9.819f, -9.518f, -8.967f, -8.583f, -8.125f, -7.718f, -7.243f, -6.454f, + -6.642f, -6.348f, -7.111f, -7.388f, -7.439f, -7.116f, -6.938f, -6.895f, -6.181f, + -6.183f, -6.059f, -6.030f, -6.104f, -5.831f, -5.249f, -4.449f, -3.885f, -3.160f, + -2.324f, -1.979f, -1.589f, -1.896f, -2.429f, -2.924f, -3.381f, -4.009f, -4.517f, + -5.178f, -5.682f, -5.888f, -6.593f, -7.743f, -8.892f, -9.734f, -10.702f, -11.961f, + -12.591f, -13.122f, -13.357f, -13.822f, -14.278f, -14.309f, -14.286f, -14.300f, -14.303f, + -14.238f, -14.277f, -13.753f, -13.506f, -13.016f, -12.549f, -12.197f, -11.831f, -11.568f, + -11.514f, -11.611f, -11.241f, -10.407f, -10.514f, -10.658f, -11.061f, -14.293f, -8.485f, + -7.010f, -6.591f, -7.020f, -10.317f, -12.421f, -13.217f, -13.160f, -16.250f, -19.984f, + -21.983f, -24.404f, -23.903f, -23.141f, -24.099f, -26.960f, -30.097f, -29.451f, -28.250f, + -29.397f, -28.210f, -26.605f, -26.227f, -25.052f, -23.289f, -22.296f, -23.714f, -24.917f, + -22.541f, -22.183f, -22.090f, -21.999f, -21.522f, -23.789f, -26.567f, -30.026f, -29.758f, + -30.927f, -32.798f, -34.448f, -36.138f, -38.130f, -40.677f, -42.152f, -42.800f, -43.070f, + -43.434f, -42.936f, -40.302f, -38.258f, -36.629f, -35.446f, -31.611f, -27.524f, -24.172f, + -20.141f, -16.653f, -13.895f, -10.768f, -7.165f, -6.348f, -3.885f, 0.492f, 3.250f, + 6.065f, 9.791f, 10.292f, 13.212f, 15.163f, 15.541f, 15.188f, 14.704f, 14.773f, + 13.606f }, + { -29.534f, -30.270f, -28.545f, -28.067f, -28.038f, -28.432f, -29.301f, -29.717f, -29.787f, + -28.225f, -27.251f, -28.184f, -29.896f, -28.490f, -25.780f, -24.594f, -23.168f, -23.200f, + -22.525f, -23.122f, -26.254f, -25.626f, -24.863f, -24.623f, -23.336f, -22.285f, -21.369f, + -20.179f, -19.486f, -18.013f, -16.344f, -15.106f, -13.686f, -12.266f, -11.473f, -9.786f, + -9.775f, -9.469f, -9.094f, -8.202f, -8.049f, -7.357f, -7.322f, -6.826f, -5.720f, + -6.159f, -5.784f, -6.298f, -7.402f, -6.632f, -6.468f, -6.376f, -5.966f, -5.512f, + -5.709f, -5.786f, -5.804f, -5.848f, -5.593f, -4.939f, -4.129f, -3.470f, -2.874f, + -2.128f, -1.704f, -1.215f, -1.518f, -2.147f, -2.695f, -3.281f, -3.981f, -4.772f, + -5.298f, -5.912f, -6.046f, -6.732f, -7.602f, -8.844f, -9.905f, -10.898f, -11.968f, + -12.571f, -13.129f, -13.388f, -13.780f, -14.086f, -14.132f, -14.075f, -13.916f, -13.668f, + -13.482f, -13.417f, -12.809f, -12.434f, -11.849f, -11.378f, -10.957f, -10.483f, -10.320f, + -10.366f, -10.231f, -9.980f, -9.195f, -8.900f, -8.926f, -9.589f, -11.996f, -4.809f, + -5.691f, -5.209f, -5.961f, -10.042f, -14.440f, -15.582f, -17.905f, -19.374f, -23.432f, + -25.285f, -26.300f, -25.430f, -23.544f, -24.625f, -28.051f, -30.402f, -29.624f, -27.015f, + -28.748f, -29.011f, -27.084f, -26.643f, -26.179f, -24.484f, -23.694f, -25.776f, -25.330f, + -23.958f, -23.617f, -23.716f, -23.735f, -23.290f, -24.956f, -28.447f, -30.901f, -31.546f, + -32.017f, -34.070f, -35.159f, -37.836f, -39.821f, -41.855f, -42.899f, -43.942f, -43.972f, + -44.341f, -43.711f, -40.841f, -38.844f, -36.819f, -35.343f, -31.801f, -27.621f, -23.354f, + -18.930f, -15.538f, -12.891f, -9.762f, -6.625f, -5.945f, -3.598f, 0.548f, 3.947f, + 6.495f, 10.319f, 10.743f, 13.362f, 15.309f, 15.641f, 15.234f, 14.847f, 14.819f, + 13.606f }, + { -29.534f, -30.238f, -28.526f, -28.067f, -28.168f, -28.177f, -28.978f, -29.807f, -29.730f, + -27.720f, -26.262f, -27.245f, -28.828f, -27.497f, -25.151f, -23.938f, -21.913f, -22.446f, + -22.066f, -22.351f, -26.642f, -25.296f, -24.412f, -24.034f, -22.726f, -21.938f, -20.636f, + -19.503f, -18.763f, -17.349f, -15.896f, -14.434f, -13.289f, -12.041f, -11.271f, -9.967f, + -9.048f, -9.068f, -8.539f, -7.683f, -7.527f, -6.880f, -6.851f, -6.060f, -5.662f, + -5.503f, -5.438f, -5.492f, -6.222f, -4.958f, -5.748f, -5.658f, -5.269f, -4.946f, + -5.184f, -5.501f, -5.532f, -5.597f, -5.413f, -4.547f, -3.767f, -3.180f, -2.460f, + -1.740f, -1.267f, -0.938f, -1.373f, -2.079f, -2.555f, -3.174f, -3.966f, -4.781f, + -5.429f, -5.997f, -6.142f, -6.804f, -7.685f, -8.807f, -9.968f, -10.925f, -11.850f, + -12.652f, -12.986f, -13.307f, -13.824f, -13.975f, -14.074f, -13.854f, -13.448f, -13.084f, + -12.770f, -12.539f, -11.538f, -11.384f, -10.790f, -10.242f, -9.759f, -9.315f, -9.011f, + -8.995f, -9.018f, -8.780f, -8.458f, -7.629f, -7.555f, -9.416f, -7.707f, -3.399f, + -4.101f, -4.246f, -5.580f, -12.678f, -15.871f, -17.751f, -20.374f, -22.659f, -24.558f, + -26.483f, -27.929f, -27.338f, -26.719f, -27.181f, -28.489f, -29.778f, -27.266f, -27.501f, + -28.024f, -28.944f, -28.668f, -27.794f, -27.075f, -26.006f, -24.947f, -26.558f, -25.754f, + -24.647f, -25.206f, -25.302f, -24.970f, -25.304f, -26.678f, -29.648f, -32.100f, -33.113f, + -34.470f, -35.168f, -37.031f, -39.391f, -41.312f, -43.328f, -44.201f, -45.064f, -45.213f, + -44.887f, -43.823f, -41.090f, -39.193f, -36.767f, -34.940f, -31.670f, -27.592f, -22.754f, + -18.270f, -14.947f, -12.386f, -9.037f, -6.211f, -5.329f, -2.845f, 0.946f, 4.587f, + 7.030f, 10.679f, 11.167f, 13.531f, 15.454f, 15.739f, 15.284f, 14.994f, 14.866f, + 13.606f }, + { -29.534f, -30.205f, -28.503f, -28.105f, -28.327f, -27.853f, -28.672f, -29.797f, -29.585f, + -27.452f, -25.552f, -26.493f, -27.841f, -26.444f, -24.632f, -23.102f, -20.884f, -22.468f, + -21.369f, -21.806f, -27.045f, -24.813f, -23.809f, -23.112f, -22.021f, -21.305f, -20.021f, + -18.899f, -17.817f, -16.608f, -15.367f, -13.961f, -12.796f, -11.625f, -10.557f, -9.708f, + -8.842f, -8.372f, -8.150f, -7.557f, -7.038f, -6.588f, -6.770f, -5.989f, -5.396f, + -4.663f, -5.006f, -5.384f, -5.081f, -4.334f, -4.638f, -4.661f, -4.492f, -4.387f, + -4.836f, -4.861f, -5.245f, -5.072f, -4.942f, -4.267f, -3.352f, -2.682f, -1.931f, + -1.417f, -0.814f, -0.716f, -0.968f, -1.712f, -2.294f, -2.950f, -3.860f, -4.597f, + -5.404f, -5.901f, -6.283f, -6.781f, -7.763f, -8.780f, -9.896f, -10.916f, -11.760f, + -12.571f, -13.003f, -13.430f, -13.861f, -14.021f, -13.834f, -13.507f, -13.019f, -12.539f, + -12.028f, -11.693f, -10.440f, -10.454f, -9.683f, -9.195f, -8.642f, -8.149f, -7.602f, + -7.519f, -7.498f, -7.401f, -7.363f, -7.101f, -6.724f, -9.082f, -2.562f, -1.887f, + -5.795f, -6.469f, -9.682f, -15.379f, -19.342f, -21.552f, -23.399f, -22.297f, -22.696f, + -25.323f, -28.144f, -28.885f, -27.726f, -27.298f, -27.723f, -27.674f, -26.717f, -26.993f, + -28.966f, -29.679f, -29.796f, -29.588f, -27.863f, -27.177f, -25.399f, -26.161f, -26.159f, + -25.391f, -26.288f, -26.380f, -27.178f, -27.070f, -28.456f, -30.547f, -32.731f, -34.039f, + -35.882f, -37.053f, -38.359f, -40.655f, -42.590f, -44.810f, -45.593f, -46.482f, -46.299f, + -45.287f, -43.206f, -41.155f, -38.983f, -36.638f, -34.598f, -31.522f, -27.306f, -22.232f, + -18.119f, -14.731f, -12.213f, -8.569f, -5.923f, -4.348f, -1.777f, 1.454f, 5.296f, + 7.644f, 10.892f, 11.545f, 13.707f, 15.597f, 15.831f, 15.334f, 15.143f, 14.913f, + 13.606f }, + { -29.534f, -30.170f, -28.475f, -28.176f, -28.481f, -27.474f, -28.423f, -29.696f, -29.347f, + -27.286f, -25.084f, -25.765f, -26.980f, -25.547f, -24.126f, -22.187f, -19.971f, -22.241f, + -21.010f, -21.511f, -26.961f, -24.844f, -22.852f, -22.000f, -20.914f, -20.218f, -19.301f, + -18.019f, -17.048f, -15.910f, -14.414f, -13.180f, -12.077f, -11.299f, -10.579f, -9.824f, + -8.917f, -8.308f, -8.006f, -7.415f, -6.802f, -6.615f, -6.432f, -5.646f, -4.803f, + -4.036f, -4.325f, -4.902f, -4.918f, -3.832f, -3.813f, -3.996f, -3.811f, -3.931f, + -4.453f, -4.423f, -4.765f, -4.812f, -4.497f, -3.732f, -2.914f, -2.180f, -1.403f, + -0.842f, -0.484f, -0.382f, -0.696f, -1.346f, -2.004f, -2.777f, -3.690f, -4.555f, + -5.264f, -5.835f, -6.463f, -6.770f, -7.809f, -8.907f, -9.713f, -10.641f, -11.506f, + -12.391f, -13.041f, -13.562f, -13.814f, -13.823f, -13.692f, -13.200f, -12.567f, -11.986f, + -11.297f, -10.851f, -9.503f, -9.036f, -8.776f, -8.073f, -7.573f, -7.102f, -6.475f, + -6.082f, -5.877f, -6.002f, -6.128f, -5.929f, -6.172f, -9.198f, -3.420f, -6.489f, + -12.111f, -12.995f, -15.108f, -19.087f, -23.682f, -25.783f, -28.108f, -27.310f, -27.050f, + -27.982f, -27.242f, -28.275f, -28.729f, -27.709f, -26.727f, -26.530f, -28.649f, -30.050f, + -29.635f, -30.117f, -31.547f, -31.601f, -30.247f, -28.132f, -28.201f, -27.205f, -26.595f, + -26.696f, -26.759f, -26.984f, -27.290f, -28.057f, -29.196f, -31.114f, -32.691f, -34.349f, + -36.750f, -38.757f, -39.719f, -41.925f, -44.007f, -46.379f, -46.765f, -47.628f, -47.166f, + -45.396f, -42.814f, -40.852f, -38.174f, -36.242f, -34.265f, -31.381f, -26.710f, -21.124f, + -17.656f, -14.005f, -11.700f, -8.050f, -5.644f, -3.239f, -0.859f, 1.841f, 6.247f, + 8.333f, 11.033f, 11.889f, 13.881f, 15.734f, 15.916f, 15.384f, 15.292f, 14.959f, + 13.606f }, + { -29.534f, -30.133f, -28.440f, -28.272f, -28.604f, -27.076f, -28.256f, -29.536f, -29.048f, + -27.053f, -24.663f, -24.727f, -25.847f, -24.797f, -23.493f, -21.498f, -19.190f, -21.385f, + -21.654f, -21.117f, -24.734f, -24.245f, -22.182f, -21.357f, -20.214f, -19.621f, -18.294f, + -17.368f, -16.420f, -15.304f, -13.925f, -12.322f, -10.982f, -11.155f, -11.067f, -10.479f, + -9.190f, -8.193f, -7.723f, -7.357f, -6.676f, -6.263f, -5.693f, -5.008f, -3.964f, + -3.681f, -3.999f, -4.199f, -4.246f, -3.269f, -3.144f, -3.448f, -3.198f, -3.380f, + -3.982f, -3.814f, -4.316f, -4.372f, -3.987f, -3.208f, -2.478f, -1.704f, -0.873f, + -0.240f, -0.061f, -0.098f, -0.253f, -0.877f, -1.566f, -2.312f, -3.228f, -4.092f, + -4.970f, -5.808f, -6.397f, -6.971f, -7.711f, -8.615f, -9.684f, -10.570f, -11.211f, + -12.194f, -12.995f, -13.397f, -13.573f, -13.628f, -13.271f, -12.796f, -12.084f, -11.499f, + -10.732f, -10.141f, -8.532f, -7.738f, -7.788f, -6.958f, -6.398f, -5.919f, -5.367f, + -4.819f, -4.633f, -4.620f, -4.646f, -4.899f, -6.304f, -10.170f, -7.602f, -8.646f, + -11.410f, -13.345f, -19.200f, -22.105f, -25.630f, -28.832f, -31.337f, -32.330f, -32.572f, + -31.050f, -28.021f, -27.429f, -28.543f, -28.275f, -27.529f, -27.744f, -29.585f, -32.353f, + -29.862f, -30.645f, -32.308f, -32.851f, -32.077f, -30.262f, -29.094f, -29.010f, -27.722f, + -27.304f, -26.861f, -27.658f, -28.285f, -29.399f, -29.994f, -31.575f, -32.776f, -35.284f, + -37.706f, -39.796f, -41.022f, -43.092f, -45.173f, -47.777f, -47.859f, -48.272f, -47.833f, + -45.358f, -42.183f, -40.193f, -37.292f, -35.204f, -33.767f, -31.092f, -25.898f, -19.674f, + -16.816f, -12.748f, -10.850f, -7.441f, -5.223f, -2.519f, -0.503f, 2.160f, 7.516f, + 9.081f, 11.202f, 12.240f, 14.047f, 15.860f, 15.992f, 15.435f, 15.439f, 15.006f, + 13.606f }, + { -29.534f, -30.094f, -28.399f, -28.382f, -28.682f, -26.706f, -28.179f, -29.354f, -28.738f, + -26.677f, -24.110f, -23.310f, -24.177f, -23.988f, -22.790f, -21.094f, -18.774f, -20.964f, + -22.407f, -20.080f, -21.519f, -22.405f, -21.551f, -20.807f, -19.666f, -17.863f, -17.339f, + -16.698f, -15.666f, -14.632f, -13.560f, -12.346f, -10.754f, -10.750f, -10.940f, -10.390f, + -9.049f, -7.950f, -7.464f, -6.962f, -6.262f, -5.759f, -5.028f, -4.524f, -3.600f, + -3.451f, -3.579f, -3.514f, -3.560f, -2.691f, -2.599f, -2.832f, -2.750f, -2.882f, + -3.315f, -3.345f, -3.687f, -3.484f, -3.114f, -2.323f, -1.630f, -0.942f, -0.439f, + 0.041f, 0.134f, 0.318f, 0.132f, -0.623f, -1.140f, -1.880f, -2.878f, -3.796f, + -4.811f, -5.650f, -6.435f, -6.979f, -7.648f, -8.492f, -9.364f, -10.154f, -11.117f, + -12.043f, -12.772f, -13.135f, -13.345f, -13.245f, -12.793f, -12.233f, -11.460f, -10.762f, + -9.966f, -8.863f, -7.355f, -6.617f, -6.606f, -5.947f, -5.257f, -4.627f, -4.128f, + -3.486f, -3.227f, -3.142f, -3.342f, -4.056f, -9.336f, -5.231f, -6.303f, -7.178f, + -12.716f, -13.514f, -17.323f, -21.419f, -24.493f, -27.441f, -30.608f, -32.107f, -31.118f, + -30.235f, -27.152f, -26.588f, -28.501f, -28.822f, -27.055f, -27.648f, -28.527f, -31.634f, + -29.003f, -30.280f, -32.537f, -33.407f, -33.085f, -31.840f, -28.311f, -29.039f, -28.918f, + -27.710f, -27.286f, -28.889f, -29.200f, -30.555f, -31.177f, -32.609f, -33.948f, -36.362f, + -38.697f, -40.661f, -41.993f, -44.927f, -46.190f, -48.897f, -49.050f, -48.825f, -47.891f, + -45.238f, -41.318f, -39.419f, -36.598f, -34.185f, -32.961f, -30.403f, -25.242f, -19.291f, + -16.436f, -11.863f, -10.272f, -7.006f, -4.568f, -2.428f, -0.706f, 2.720f, 8.982f, + 9.824f, 11.476f, 12.644f, 14.203f, 15.971f, 16.056f, 15.487f, 15.582f, 15.052f, + 13.606f }, + { -29.534f, -30.053f, -28.351f, -28.494f, -28.712f, -26.419f, -28.176f, -29.184f, -28.460f, + -26.225f, -23.424f, -21.880f, -22.350f, -23.040f, -22.238f, -20.676f, -18.535f, -20.962f, + -21.664f, -18.476f, -20.637f, -20.901f, -20.807f, -20.001f, -19.372f, -16.793f, -16.818f, + -15.768f, -15.043f, -14.106f, -12.849f, -11.761f, -10.756f, -10.006f, -9.928f, -9.660f, + -8.320f, -7.788f, -7.211f, -6.479f, -5.811f, -5.082f, -4.294f, -3.861f, -3.247f, + -2.973f, -3.026f, -2.950f, -2.824f, -2.183f, -2.032f, -2.385f, -2.397f, -2.856f, + -3.044f, -2.964f, -3.243f, -2.897f, -2.334f, -1.564f, -0.907f, -0.292f, 0.096f, + 0.752f, 0.699f, 0.572f, 0.468f, -0.102f, -0.772f, -1.614f, -2.580f, -3.493f, + -4.479f, -5.496f, -6.350f, -6.853f, -7.477f, -8.178f, -9.186f, -10.088f, -10.932f, + -11.906f, -12.403f, -12.784f, -12.858f, -12.735f, -12.279f, -11.520f, -10.582f, -9.851f, + -8.793f, -7.343f, -6.203f, -5.466f, -5.422f, -4.964f, -4.200f, -3.309f, -2.934f, + -2.387f, -2.098f, -1.859f, -1.812f, -4.037f, -7.440f, -5.357f, -2.494f, -5.046f, + -11.244f, -11.877f, -15.978f, -20.846f, -24.203f, -26.470f, -28.209f, -30.364f, -29.432f, + -28.880f, -25.850f, -25.863f, -28.025f, -27.520f, -26.897f, -27.349f, -27.786f, -29.878f, + -29.279f, -29.843f, -32.371f, -33.411f, -32.621f, -32.421f, -32.139f, -30.253f, -29.376f, + -28.414f, -27.812f, -29.641f, -30.797f, -32.144f, -32.515f, -33.834f, -35.237f, -37.637f, + -39.484f, -41.639f, -43.007f, -46.110f, -47.116f, -49.186f, -49.501f, -49.048f, -47.934f, + -45.141f, -40.800f, -38.484f, -36.365f, -33.581f, -31.549f, -29.300f, -25.046f, -20.263f, + -16.773f, -11.712f, -10.063f, -6.718f, -3.697f, -2.638f, -1.096f, 3.753f, 10.335f, + 10.455f, 11.870f, 13.125f, 14.356f, 16.061f, 16.109f, 15.540f, 15.721f, 15.098f, + 13.606f }, + { -29.534f, -30.011f, -28.295f, -28.597f, -28.700f, -26.262f, -28.218f, -29.043f, -28.239f, + -25.859f, -22.793f, -20.868f, -21.049f, -22.125f, -21.911f, -20.088f, -18.126f, -20.034f, + -19.639f, -17.233f, -21.583f, -19.444f, -19.907f, -19.351f, -18.833f, -17.130f, -16.197f, + -15.217f, -14.504f, -13.582f, -12.240f, -11.143f, -9.951f, -9.275f, -9.146f, -8.231f, + -7.261f, -7.214f, -6.652f, -6.063f, -5.227f, -4.178f, -3.359f, -2.993f, -2.634f, + -2.354f, -2.447f, -2.323f, -2.032f, -1.779f, -1.607f, -1.874f, -2.313f, -2.705f, + -2.943f, -2.864f, -2.738f, -2.322f, -1.506f, -0.894f, 0.140f, 0.419f, 0.685f, + 0.790f, 1.042f, 1.256f, 0.738f, 0.212f, -0.571f, -1.435f, -2.473f, -3.304f, + -4.248f, -5.255f, -6.180f, -6.732f, -7.062f, -7.778f, -8.864f, -9.816f, -10.703f, + -11.383f, -11.894f, -12.309f, -12.316f, -12.075f, -11.484f, -10.685f, -9.677f, -9.599f, + -8.208f, -6.204f, -4.958f, -4.320f, -4.117f, -3.991f, -3.169f, -2.240f, -1.536f, + -1.046f, -0.712f, -0.419f, -0.733f, -5.930f, -4.189f, 0.948f, -1.508f, -4.827f, + -10.093f, -11.294f, -13.493f, -14.238f, -17.773f, -26.939f, -28.171f, -28.232f, -28.711f, + -29.177f, -25.637f, -25.353f, -27.818f, -28.003f, -26.739f, -27.128f, -27.046f, -28.485f, + -29.018f, -30.422f, -31.970f, -33.254f, -33.100f, -33.349f, -31.769f, -30.935f, -30.527f, + -31.051f, -27.562f, -28.979f, -31.572f, -33.375f, -33.968f, -34.881f, -36.467f, -38.532f, + -40.387f, -42.395f, -44.180f, -46.695f, -47.732f, -48.952f, -49.154f, -49.025f, -48.042f, + -44.871f, -40.262f, -37.880f, -36.348f, -32.787f, -30.197f, -28.309f, -25.234f, -21.205f, + -17.207f, -11.874f, -9.870f, -6.152f, -2.766f, -2.603f, -1.302f, 5.082f, 11.211f, + 10.874f, 12.326f, 13.671f, 14.511f, 16.131f, 16.152f, 15.596f, 15.852f, 15.143f, + 13.606f }, + { -29.534f, -29.967f, -28.231f, -28.679f, -28.662f, -26.269f, -28.274f, -28.941f, -28.086f, + -25.724f, -22.436f, -20.218f, -20.330f, -21.393f, -21.564f, -19.554f, -17.774f, -18.420f, + -18.008f, -16.613f, -21.642f, -17.354f, -18.675f, -18.447f, -16.879f, -15.567f, -14.887f, + -14.421f, -13.809f, -12.847f, -11.530f, -10.756f, -9.085f, -9.195f, -8.793f, -7.210f, + -6.411f, -6.490f, -6.010f, -5.182f, -4.277f, -3.123f, -2.288f, -2.065f, -2.147f, + -1.765f, -1.847f, -1.720f, -1.512f, -1.285f, -1.218f, -1.691f, -2.068f, -2.487f, + -2.847f, -2.547f, -2.264f, -1.878f, -1.061f, -0.296f, 0.494f, 1.118f, 1.292f, + 1.121f, 1.226f, 1.436f, 1.039f, 0.335f, -0.236f, -0.996f, -2.036f, -2.839f, + -3.749f, -4.752f, -5.642f, -6.217f, -6.557f, -7.353f, -8.471f, -9.346f, -10.240f, + -10.793f, -11.273f, -11.569f, -11.603f, -11.268f, -10.587f, -9.538f, -9.244f, -5.803f, + -5.959f, -4.563f, -3.925f, -3.189f, -2.926f, -2.697f, -2.057f, -1.271f, -0.447f, + 0.013f, 0.429f, 0.753f, -0.069f, -4.832f, -2.915f, 3.820f, -2.647f, -6.087f, + -8.023f, -10.023f, -11.654f, -13.279f, -16.267f, -25.388f, -28.536f, -27.377f, -28.561f, + -28.540f, -25.329f, -25.099f, -27.507f, -28.031f, -27.337f, -27.414f, -27.668f, -28.099f, + -29.044f, -30.873f, -30.795f, -32.665f, -33.235f, -33.469f, -32.904f, -32.370f, -32.905f, + -31.370f, -30.159f, -31.297f, -30.647f, -34.415f, -34.886f, -35.909f, -37.433f, -39.667f, + -41.558f, -43.388f, -45.100f, -47.127f, -48.057f, -48.637f, -48.150f, -48.183f, -47.693f, + -44.411f, -40.000f, -37.650f, -35.993f, -31.899f, -29.732f, -27.907f, -25.515f, -21.251f, + -17.110f, -11.988f, -9.731f, -5.127f, -2.019f, -2.095f, -1.231f, 6.161f, 11.379f, + 11.051f, 12.755f, 14.232f, 14.673f, 16.183f, 16.185f, 15.657f, 15.977f, 15.188f, + 13.606f }, + { -29.534f, -29.922f, -28.159f, -28.732f, -28.614f, -26.450f, -28.324f, -28.884f, -28.007f, + -25.854f, -22.420f, -19.353f, -19.350f, -20.697f, -20.909f, -19.206f, -17.706f, -17.824f, + -17.407f, -15.796f, -20.670f, -16.340f, -17.542f, -17.212f, -15.758f, -14.610f, -13.995f, + -13.363f, -12.901f, -12.174f, -11.120f, -9.937f, -8.489f, -8.616f, -7.989f, -6.195f, + -5.734f, -5.931f, -5.312f, -4.361f, -3.378f, -2.509f, -1.521f, -1.213f, -1.318f, + -1.019f, -1.217f, -1.040f, -0.931f, -0.940f, -1.121f, -1.308f, -1.804f, -2.335f, + -2.619f, -2.296f, -2.161f, -1.571f, -0.925f, -0.266f, 0.855f, 1.365f, 1.615f, + 1.718f, 1.490f, 1.821f, 1.469f, 0.740f, 0.186f, -0.684f, -1.467f, -2.325f, + -3.318f, -4.382f, -5.206f, -5.628f, -6.008f, -6.954f, -7.956f, -8.714f, -9.363f, + -9.979f, -10.300f, -10.699f, -10.555f, -10.206f, -9.495f, -8.373f, -7.978f, -3.595f, + -4.286f, -3.685f, -2.850f, -2.203f, -1.574f, -1.376f, -0.694f, 0.058f, 0.886f, + 1.317f, 1.283f, 1.603f, -2.309f, -2.850f, 0.467f, 2.127f, -1.857f, -4.754f, + -6.843f, -8.827f, -10.723f, -13.624f, -15.260f, -19.682f, -27.855f, -27.006f, -27.437f, + -27.054f, -25.779f, -24.535f, -27.256f, -28.492f, -27.164f, -27.904f, -27.286f, -28.349f, + -29.111f, -29.507f, -30.262f, -31.925f, -33.271f, -33.341f, -33.394f, -34.306f, -35.521f, + -33.788f, -31.013f, -31.699f, -33.131f, -35.250f, -35.009f, -36.989f, -38.989f, -40.700f, + -42.640f, -44.601f, -46.384f, -47.597f, -48.196f, -48.295f, -47.040f, -47.059f, -46.916f, + -44.116f, -39.909f, -37.315f, -35.612f, -31.426f, -29.761f, -27.929f, -25.671f, -20.799f, + -16.244f, -11.846f, -9.787f, -3.988f, -1.623f, -1.251f, -0.955f, 6.491f, 10.855f, + 11.074f, 13.091f, 14.742f, 14.841f, 16.224f, 16.211f, 15.725f, 16.093f, 15.231f, + 13.606f }, + { -29.534f, -29.874f, -28.080f, -28.747f, -28.574f, -26.795f, -28.364f, -28.884f, -28.015f, + -26.158f, -22.601f, -17.844f, -17.331f, -19.750f, -19.999f, -18.803f, -17.370f, -18.232f, + -17.149f, -14.702f, -19.251f, -16.327f, -16.638f, -16.339f, -15.702f, -14.684f, -13.393f, + -12.764f, -12.266f, -11.516f, -10.240f, -9.268f, -8.195f, -7.799f, -7.290f, -5.497f, + -5.265f, -5.345f, -4.811f, -3.603f, -2.654f, -1.736f, -1.140f, -0.446f, -0.488f, + -0.274f, -0.254f, -0.212f, -0.357f, -0.445f, -0.727f, -0.977f, -1.493f, -2.069f, + -2.237f, -2.160f, -1.708f, -1.165f, -0.555f, 0.225f, 0.972f, 1.667f, 2.198f, + 2.085f, 1.981f, 2.047f, 1.923f, 1.242f, 0.692f, 0.000f, -1.017f, -1.980f, + -2.866f, -3.687f, -4.499f, -5.189f, -5.652f, -6.316f, -7.037f, -7.777f, -8.469f, + -9.038f, -9.356f, -9.516f, -9.441f, -9.088f, -8.385f, -7.312f, -6.571f, -3.608f, + -3.592f, -2.755f, -1.956f, -0.989f, -0.415f, 0.231f, 0.882f, 1.477f, 2.129f, + 2.672f, 2.826f, 2.687f, -3.456f, -1.186f, 2.576f, 1.753f, -1.492f, -3.591f, + -6.263f, -7.394f, -10.087f, -12.400f, -14.823f, -15.823f, -24.407f, -28.003f, -26.206f, + -26.010f, -27.360f, -25.215f, -27.842f, -29.256f, -27.842f, -29.043f, -28.320f, -28.619f, + -29.190f, -29.006f, -30.201f, -32.271f, -32.778f, -33.030f, -33.530f, -34.796f, -36.827f, + -35.926f, -32.245f, -32.536f, -34.551f, -36.255f, -36.326f, -37.746f, -40.649f, -42.038f, + -43.831f, -45.577f, -47.537f, -48.074f, -48.677f, -48.006f, -46.226f, -46.288f, -45.726f, + -43.497f, -39.699f, -37.028f, -34.990f, -31.390f, -30.077f, -27.857f, -25.648f, -20.245f, + -14.867f, -11.318f, -9.662f, -3.021f, -1.521f, -0.175f, -0.432f, 6.028f, 9.892f, + 11.121f, 13.338f, 15.153f, 15.012f, 16.265f, 16.235f, 15.799f, 16.200f, 15.274f, + 13.606f }, + { -29.534f, -29.825f, -27.994f, -28.719f, -28.557f, -27.268f, -28.405f, -28.951f, -28.129f, + -26.490f, -22.734f, -16.121f, -14.777f, -18.572f, -19.220f, -18.167f, -16.390f, -18.082f, + -16.694f, -14.185f, -17.105f, -15.640f, -15.887f, -15.539f, -14.798f, -13.661f, -12.718f, + -12.204f, -11.925f, -10.812f, -9.455f, -8.824f, -7.554f, -7.059f, -6.705f, -5.090f, + -4.842f, -4.545f, -3.981f, -2.914f, -2.049f, -1.253f, -0.744f, 0.062f, 0.148f, + 0.429f, 0.828f, 0.799f, 0.505f, -0.072f, -0.365f, -0.514f, -1.118f, -1.651f, + -1.689f, -1.724f, -1.271f, -0.729f, -0.200f, 0.599f, 1.154f, 1.819f, 2.740f, + 2.741f, 2.495f, 2.758f, 2.291f, 1.768f, 1.226f, 0.393f, -0.401f, -1.443f, + -2.267f, -3.078f, -3.999f, -4.734f, -5.120f, -5.611f, -6.284f, -6.899f, -7.483f, + -8.019f, -8.252f, -8.202f, -8.056f, -7.635f, -6.983f, -5.987f, -5.169f, -3.112f, + -2.634f, -1.796f, -0.990f, 0.291f, 1.365f, 1.717f, 2.536f, 3.131f, 3.666f, + 4.400f, 4.240f, 1.210f, -2.449f, -0.414f, 3.642f, 2.288f, -3.105f, -5.384f, + -8.185f, -6.787f, -8.738f, -11.715f, -13.890f, -16.673f, -20.883f, -27.685f, -25.700f, + -26.092f, -30.195f, -28.908f, -27.934f, -29.481f, -28.696f, -30.020f, -28.266f, -28.418f, + -29.388f, -30.028f, -31.235f, -32.310f, -32.724f, -33.088f, -34.058f, -35.226f, -36.129f, + -36.664f, -33.865f, -35.366f, -34.803f, -37.110f, -37.890f, -39.315f, -41.772f, -43.172f, + -44.843f, -46.053f, -47.382f, -48.518f, -48.878f, -47.870f, -46.540f, -45.840f, -44.863f, + -42.770f, -39.476f, -36.871f, -34.212f, -31.841f, -30.803f, -27.745f, -25.430f, -19.578f, + -13.685f, -10.816f, -9.059f, -2.024f, -1.467f, 1.255f, 0.521f, 5.222f, 8.851f, + 11.388f, 13.581f, 15.456f, 15.177f, 16.317f, 16.261f, 15.882f, 16.299f, 15.317f, + 13.606f }, + { -29.534f, -29.775f, -27.902f, -28.646f, -28.569f, -27.818f, -28.467f, -29.081f, -28.352f, + -26.739f, -22.651f, -15.379f, -13.423f, -17.660f, -18.858f, -17.519f, -15.523f, -17.267f, + -16.065f, -14.242f, -14.743f, -14.811f, -15.243f, -14.298f, -13.839f, -12.810f, -12.173f, + -11.669f, -11.215f, -10.012f, -8.759f, -8.100f, -6.797f, -6.585f, -6.082f, -4.878f, + -4.343f, -3.921f, -2.987f, -1.993f, -1.072f, -0.697f, -0.059f, 0.576f, 0.826f, + 1.231f, 1.750f, 1.783f, 1.385f, 0.426f, 0.080f, -0.134f, -0.598f, -0.716f, + -1.163f, -0.931f, -0.590f, -0.222f, 0.197f, 0.894f, 1.613f, 2.319f, 2.857f, + 3.390f, 3.506f, 2.825f, 2.821f, 2.335f, 1.693f, 0.945f, 0.081f, -1.026f, + -1.795f, -2.548f, -3.405f, -4.303f, -4.658f, -4.869f, -5.480f, -6.028f, -6.473f, + -6.813f, -6.877f, -6.694f, -6.405f, -6.009f, -5.231f, -4.311f, -3.510f, -2.271f, + -1.592f, -0.733f, 0.092f, 1.072f, 2.908f, 3.873f, 4.252f, 4.907f, 5.283f, + 5.889f, 3.805f, -0.708f, -0.253f, 4.336f, 5.349f, 4.204f, -1.735f, -8.567f, + -10.969f, -12.327f, -12.657f, -11.306f, -13.494f, -17.786f, -22.682f, -25.695f, -25.305f, + -27.023f, -31.493f, -28.955f, -27.782f, -28.545f, -28.548f, -30.106f, -28.961f, -28.526f, + -29.797f, -31.190f, -32.447f, -33.458f, -34.039f, -34.353f, -34.260f, -34.713f, -35.792f, + -37.238f, -35.433f, -36.057f, -36.212f, -37.558f, -38.928f, -39.989f, -42.642f, -44.288f, + -45.612f, -46.543f, -47.504f, -48.525f, -48.416f, -47.814f, -46.981f, -45.667f, -44.080f, + -42.038f, -38.955f, -36.589f, -34.016f, -32.073f, -30.921f, -27.845f, -24.803f, -18.838f, + -13.146f, -10.928f, -8.340f, -0.726f, -1.233f, 3.063f, 1.969f, 4.660f, 8.052f, + 11.996f, 13.936f, 15.687f, 15.334f, 16.390f, 16.293f, 15.974f, 16.391f, 15.358f, + 13.606f }, + { -29.534f, -29.723f, -27.803f, -28.528f, -28.611f, -28.382f, -28.568f, -29.249f, -28.653f, + -26.873f, -22.377f, -16.588f, -14.703f, -17.603f, -18.835f, -17.138f, -15.564f, -16.911f, + -15.455f, -14.249f, -12.981f, -14.487f, -14.428f, -13.302f, -13.136f, -11.880f, -11.516f, + -11.163f, -10.409f, -9.199f, -7.968f, -6.921f, -6.209f, -5.995f, -4.976f, -4.296f, + -3.730f, -3.213f, -2.067f, -1.160f, -0.401f, 0.241f, 0.831f, 1.189f, 1.660f, + 2.196f, 2.627f, 2.441f, 2.190f, 1.047f, 0.398f, 0.510f, 0.107f, 0.039f, + -0.435f, -0.128f, 0.075f, 0.403f, 0.698f, 1.445f, 2.137f, 2.750f, 3.422f, + 3.758f, 3.856f, 3.449f, 3.274f, 2.837f, 2.248f, 1.385f, 0.638f, -0.079f, + -1.091f, -1.903f, -2.825f, -3.803f, -4.186f, -4.197f, -4.470f, -4.937f, -5.308f, + -5.461f, -5.373f, -5.080f, -4.599f, -4.098f, -3.439f, -2.503f, -1.781f, -1.098f, + -0.431f, 0.610f, 1.354f, 2.320f, 3.666f, 5.594f, 6.117f, 6.417f, 7.134f, + 6.275f, 6.285f, 6.036f, 5.671f, 6.801f, 5.550f, 4.284f, -0.477f, -8.584f, + -10.937f, -12.358f, -15.646f, -17.810f, -17.772f, -19.072f, -24.328f, -24.481f, -25.631f, + -29.268f, -29.546f, -27.368f, -28.102f, -28.284f, -27.953f, -30.125f, -30.067f, -29.890f, + -30.442f, -31.731f, -34.039f, -34.578f, -34.658f, -34.626f, -33.927f, -33.963f, -34.454f, + -36.119f, -35.502f, -36.753f, -37.171f, -38.081f, -39.358f, -39.920f, -42.687f, -45.085f, + -45.973f, -47.037f, -47.628f, -48.198f, -48.150f, -47.611f, -46.755f, -45.258f, -43.525f, + -41.417f, -38.259f, -35.866f, -33.967f, -31.487f, -29.513f, -27.209f, -23.593f, -18.148f, + -12.913f, -11.211f, -7.763f, 0.753f, -0.739f, 4.846f, 3.664f, 4.685f, 7.703f, + 12.934f, 14.484f, 15.911f, 15.484f, 16.492f, 16.336f, 16.075f, 16.475f, 15.397f, + 13.606f }, + { -29.534f, -29.670f, -27.700f, -28.369f, -28.675f, -28.899f, -28.708f, -29.402f, -28.958f, + -26.923f, -22.098f, -19.518f, -18.243f, -18.498f, -18.895f, -17.032f, -16.164f, -16.916f, + -14.982f, -14.122f, -11.857f, -14.012f, -13.719f, -12.802f, -12.333f, -10.970f, -10.866f, + -10.442f, -9.774f, -8.412f, -7.206f, -6.004f, -5.642f, -5.045f, -3.808f, -3.313f, + -3.158f, -2.257f, -1.139f, -0.324f, 0.394f, 1.125f, 1.559f, 2.082f, 2.373f, + 3.054f, 3.324f, 3.277f, 3.065f, 1.791f, 1.034f, 0.807f, 0.991f, 0.974f, + 0.670f, 0.929f, 1.079f, 1.495f, 1.679f, 2.102f, 2.611f, 3.162f, 4.069f, + 4.342f, 4.479f, 4.330f, 4.356f, 3.598f, 3.110f, 2.160f, 1.306f, 0.510f, + -0.290f, -1.086f, -2.078f, -2.891f, -3.488f, -3.523f, -3.476f, -3.734f, -3.957f, + -3.917f, -3.837f, -3.328f, -2.817f, -2.270f, -1.485f, -0.465f, 0.297f, 0.879f, + 0.898f, 1.944f, 2.887f, 3.873f, 4.664f, 6.066f, 7.593f, 8.474f, 9.192f, + 6.811f, 10.498f, 8.398f, 8.558f, 7.059f, 5.575f, 3.375f, -1.011f, -7.605f, + -11.698f, -13.952f, -14.806f, -19.041f, -20.411f, -22.528f, -26.143f, -27.109f, -27.861f, + -27.163f, -26.354f, -27.559f, -28.572f, -28.849f, -27.206f, -30.063f, -30.489f, -31.025f, + -30.276f, -32.102f, -34.667f, -34.915f, -34.467f, -34.044f, -34.126f, -33.787f, -33.708f, + -34.980f, -35.717f, -37.239f, -37.453f, -38.614f, -39.832f, -40.440f, -42.420f, -45.164f, + -45.702f, -46.400f, -47.718f, -47.984f, -47.601f, -46.566f, -45.479f, -44.299f, -42.748f, + -40.737f, -37.459f, -34.623f, -33.493f, -30.651f, -27.500f, -25.251f, -22.267f, -17.510f, + -12.333f, -10.413f, -6.984f, 2.204f, -0.012f, 6.021f, 5.219f, 5.291f, 7.905f, + 14.058f, 15.214f, 16.190f, 15.635f, 16.626f, 16.396f, 16.183f, 16.553f, 15.436f, + 13.606f }, + { -29.534f, -29.616f, -27.594f, -28.172f, -28.747f, -29.315f, -28.870f, -29.476f, -29.170f, + -26.935f, -22.045f, -22.759f, -22.002f, -19.737f, -18.878f, -17.019f, -16.573f, -16.416f, + -14.547f, -13.762f, -11.024f, -13.159f, -13.049f, -11.916f, -11.519f, -10.324f, -9.904f, + -9.569f, -8.837f, -7.656f, -6.575f, -5.550f, -4.732f, -3.670f, -2.976f, -2.666f, + -1.968f, -1.156f, -0.091f, 0.566f, 1.144f, 1.771f, 2.294f, 3.040f, 3.606f, + 3.886f, 4.202f, 4.301f, 3.924f, 2.740f, 2.229f, 1.979f, 2.002f, 2.056f, + 2.119f, 2.204f, 2.254f, 2.507f, 2.636f, 3.091f, 3.526f, 3.886f, 4.498f, + 5.311f, 5.270f, 4.600f, 4.476f, 4.448f, 4.030f, 3.019f, 2.341f, 1.549f, + 0.833f, -0.124f, -0.974f, -1.728f, -2.335f, -2.389f, -2.275f, -2.283f, -2.426f, + -2.189f, -1.950f, -1.676f, -1.132f, -0.436f, 0.539f, 1.537f, 2.643f, 3.536f, + 3.025f, 3.455f, 4.638f, 5.497f, 6.768f, 7.610f, 8.830f, 10.723f, 10.786f, + 10.093f, 13.705f, 8.875f, 7.289f, 5.509f, 3.445f, 1.040f, -1.643f, -5.668f, + -12.240f, -13.241f, -17.054f, -19.712f, -18.958f, -22.877f, -25.362f, -23.348f, -25.442f, + -25.039f, -24.584f, -27.915f, -28.637f, -28.609f, -27.744f, -28.620f, -30.955f, -29.739f, + -31.896f, -31.330f, -33.923f, -34.537f, -33.753f, -35.896f, -35.168f, -33.969f, -35.515f, + -36.402f, -37.496f, -37.232f, -37.385f, -38.693f, -39.938f, -41.382f, -42.867f, -44.658f, + -45.100f, -45.329f, -47.442f, -47.819f, -47.117f, -45.798f, -44.088f, -43.133f, -41.520f, + -40.030f, -36.709f, -33.332f, -32.725f, -29.632f, -26.357f, -23.597f, -21.466f, -16.747f, + -11.181f, -8.295f, -5.894f, 3.763f, 0.886f, 6.436f, 6.455f, 6.303f, 8.685f, + 15.153f, 16.023f, 16.550f, 15.803f, 16.791f, 16.476f, 16.298f, 16.627f, 15.474f, + 13.606f }, + { -29.534f, -29.561f, -27.485f, -27.944f, -28.808f, -29.592f, -29.016f, -29.414f, -29.216f, + -26.937f, -22.364f, -24.775f, -23.943f, -20.366f, -18.703f, -16.848f, -16.496f, -15.661f, + -14.023f, -13.014f, -10.312f, -12.040f, -12.072f, -10.841f, -10.579f, -9.394f, -8.873f, + -8.307f, -7.831f, -6.774f, -5.752f, -4.827f, -3.553f, -2.732f, -2.448f, -1.516f, + -0.769f, 0.036f, 0.867f, 1.565f, 2.139f, 2.646f, 3.243f, 4.154f, 4.508f, + 4.855f, 5.286f, 5.186f, 4.908f, 3.847f, 3.276f, 3.156f, 3.042f, 3.265f, + 3.389f, 3.549f, 3.290f, 3.612f, 3.646f, 4.073f, 4.657f, 4.966f, 4.988f, + 6.133f, 6.409f, 5.127f, 5.556f, 5.628f, 5.742f, 4.452f, 3.457f, 2.880f, + 2.202f, 1.353f, 0.384f, -0.074f, -0.687f, -1.027f, -0.816f, -0.572f, -0.624f, + -0.309f, -0.261f, -0.338f, -0.029f, 0.808f, 1.748f, 3.771f, 4.997f, 6.742f, + 6.166f, 5.724f, 6.504f, 7.444f, 8.504f, 9.357f, 10.021f, 10.894f, 11.912f, + 14.872f, 9.382f, 5.894f, 5.521f, 4.598f, 2.327f, -0.624f, -2.394f, -6.084f, + -12.676f, -14.300f, -17.478f, -20.276f, -16.867f, -21.691f, -24.716f, -23.219f, -24.893f, + -25.922f, -25.798f, -28.530f, -29.114f, -28.857f, -28.818f, -29.284f, -30.516f, -31.460f, + -31.908f, -31.948f, -33.544f, -34.148f, -34.417f, -35.400f, -35.723f, -35.169f, -35.443f, + -37.071f, -37.931f, -36.903f, -37.016f, -37.850f, -39.474f, -41.601f, -43.230f, -44.752f, + -44.623f, -44.757f, -46.769f, -47.546f, -46.815f, -45.612f, -43.240f, -41.695f, -40.264f, + -39.063f, -36.116f, -33.129f, -32.068f, -28.589f, -26.263f, -23.392f, -21.056f, -15.728f, + -9.887f, -6.209f, -4.968f, 5.547f, 1.840f, 6.583f, 7.512f, 7.566f, 9.984f, + 16.008f, 16.771f, 16.968f, 16.005f, 16.982f, 16.579f, 16.418f, 16.697f, 15.510f, + 13.606f }, + { -29.534f, -29.505f, -27.374f, -27.691f, -28.836f, -29.713f, -29.104f, -29.197f, -29.084f, + -26.938f, -23.038f, -25.028f, -23.573f, -19.773f, -18.323f, -16.293f, -15.777f, -15.252f, + -13.439f, -12.202f, -9.994f, -10.748f, -11.279f, -10.173f, -9.530f, -8.398f, -7.756f, + -7.082f, -6.890f, -5.996f, -5.001f, -4.019f, -2.513f, -2.061f, -1.683f, -0.938f, + 0.389f, 1.241f, 1.784f, 2.410f, 3.195f, 3.472f, 3.962f, 4.820f, 5.415f, + 5.811f, 6.328f, 6.224f, 5.897f, 5.094f, 4.465f, 4.379f, 4.187f, 4.525f, + 4.856f, 4.712f, 4.877f, 4.633f, 4.863f, 4.938f, 5.396f, 5.847f, 6.092f, + 6.802f, 6.435f, 7.747f, 6.233f, 7.024f, 6.463f, 6.289f, 5.230f, 4.431f, + 3.706f, 3.019f, 2.387f, 1.656f, 1.271f, 1.259f, 1.282f, 1.328f, 0.754f, + 0.348f, -0.200f, -1.880f, -2.859f, -1.952f, 0.079f, 3.155f, 6.263f, 8.896f, + 9.560f, 8.454f, 9.042f, 10.141f, 10.469f, 10.401f, 12.807f, 11.570f, 14.169f, + 13.263f, 6.287f, 3.364f, 3.070f, 1.887f, 0.571f, -1.169f, -3.611f, -6.824f, + -11.238f, -16.173f, -18.082f, -21.693f, -17.940f, -21.570f, -25.644f, -23.572f, -24.490f, + -25.994f, -27.664f, -29.201f, -29.424f, -29.648f, -30.738f, -31.255f, -31.056f, -33.018f, + -32.282f, -32.104f, -33.471f, -34.827f, -34.598f, -34.055f, -35.544f, -35.757f, -36.395f, + -37.379f, -37.907f, -36.853f, -37.684f, -38.385f, -38.876f, -41.188f, -43.210f, -44.873f, + -44.520f, -44.523f, -46.467f, -46.862f, -46.180f, -45.119f, -42.633f, -40.230f, -39.083f, + -38.102f, -35.295f, -33.421f, -31.242f, -28.139f, -26.437f, -23.549f, -20.484f, -14.581f, + -9.026f, -5.274f, -4.277f, 6.980f, 2.731f, 7.076f, 8.581f, 8.945f, 11.619f, + 16.492f, 17.361f, 17.384f, 16.257f, 17.190f, 16.704f, 16.540f, 16.767f, 15.544f, + 13.606f }, + { -29.534f, -29.448f, -27.264f, -27.423f, -28.812f, -29.681f, -29.092f, -28.854f, -28.837f, + -26.954f, -23.880f, -24.177f, -21.973f, -18.190f, -17.899f, -15.511f, -14.435f, -14.760f, + -12.831f, -11.435f, -9.989f, -9.452f, -10.619f, -9.503f, -8.441f, -7.209f, -6.469f, + -6.087f, -5.735f, -5.075f, -4.256f, -3.065f, -1.990f, -1.049f, -0.591f, 0.697f, + 1.686f, 2.315f, 2.805f, 3.410f, 4.065f, 4.447f, 4.776f, 5.724f, 6.623f, + 6.443f, 7.182f, 7.207f, 7.056f, 6.361f, 5.549f, 5.651f, 5.400f, 5.713f, + 6.000f, 5.968f, 6.599f, 5.529f, 6.087f, 6.379f, 6.536f, 6.537f, 6.656f, + 7.709f, 7.759f, 7.863f, 7.945f, 7.101f, 7.039f, 7.684f, 6.876f, 6.146f, + 5.443f, 5.010f, 4.526f, 4.105f, 3.500f, 3.552f, 3.410f, 2.276f, 0.387f, + -2.256f, -1.858f, 2.812f, 8.417f, 11.235f, 8.132f, 4.963f, 10.866f, 10.032f, + 8.863f, 9.541f, 11.276f, 11.834f, 13.071f, 12.147f, 12.897f, 11.754f, 15.276f, + 10.722f, 2.591f, 1.122f, 2.554f, 0.459f, -0.594f, -3.246f, -5.112f, -8.262f, + -12.137f, -16.362f, -19.107f, -22.843f, -20.041f, -23.001f, -26.459f, -24.480f, -26.254f, + -27.155f, -29.539f, -29.652f, -30.124f, -31.017f, -32.787f, -32.923f, -32.450f, -31.829f, + -34.152f, -32.285f, -32.258f, -34.314f, -34.545f, -34.406f, -35.412f, -36.349f, -36.235f, + -37.244f, -37.555f, -36.696f, -37.805f, -38.592f, -38.800f, -41.360f, -43.292f, -44.712f, + -44.396f, -44.379f, -45.182f, -44.838f, -44.693f, -43.809f, -42.291f, -38.486f, -37.536f, + -37.323f, -34.359f, -32.546f, -30.228f, -27.893f, -26.272f, -23.086f, -19.567f, -13.427f, + -8.485f, -4.801f, -3.175f, 7.147f, 3.595f, 8.010f, 9.604f, 10.211f, 13.270f, + 16.601f, 17.799f, 17.728f, 16.566f, 17.408f, 16.850f, 16.663f, 16.837f, 15.577f, + 13.606f }, + { -29.534f, -29.391f, -27.155f, -27.144f, -28.715f, -29.516f, -28.960f, -28.460f, -28.587f, + -27.004f, -24.603f, -23.302f, -20.591f, -16.630f, -17.808f, -15.102f, -13.195f, -13.730f, + -12.318f, -10.706f, -9.534f, -8.249f, -9.827f, -8.608f, -7.479f, -6.024f, -5.437f, + -5.010f, -4.561f, -4.132f, -3.512f, -2.162f, -1.246f, -0.345f, 0.736f, 1.526f, + 2.567f, 3.391f, 4.108f, 4.528f, 4.949f, 5.478f, 5.897f, 6.809f, 7.597f, + 7.210f, 8.302f, 8.155f, 8.132f, 7.699f, 6.855f, 6.701f, 6.469f, 6.772f, + 7.252f, 7.344f, 7.443f, 6.383f, 7.095f, 7.296f, 7.996f, 7.843f, 8.031f, + 8.646f, 9.468f, 8.409f, 8.094f, 8.015f, 8.413f, 8.241f, 8.162f, 7.802f, + 7.817f, 7.324f, 6.701f, 6.950f, 6.319f, 5.702f, 3.823f, -0.052f, -0.787f, + 5.812f, 8.543f, 8.719f, 9.899f, 16.603f, 15.855f, 10.183f, 18.492f, 15.868f, + 14.391f, 12.117f, 10.550f, 12.655f, 13.635f, 13.356f, 13.718f, 11.960f, 14.540f, + 12.352f, 0.841f, -0.803f, 0.311f, -1.568f, -2.804f, -5.725f, -7.157f, -10.349f, + -14.964f, -19.553f, -19.246f, -23.508f, -21.350f, -23.667f, -26.369f, -28.308f, -28.446f, + -29.534f, -31.274f, -32.042f, -32.390f, -33.632f, -34.468f, -34.311f, -33.553f, -32.229f, + -32.823f, -33.327f, -32.406f, -32.254f, -33.945f, -34.525f, -34.976f, -36.699f, -36.758f, + -36.589f, -36.926f, -36.641f, -37.916f, -39.139f, -39.502f, -42.133f, -43.546f, -44.626f, + -44.008f, -44.446f, -44.033f, -43.698f, -43.768f, -44.006f, -42.354f, -37.456f, -35.750f, + -36.062f, -33.837f, -31.898f, -29.717f, -27.239f, -25.470f, -22.237f, -18.443f, -12.124f, + -7.539f, -3.310f, -1.352f, 6.127f, 4.686f, 8.922f, 10.279f, 11.028f, 14.574f, + 16.463f, 18.191f, 17.953f, 16.931f, 17.628f, 17.015f, 16.785f, 16.909f, 15.608f, + 13.606f }, + { -29.534f, -29.334f, -27.049f, -26.863f, -28.533f, -29.249f, -28.705f, -28.111f, -28.437f, + -27.084f, -24.948f, -22.982f, -20.134f, -16.209f, -18.184f, -15.328f, -12.777f, -12.681f, + -12.004f, -10.303f, -8.542f, -7.367f, -9.152f, -7.489f, -6.538f, -4.965f, -4.158f, + -3.950f, -3.313f, -3.067f, -2.470f, -1.537f, -0.170f, 0.613f, 1.765f, 3.079f, + 3.678f, 4.469f, 5.098f, 5.351f, 5.550f, 6.066f, 6.742f, 7.737f, 8.531f, + 8.862f, 9.201f, 9.078f, 9.228f, 9.037f, 8.081f, 7.928f, 7.540f, 8.029f, + 8.435f, 8.352f, 10.050f, 7.614f, 8.597f, 8.475f, 9.029f, 9.255f, 9.421f, + 9.990f, 9.356f, 9.508f, 9.457f, 8.719f, 8.768f, 9.073f, 9.374f, 9.884f, + 10.305f, 10.080f, 9.750f, 9.851f, 8.505f, 6.255f, 1.934f, 2.243f, 9.197f, + 13.758f, 14.608f, 17.188f, 16.723f, 18.323f, 17.178f, 22.230f, 23.432f, 23.746f, + 22.030f, 17.646f, 12.585f, 10.941f, 13.089f, 14.384f, 14.105f, 11.813f, 15.043f, + 14.482f, 1.139f, -2.089f, -1.633f, -3.915f, -5.947f, -7.663f, -10.162f, -12.285f, + -15.805f, -22.293f, -20.908f, -21.382f, -22.847f, -25.137f, -26.916f, -28.416f, -30.412f, + -30.186f, -33.574f, -34.896f, -35.801f, -35.548f, -36.607f, -36.184f, -35.575f, -34.867f, + -32.332f, -32.687f, -33.429f, -32.926f, -32.690f, -33.319f, -33.373f, -36.311f, -37.098f, + -35.908f, -36.632f, -37.246f, -38.194f, -39.390f, -40.189f, -41.918f, -43.200f, -43.884f, + -43.370f, -44.282f, -43.767f, -43.764f, -42.435f, -41.684f, -40.768f, -37.052f, -34.275f, + -34.543f, -33.020f, -31.504f, -29.046f, -26.567f, -24.340f, -21.422f, -17.118f, -10.484f, + -5.807f, -0.686f, 0.779f, 5.445f, 6.209f, 9.362f, 10.363f, 11.134f, 15.267f, + 16.292f, 18.678f, 18.060f, 17.337f, 17.845f, 17.191f, 16.906f, 16.985f, 15.638f, + 13.606f }, + { -29.534f, -29.276f, -26.946f, -26.583f, -28.258f, -28.911f, -28.349f, -27.883f, -28.425f, + -27.141f, -24.823f, -23.061f, -20.435f, -17.315f, -18.575f, -15.512f, -12.740f, -12.036f, + -11.488f, -9.694f, -7.356f, -6.691f, -8.233f, -6.280f, -5.433f, -3.804f, -2.623f, + -2.589f, -2.202f, -1.868f, -1.251f, -0.636f, 0.534f, 1.595f, 2.935f, 3.893f, + 4.741f, 4.998f, 5.364f, 5.042f, 5.193f, 5.606f, 7.269f, 8.558f, 9.757f, + 10.408f, 10.024f, 10.219f, 10.352f, 10.319f, 9.377f, 9.263f, 9.036f, 9.205f, + 9.797f, 9.703f, 9.599f, 8.770f, 10.035f, 9.933f, 10.171f, 11.151f, 10.863f, + 11.712f, 11.115f, 11.024f, 10.536f, 10.140f, 9.799f, 10.489f, 10.897f, 11.762f, + 12.053f, 13.024f, 12.950f, 11.654f, 8.769f, 6.645f, 10.235f, 14.975f, 20.177f, + 18.928f, 19.770f, 19.485f, 18.818f, 11.432f, 12.875f, 16.238f, 23.414f, 23.147f, + 24.530f, 27.656f, 19.544f, 15.393f, 10.132f, 11.971f, 12.096f, 13.955f, 14.609f, + 9.980f, -1.612f, -3.647f, -4.189f, -6.434f, -7.564f, -9.534f, -12.732f, -13.847f, + -15.111f, -24.345f, -22.599f, -23.245f, -23.553f, -24.223f, -27.047f, -31.537f, -32.881f, + -33.446f, -36.365f, -37.026f, -38.804f, -39.579f, -38.748f, -39.374f, -38.881f, -37.226f, + -35.995f, -33.776f, -33.502f, -34.129f, -34.968f, -33.684f, -32.410f, -35.393f, -36.772f, + -35.312f, -36.356f, -36.514f, -37.684f, -38.937f, -40.086f, -40.673f, -41.683f, -42.554f, + -42.054f, -42.928f, -42.590f, -42.219f, -40.645f, -38.629f, -37.853f, -35.179f, -32.503f, + -33.046f, -31.718f, -29.657f, -28.222f, -26.358f, -23.448f, -20.519f, -15.364f, -8.458f, + -3.509f, 1.653f, 2.990f, 6.580f, 8.024f, 9.361f, 9.910f, 10.537f, 15.291f, + 16.311f, 19.339f, 18.097f, 17.762f, 18.059f, 17.374f, 17.025f, 17.066f, 15.665f, + 13.606f }, + { -29.534f, -29.219f, -26.848f, -26.311f, -27.887f, -28.527f, -27.924f, -27.803f, -28.503f, + -27.082f, -24.357f, -23.108f, -20.987f, -19.280f, -18.416f, -14.792f, -12.147f, -11.381f, + -10.319f, -8.320f, -5.857f, -5.525f, -6.920f, -5.055f, -4.173f, -2.440f, -1.197f, + -1.016f, -0.680f, -0.483f, 0.031f, 0.608f, 1.465f, 2.652f, 3.733f, 4.819f, + 4.807f, 4.642f, 4.505f, 4.609f, 5.609f, 5.801f, 6.903f, 8.946f, 10.784f, + 11.133f, 10.711f, 11.204f, 11.369f, 11.142f, 10.719f, 10.306f, 10.284f, 10.672f, + 11.023f, 11.303f, 10.565f, 10.754f, 11.878f, 11.315f, 11.527f, 12.024f, 12.363f, + 13.250f, 13.026f, 12.093f, 12.434f, 11.684f, 11.325f, 12.055f, 12.501f, 13.378f, + 14.353f, 15.236f, 14.757f, 11.037f, 11.663f, 16.848f, 24.029f, 26.677f, 24.226f, + 19.277f, 13.362f, 11.386f, 14.262f, 10.401f, 10.194f, 9.929f, 13.751f, 14.986f, + 17.319f, 24.490f, 26.364f, 23.863f, 17.340f, 16.469f, 19.252f, 17.022f, 12.334f, + 1.487f, -4.462f, -5.897f, -5.925f, -8.231f, -12.088f, -13.830f, -14.551f, -16.545f, + -15.042f, -26.453f, -24.633f, -25.276f, -28.776f, -26.836f, -31.758f, -32.988f, -39.057f, + -37.559f, -38.493f, -41.224f, -41.382f, -42.693f, -40.914f, -39.885f, -39.885f, -38.902f, + -37.463f, -36.455f, -34.855f, -33.146f, -34.505f, -34.015f, -33.282f, -35.316f, -35.783f, + -34.489f, -35.345f, -35.732f, -36.169f, -38.051f, -39.478f, -39.348f, -40.346f, -40.910f, + -40.909f, -40.947f, -40.881f, -40.562f, -38.396f, -36.101f, -34.574f, -32.870f, -30.521f, + -32.246f, -30.695f, -27.773f, -27.517f, -25.586f, -22.349f, -19.044f, -13.192f, -6.214f, + -1.126f, 2.854f, 5.545f, 9.291f, 9.756f, 9.300f, 9.246f, 9.527f, 14.774f, + 16.667f, 20.127f, 18.139f, 18.181f, 18.273f, 17.556f, 17.143f, 17.153f, 15.691f, + 13.606f }, + { -29.534f, -29.161f, -26.755f, -26.049f, -27.426f, -28.110f, -27.461f, -27.836f, -28.567f, + -26.830f, -23.824f, -22.938f, -21.388f, -20.871f, -17.818f, -13.247f, -10.937f, -10.391f, + -8.785f, -7.121f, -4.497f, -3.825f, -5.249f, -3.516f, -3.014f, -0.980f, 0.005f, + 0.496f, 0.859f, 0.662f, 1.308f, 1.764f, 2.665f, 3.578f, 4.620f, 4.502f, + 4.200f, 4.696f, 7.113f, 9.192f, 10.007f, 10.229f, 10.886f, 9.810f, 11.256f, + 10.791f, 10.318f, 10.073f, 10.717f, 11.120f, 10.968f, 10.602f, 10.940f, 11.164f, + 11.942f, 12.556f, 12.425f, 11.665f, 13.241f, 12.703f, 13.440f, 13.603f, 13.621f, + 14.212f, 14.531f, 14.115f, 14.179f, 14.100f, 13.420f, 13.875f, 14.635f, 15.338f, + 15.880f, 15.779f, 12.678f, 15.450f, 24.460f, 31.969f, 31.575f, 31.677f, 28.332f, + 17.668f, 11.924f, 12.133f, 12.603f, 11.414f, 11.955f, 14.172f, 15.982f, 17.122f, + 18.048f, 19.095f, 24.361f, 26.881f, 26.670f, 27.074f, 26.218f, 21.663f, 8.879f, + 2.233f, -2.569f, -8.607f, -10.265f, -11.492f, -14.670f, -15.269f, -16.872f, -18.741f, + -20.030f, -26.542f, -26.136f, -28.532f, -31.906f, -30.369f, -34.474f, -38.978f, -43.671f, + -44.466f, -45.423f, -46.324f, -46.466f, -43.594f, -43.204f, -44.186f, -41.492f, -39.744f, + -40.296f, -39.009f, -37.211f, -35.499f, -34.671f, -33.240f, -32.894f, -33.550f, -34.098f, + -34.044f, -33.849f, -34.863f, -34.535f, -36.958f, -37.730f, -37.314f, -38.641f, -39.095f, + -39.166f, -38.613f, -38.899f, -38.550f, -36.573f, -34.416f, -31.920f, -30.756f, -28.570f, + -31.190f, -29.379f, -26.423f, -25.997f, -23.690f, -20.599f, -16.884f, -10.755f, -4.083f, + 0.615f, 3.904f, 8.389f, 12.036f, 11.192f, 9.441f, 8.750f, 8.475f, 13.902f, + 17.351f, 20.875f, 18.253f, 18.568f, 18.490f, 17.733f, 17.262f, 17.247f, 15.715f, + 13.606f }, + { -29.534f, -29.104f, -26.669f, -25.799f, -26.888f, -27.659f, -26.983f, -27.901f, -28.516f, + -26.389f, -23.467f, -22.673f, -21.408f, -21.229f, -17.453f, -11.667f, -9.612f, -9.340f, + -7.260f, -6.240f, -3.831f, -2.539f, -2.912f, -2.025f, -1.937f, 0.300f, 1.187f, + 1.891f, 2.269f, 1.864f, 2.254f, 2.981f, 3.712f, 4.559f, 5.112f, 3.359f, + 3.676f, 9.078f, 12.788f, 13.698f, 13.496f, 14.709f, 15.004f, 13.460f, 14.942f, + 13.389f, 12.349f, 11.704f, 11.752f, 11.317f, 9.575f, 9.342f, 8.839f, 9.475f, + 11.155f, 12.814f, 14.020f, 13.543f, 14.572f, 14.432f, 14.665f, 15.317f, 15.264f, + 16.200f, 15.778f, 16.565f, 15.758f, 15.874f, 15.699f, 15.778f, 16.493f, 17.218f, + 16.978f, 14.125f, 15.241f, 30.370f, 37.657f, 35.765f, 32.546f, 30.958f, 26.513f, + 19.218f, 14.606f, 16.228f, 14.569f, 14.610f, 15.957f, 18.079f, 18.872f, 18.671f, + 19.591f, 19.666f, 19.699f, 18.380f, 17.578f, 23.061f, 20.064f, 14.158f, 4.214f, + -2.232f, -4.783f, -8.867f, -16.480f, -16.899f, -17.714f, -17.959f, -19.330f, -21.061f, + -22.868f, -27.496f, -27.440f, -34.213f, -36.796f, -36.005f, -39.141f, -43.279f, -43.199f, + -43.823f, -45.416f, -45.885f, -45.821f, -44.410f, -45.971f, -47.554f, -46.960f, -42.778f, + -39.912f, -38.591f, -37.491f, -36.329f, -34.040f, -33.950f, -30.580f, -32.079f, -30.870f, + -32.075f, -33.102f, -33.938f, -33.445f, -35.790f, -35.735f, -35.682f, -36.308f, -36.758f, + -37.005f, -36.608f, -36.959f, -36.713f, -34.855f, -32.752f, -29.931f, -28.520f, -27.072f, + -29.377f, -27.798f, -24.864f, -24.243f, -22.136f, -18.618f, -14.227f, -7.833f, -2.148f, + 1.351f, 6.148f, 10.873f, 13.871f, 12.398f, 9.741f, 8.705f, 7.626f, 12.802f, + 18.192f, 21.375f, 18.475f, 18.902f, 18.715f, 17.900f, 17.383f, 17.349f, 15.737f, + 13.606f }, + { -29.534f, -29.048f, -26.591f, -25.562f, -26.291f, -27.163f, -26.498f, -27.896f, -28.310f, + -25.865f, -23.338f, -22.430f, -20.960f, -20.446f, -17.571f, -10.436f, -8.286f, -8.379f, + -5.647f, -4.484f, -3.088f, -1.633f, -0.641f, -0.587f, -0.438f, 1.304f, 2.389f, + 2.874f, 3.450f, 3.349f, 4.024f, 4.352f, 4.949f, 5.868f, 4.961f, 3.454f, + 8.809f, 11.276f, 13.084f, 14.942f, 15.815f, 16.335f, 15.561f, 17.947f, 17.583f, + 16.116f, 13.930f, 14.558f, 15.742f, 15.713f, 13.400f, 12.994f, 14.327f, 12.411f, + 9.047f, 9.523f, 13.314f, 15.189f, 15.667f, 15.872f, 15.745f, 16.733f, 16.743f, + 17.726f, 17.436f, 18.184f, 18.248f, 17.622f, 17.240f, 17.950f, 18.283f, 18.825f, + 17.399f, 11.838f, 30.432f, 38.459f, 37.101f, 34.334f, 30.987f, 28.697f, 23.260f, + 20.675f, 20.568f, 20.244f, 17.763f, 18.557f, 19.968f, 20.343f, 19.527f, 19.657f, + 20.685f, 22.215f, 20.394f, 17.507f, 18.950f, 21.723f, 13.390f, 4.358f, 1.792f, + -1.771f, -4.390f, 0.010f, -20.105f, -21.884f, -20.811f, -21.000f, -22.735f, -25.496f, + -24.847f, -27.188f, -35.951f, -41.624f, -37.785f, -39.063f, -43.020f, -44.446f, -45.257f, + -45.183f, -45.907f, -46.761f, -46.822f, -48.331f, -49.992f, -49.582f, -47.775f, -45.232f, + -42.979f, -41.888f, -38.857f, -37.024f, -33.760f, -32.312f, -32.012f, -31.517f, -29.181f, + -29.968f, -32.514f, -32.685f, -32.739f, -34.675f, -34.540f, -34.293f, -34.345f, -34.288f, + -34.676f, -34.506f, -35.086f, -34.850f, -33.317f, -31.106f, -28.113f, -26.520f, -25.359f, + -27.720f, -25.809f, -23.133f, -22.590f, -21.016f, -16.532f, -11.411f, -4.749f, -0.239f, + 2.042f, 9.241f, 12.550f, 15.117f, 13.422f, 10.082f, 9.264f, 7.061f, 11.528f, + 18.910f, 21.481f, 18.792f, 19.177f, 18.950f, 18.059f, 17.511f, 17.457f, 15.757f, + 13.606f }, + { -29.534f, -28.993f, -26.520f, -25.338f, -25.660f, -26.605f, -26.007f, -27.747f, -27.983f, + -25.407f, -23.293f, -22.105f, -20.171f, -19.338f, -17.526f, -9.298f, -6.989f, -7.133f, + -3.932f, -2.523f, -1.582f, 0.266f, 0.899f, 1.565f, 1.005f, 2.373f, 3.345f, + 3.942f, 4.389f, 5.028f, 5.644f, 5.838f, 6.756f, 6.453f, 4.506f, 6.869f, + 11.568f, 10.147f, 12.689f, 14.837f, 16.107f, 16.922f, 17.402f, 20.140f, 22.910f, + 19.349f, 16.666f, 16.802f, 17.073f, 18.506f, 17.317f, 16.970f, 19.892f, 20.647f, + 18.537f, 11.735f, 8.441f, 10.331f, 12.447f, 13.300f, 13.706f, 15.799f, 17.073f, + 18.542f, 18.283f, 18.863f, 18.943f, 19.825f, 19.188f, 19.572f, 20.196f, 20.589f, + 13.443f, 18.983f, 38.486f, 43.637f, 40.306f, 36.390f, 31.445f, 27.833f, 26.349f, + 25.139f, 22.784f, 21.593f, 19.701f, 20.504f, 21.319f, 19.790f, 18.825f, 19.055f, + 18.982f, 20.860f, 20.087f, 16.084f, 10.216f, 13.210f, 20.135f, 11.383f, 4.407f, + -2.013f, -1.266f, -5.200f, -18.161f, -24.407f, -22.513f, -21.248f, -24.789f, -29.100f, + -27.965f, -28.046f, -36.585f, -43.581f, -41.748f, -44.131f, -45.134f, -46.734f, -47.701f, + -47.837f, -48.249f, -48.193f, -49.453f, -50.963f, -51.401f, -50.710f, -48.357f, -46.532f, + -44.446f, -42.930f, -42.060f, -37.071f, -34.871f, -31.406f, -29.756f, -29.240f, -28.984f, + -29.588f, -31.870f, -31.065f, -31.792f, -34.368f, -33.335f, -33.254f, -32.621f, -32.285f, + -32.326f, -32.525f, -33.351f, -32.920f, -31.722f, -29.375f, -26.546f, -24.772f, -24.250f, + -25.980f, -23.077f, -20.943f, -20.522f, -18.985f, -14.321f, -8.851f, -2.459f, 1.414f, + 3.946f, 11.652f, 13.631f, 16.256f, 14.128f, 10.542f, 10.444f, 6.829f, 10.145f, + 19.218f, 21.193f, 19.151f, 19.395f, 19.197f, 18.212f, 17.648f, 17.573f, 15.774f, + 13.606f }, + { -29.534f, -28.939f, -26.457f, -25.129f, -25.023f, -25.977f, -25.509f, -27.429f, -27.623f, + -25.107f, -23.118f, -21.521f, -19.383f, -18.658f, -16.568f, -8.091f, -6.090f, -5.325f, + -2.102f, -1.354f, 0.296f, 2.747f, 2.138f, 3.679f, 2.439f, 3.673f, 4.459f, + 5.023f, 5.711f, 6.615f, 6.633f, 7.355f, 8.417f, 7.463f, 4.303f, 9.641f, + 10.327f, 10.464f, 10.722f, 12.613f, 13.684f, 16.049f, 17.753f, 19.988f, 23.445f, + 18.874f, 18.079f, 19.864f, 20.066f, 21.453f, 21.500f, 20.480f, 20.896f, 20.842f, + 20.712f, 20.708f, 19.159f, 14.902f, 14.622f, 16.796f, 15.168f, 14.101f, 12.947f, + 13.359f, 15.638f, 16.471f, 17.135f, 18.414f, 19.501f, 20.040f, 18.781f, 13.866f, + 18.076f, 30.436f, 42.364f, 45.825f, 44.807f, 41.484f, 30.952f, 26.232f, 26.310f, + 24.918f, 23.560f, 23.261f, 22.206f, 21.102f, 20.848f, 19.189f, 17.022f, 16.792f, + 18.562f, 20.357f, 17.544f, 11.822f, 6.286f, 2.666f, 5.787f, 3.184f, 0.044f, + -11.214f, -12.556f, -12.780f, -15.614f, -25.857f, -24.877f, -23.969f, -27.042f, -30.074f, + -29.335f, -27.275f, -41.133f, -45.523f, -42.849f, -46.704f, -47.559f, -48.790f, -49.634f, + -49.984f, -50.339f, -50.711f, -51.485f, -51.653f, -51.360f, -50.552f, -48.581f, -46.201f, + -44.346f, -42.502f, -42.026f, -39.413f, -34.677f, -32.153f, -29.952f, -28.223f, -27.949f, + -28.049f, -28.841f, -29.195f, -29.937f, -33.111f, -31.388f, -32.064f, -31.039f, -30.382f, + -30.714f, -30.932f, -31.339f, -31.026f, -29.708f, -27.862f, -25.334f, -23.865f, -24.414f, + -23.308f, -19.839f, -18.630f, -18.303f, -16.323f, -11.824f, -6.354f, -0.692f, 2.300f, + 6.708f, 12.766f, 14.513f, 17.160f, 14.470f, 11.340f, 12.102f, 7.041f, 8.811f, + 18.929f, 20.655f, 19.487f, 19.574f, 19.452f, 18.366f, 17.798f, 17.694f, 15.790f, + 13.606f }, + { -29.534f, -28.886f, -26.403f, -24.934f, -24.410f, -25.286f, -25.015f, -26.984f, -27.309f, + -24.936f, -22.709f, -20.710f, -18.919f, -18.487f, -14.845f, -7.039f, -5.590f, -3.401f, + -0.047f, 0.394f, 2.152f, 3.977f, 3.386f, 4.792f, 4.838f, 4.817f, 5.673f, + 6.227f, 7.113f, 8.103f, 8.065f, 9.260f, 9.862f, 8.198f, 6.096f, 10.882f, + 9.264f, 8.916f, 9.546f, 10.834f, 12.879f, 14.583f, 15.690f, 17.482f, 18.753f, + 17.759f, 18.037f, 20.016f, 21.224f, 22.141f, 23.292f, 24.361f, 24.476f, 25.297f, + 24.786f, 24.837f, 25.003f, 26.202f, 29.447f, 31.432f, 32.594f, 30.768f, 25.786f, + 22.669f, 20.212f, 18.319f, 16.955f, 15.033f, 14.598f, 15.553f, 15.762f, 20.387f, + 27.481f, 39.357f, 45.051f, 46.533f, 49.123f, 36.632f, 27.868f, 27.028f, 27.267f, + 26.175f, 25.617f, 23.608f, 23.119f, 21.533f, 20.274f, 17.787f, 15.527f, 15.475f, + 16.978f, 17.421f, 13.822f, 8.811f, 4.492f, -0.250f, -3.132f, -4.780f, -5.145f, + -4.599f, -14.191f, -17.356f, -21.502f, -26.388f, -29.353f, -28.213f, -29.246f, -32.862f, + -33.755f, -28.882f, -44.850f, -44.019f, -48.933f, -48.922f, -49.726f, -50.842f, -51.425f, + -51.600f, -51.755f, -51.982f, -52.131f, -51.554f, -50.766f, -49.768f, -48.050f, -45.846f, + -43.984f, -42.753f, -41.276f, -39.839f, -34.895f, -31.583f, -29.321f, -27.380f, -27.494f, + -26.505f, -27.580f, -27.942f, -27.643f, -29.618f, -28.849f, -29.365f, -29.721f, -28.846f, + -28.638f, -28.628f, -29.394f, -29.193f, -28.362f, -27.010f, -24.294f, -23.018f, -23.163f, + -19.568f, -16.167f, -16.301f, -16.029f, -13.651f, -8.677f, -3.902f, 1.281f, 2.579f, + 8.986f, 13.221f, 15.267f, 17.691f, 14.726f, 12.576f, 13.949f, 7.816f, 7.768f, + 18.024f, 20.082f, 19.744f, 19.736f, 19.707f, 18.532f, 17.963f, 17.819f, 15.803f, + 13.606f }, + { -29.534f, -28.835f, -26.358f, -24.754f, -23.851f, -24.557f, -24.555f, -26.496f, -27.069f, + -24.758f, -22.141f, -19.972f, -18.797f, -18.335f, -13.273f, -6.250f, -4.790f, -2.037f, + 1.621f, 2.757f, 3.688f, 4.571f, 4.937f, 6.190f, 7.394f, 6.204f, 6.875f, + 7.623f, 8.496f, 9.364f, 9.433f, 11.237f, 11.070f, 8.081f, 11.438f, 12.736f, + 9.695f, 9.334f, 9.302f, 10.376f, 11.452f, 12.911f, 15.223f, 15.780f, 16.085f, + 16.927f, 18.771f, 20.285f, 21.697f, 22.547f, 22.746f, 22.664f, 23.923f, 25.345f, + 26.959f, 30.058f, 31.957f, 31.814f, 32.281f, 33.246f, 36.671f, 37.574f, 35.090f, + 34.594f, 34.258f, 35.752f, 32.146f, 33.283f, 33.308f, 31.616f, 33.577f, 35.431f, + 38.298f, 44.503f, 45.456f, 46.584f, 44.159f, 31.042f, 27.473f, 28.394f, 27.401f, + 26.406f, 24.246f, 22.700f, 22.652f, 19.600f, 18.205f, 16.642f, 14.994f, 14.154f, + 13.712f, 13.683f, 10.702f, 5.827f, 1.869f, -1.564f, -4.634f, -7.014f, -8.780f, + -8.479f, -10.821f, -16.701f, -22.703f, -30.007f, -32.964f, -30.155f, -31.468f, -37.650f, + -38.171f, -35.709f, -47.155f, -48.024f, -50.740f, -50.376f, -51.199f, -52.148f, -52.543f, + -52.099f, -51.822f, -51.881f, -51.679f, -51.071f, -49.966f, -48.581f, -47.192f, -45.200f, + -43.114f, -42.471f, -40.926f, -38.779f, -34.597f, -30.688f, -28.453f, -26.730f, -26.505f, + -26.190f, -26.106f, -27.748f, -27.507f, -26.881f, -26.294f, -25.969f, -28.200f, -26.928f, + -26.518f, -26.231f, -27.474f, -28.072f, -28.163f, -26.465f, -23.101f, -21.837f, -21.056f, + -15.822f, -13.286f, -13.472f, -13.493f, -10.362f, -5.340f, -1.888f, 2.847f, 3.268f, + 10.356f, 13.506f, 15.740f, 18.173f, 15.212f, 14.105f, 15.684f, 9.134f, 7.236f, + 16.643f, 19.653f, 19.898f, 19.905f, 19.956f, 18.721f, 18.146f, 17.947f, 15.814f, + 13.606f }, + { -29.534f, -28.785f, -26.322f, -24.589f, -23.372f, -23.842f, -24.177f, -26.069f, -26.868f, + -24.436f, -21.600f, -19.600f, -18.720f, -17.790f, -12.554f, -5.534f, -3.349f, -1.100f, + 2.293f, 3.826f, 5.080f, 5.922f, 6.409f, 8.352f, 9.203f, 8.375f, 8.277f, + 8.831f, 9.900f, 10.608f, 11.653f, 12.480f, 12.509f, 9.020f, 14.435f, 13.628f, + 11.675f, 10.801f, 9.861f, 9.808f, 10.392f, 11.900f, 13.865f, 14.474f, 15.133f, + 15.847f, 17.541f, 20.329f, 23.061f, 23.980f, 22.671f, 20.329f, 21.223f, 22.925f, + 26.192f, 25.802f, 24.428f, 22.758f, 25.622f, 26.964f, 31.787f, 35.160f, 38.266f, + 41.244f, 40.663f, 38.421f, 34.178f, 36.310f, 36.830f, 37.887f, 41.781f, 43.511f, + 44.400f, 44.558f, 45.605f, 44.522f, 33.725f, 30.175f, 28.817f, 27.692f, 26.278f, + 24.359f, 22.424f, 22.146f, 21.279f, 18.738f, 16.266f, 14.310f, 13.608f, 12.057f, + 10.630f, 10.283f, 7.759f, 3.053f, -1.062f, -4.799f, -7.139f, -8.371f, -9.881f, + -11.709f, -13.484f, -17.275f, -24.595f, -34.747f, -34.773f, -31.982f, -33.913f, -41.444f, + -41.289f, -44.231f, -51.000f, -51.175f, -50.708f, -51.026f, -52.034f, -52.419f, -52.244f, + -51.619f, -51.325f, -51.175f, -50.664f, -49.681f, -48.404f, -47.319f, -46.091f, -44.585f, + -42.972f, -42.198f, -40.643f, -38.252f, -34.265f, -31.055f, -28.266f, -26.533f, -25.678f, + -25.536f, -24.801f, -25.762f, -26.919f, -26.774f, -25.004f, -24.157f, -25.939f, -24.921f, + -24.391f, -24.467f, -26.361f, -26.582f, -25.796f, -24.197f, -21.465f, -21.136f, -19.181f, + -12.803f, -11.370f, -10.569f, -10.655f, -6.799f, -2.283f, -0.149f, 3.569f, 5.104f, + 11.222f, 13.664f, 15.944f, 18.804f, 15.881f, 15.705f, 17.146f, 10.777f, 7.300f, + 15.040f, 19.426f, 19.961f, 20.101f, 20.189f, 18.944f, 18.347f, 18.076f, 15.823f, + 13.606f }, + { -29.534f, -28.737f, -26.295f, -24.443f, -22.996f, -23.206f, -23.937f, -25.783f, -26.634f, + -23.935f, -21.228f, -19.589f, -18.392f, -17.016f, -12.687f, -4.930f, -1.912f, 0.096f, + 2.783f, 4.647f, 7.317f, 7.494f, 7.005f, 9.283f, 10.436f, 10.970f, 9.663f, + 10.310f, 11.516f, 12.080f, 13.362f, 13.451f, 13.369f, 12.182f, 14.777f, 13.788f, + 12.190f, 12.033f, 10.293f, 9.953f, 10.430f, 11.547f, 11.604f, 13.036f, 14.371f, + 14.694f, 16.010f, 18.932f, 22.721f, 23.298f, 21.084f, 18.480f, 18.674f, 20.113f, + 22.846f, 22.080f, 21.838f, 20.643f, 21.265f, 23.719f, 27.033f, 31.142f, 34.975f, + 41.047f, 42.812f, 41.184f, 39.763f, 40.278f, 43.256f, 42.778f, 43.204f, 43.168f, + 44.311f, 44.382f, 41.000f, 32.931f, 31.139f, 30.547f, 29.323f, 27.152f, 24.797f, + 22.609f, 20.125f, 18.840f, 17.754f, 15.149f, 12.639f, 10.374f, 10.136f, 8.408f, + 6.960f, 6.100f, 4.223f, 1.233f, -3.363f, -6.499f, -9.549f, -9.890f, -10.862f, + -12.699f, -15.501f, -21.616f, -25.702f, -38.362f, -36.087f, -34.686f, -36.669f, -42.986f, + -45.442f, -55.379f, -58.834f, -51.247f, -50.577f, -51.406f, -52.340f, -51.653f, -51.321f, + -50.518f, -49.941f, -49.485f, -48.738f, -47.719f, -46.804f, -45.872f, -44.701f, -43.838f, + -42.056f, -41.646f, -40.611f, -37.976f, -34.364f, -29.408f, -26.892f, -25.625f, -24.262f, + -24.677f, -24.547f, -24.224f, -24.187f, -26.173f, -23.567f, -22.325f, -22.760f, -23.464f, + -22.571f, -22.792f, -24.551f, -23.426f, -22.284f, -21.030f, -19.486f, -20.236f, -16.441f, + -10.835f, -8.344f, -7.986f, -8.059f, -3.459f, 0.335f, 0.661f, 3.997f, 7.560f, + 11.890f, 14.060f, 16.211f, 19.240f, 16.433f, 17.255f, 18.355f, 12.454f, 7.888f, + 13.500f, 19.318f, 19.967f, 20.329f, 20.402f, 19.213f, 18.566f, 18.202f, 15.829f, + 13.606f }, + { -29.534f, -28.692f, -26.277f, -24.316f, -22.737f, -22.719f, -23.879f, -25.673f, -26.313f, + -23.362f, -21.036f, -19.628f, -17.808f, -16.569f, -13.346f, -5.041f, -1.162f, 1.471f, + 4.021f, 7.186f, 10.079f, 9.216f, 7.379f, 9.059f, 11.255f, 12.824f, 11.386f, + 11.878f, 12.857f, 13.504f, 14.765f, 14.927f, 14.603f, 13.808f, 15.627f, 14.157f, + 12.319f, 12.228f, 10.336f, 9.969f, 10.509f, 11.393f, 11.460f, 12.114f, 13.019f, + 13.546f, 14.507f, 16.121f, 19.322f, 19.799f, 18.592f, 17.235f, 17.644f, 17.882f, + 19.764f, 20.908f, 22.359f, 22.800f, 23.826f, 25.283f, 24.801f, 28.095f, 28.518f, + 36.927f, 41.330f, 43.064f, 43.174f, 43.769f, 43.572f, 42.392f, 43.169f, 44.059f, + 45.042f, 42.720f, 31.677f, 27.297f, 28.831f, 31.129f, 29.829f, 26.514f, 23.441f, + 20.333f, 17.947f, 16.129f, 14.371f, 12.535f, 9.807f, 8.350f, 6.889f, 5.051f, + 3.378f, 1.808f, -0.146f, -3.252f, -6.014f, -4.548f, -7.880f, -11.551f, -12.615f, + -14.897f, -16.594f, -23.257f, -29.506f, -39.973f, -36.596f, -36.897f, -39.281f, -44.461f, + -42.476f, -62.241f, -62.227f, -51.252f, -51.049f, -51.920f, -51.809f, -50.944f, -50.222f, + -49.136f, -48.462f, -47.996f, -46.792f, -45.960f, -45.149f, -44.076f, -43.486f, -42.181f, + -40.878f, -40.214f, -39.737f, -37.951f, -34.336f, -28.126f, -26.276f, -24.416f, -23.539f, + -23.708f, -23.634f, -21.932f, -22.297f, -23.657f, -23.501f, -21.204f, -20.139f, -22.185f, + -21.085f, -20.500f, -20.808f, -19.618f, -19.305f, -17.913f, -16.880f, -17.851f, -13.022f, + -8.640f, -4.428f, -6.275f, -4.957f, 1.297f, 1.995f, 0.754f, 4.750f, 9.700f, + 12.729f, 14.973f, 16.943f, 19.164f, 16.757f, 18.736f, 19.433f, 13.990f, 8.835f, + 12.272f, 19.166f, 19.959f, 20.583f, 20.594f, 19.533f, 18.799f, 18.324f, 15.834f, + 13.606f }, + { -29.534f, -28.648f, -26.268f, -24.212f, -22.599f, -22.443f, -24.024f, -25.718f, -25.907f, + -22.896f, -20.918f, -19.399f, -17.230f, -16.710f, -14.256f, -6.427f, -1.029f, 2.317f, + 5.567f, 9.763f, 11.917f, 11.297f, 7.964f, 9.411f, 12.152f, 13.833f, 13.871f, + 13.421f, 14.171f, 15.426f, 15.823f, 16.024f, 15.093f, 13.245f, 14.310f, 13.538f, + 11.918f, 12.333f, 11.143f, 10.815f, 10.537f, 10.904f, 11.499f, 11.607f, 11.730f, + 12.308f, 13.593f, 14.253f, 15.734f, 16.255f, 16.347f, 15.859f, 16.057f, 17.432f, + 18.696f, 20.215f, 22.826f, 25.473f, 25.296f, 25.039f, 23.801f, 25.633f, 29.066f, + 35.922f, 36.121f, 38.966f, 43.192f, 43.434f, 42.001f, 42.917f, 43.597f, 43.292f, + 41.421f, 36.123f, 24.888f, 26.508f, 29.353f, 29.194f, 26.998f, 24.436f, 21.391f, + 17.301f, 14.548f, 13.031f, 11.659f, 9.912f, 7.669f, 6.005f, 4.862f, 2.122f, + 0.443f, 1.153f, -1.367f, -6.318f, -6.781f, -8.402f, -6.216f, -10.463f, -14.433f, + -18.330f, -22.521f, -26.063f, -33.884f, -40.277f, -37.206f, -37.740f, -40.739f, -45.229f, + -41.688f, -60.947f, -64.611f, -52.113f, -51.537f, -51.783f, -51.497f, -50.637f, -49.940f, + -48.700f, -47.625f, -46.960f, -45.704f, -44.824f, -43.412f, -42.202f, -41.678f, -40.329f, + -39.151f, -38.541f, -37.766f, -36.638f, -33.813f, -30.041f, -25.396f, -24.900f, -23.342f, + -22.650f, -21.945f, -20.934f, -20.796f, -20.041f, -22.518f, -19.865f, -18.496f, -19.235f, + -20.017f, -17.478f, -16.955f, -16.432f, -15.759f, -14.825f, -13.087f, -13.422f, -9.334f, + -5.760f, -2.366f, -5.160f, -0.638f, 6.181f, 3.427f, 3.618f, 6.817f, 11.589f, + 14.067f, 15.989f, 18.230f, 18.752f, 17.045f, 20.112f, 20.492f, 15.408f, 9.987f, + 11.525f, 18.825f, 19.966f, 20.847f, 20.766f, 19.904f, 19.042f, 18.439f, 15.836f, + 13.606f }, + { -29.534f, -28.606f, -26.267f, -24.133f, -22.578f, -22.416f, -24.348f, -25.848f, -25.482f, + -22.680f, -20.763f, -18.871f, -16.912f, -17.038f, -15.045f, -8.713f, -1.342f, 2.619f, + 6.757f, 10.698f, 12.976f, 12.173f, 8.485f, 9.875f, 12.880f, 14.783f, 16.133f, + 14.442f, 15.335f, 16.941f, 16.620f, 16.791f, 15.958f, 14.292f, 13.186f, 12.251f, + 10.988f, 12.620f, 12.392f, 12.306f, 11.345f, 10.911f, 11.437f, 11.548f, 11.653f, + 11.925f, 12.121f, 13.037f, 14.114f, 14.143f, 14.687f, 14.413f, 15.546f, 17.173f, + 18.039f, 19.665f, 21.803f, 25.167f, 26.677f, 26.579f, 23.945f, 25.821f, 26.559f, + 26.365f, 29.347f, 29.307f, 30.769f, 37.253f, 38.888f, 39.661f, 41.768f, 39.149f, + 37.528f, 24.885f, 22.161f, 26.042f, 28.379f, 26.835f, 22.973f, 20.896f, 18.491f, + 13.779f, 10.933f, 9.434f, 7.671f, 6.069f, 3.609f, 2.003f, 0.894f, -0.655f, + -2.263f, -1.309f, -4.061f, -6.957f, -7.578f, -8.739f, -7.294f, -11.854f, -17.918f, + -23.030f, -28.268f, -29.860f, -35.898f, -36.670f, -37.385f, -39.787f, -42.138f, -45.195f, + -45.061f, -55.453f, -62.910f, -51.842f, -51.870f, -52.343f, -51.908f, -51.108f, -50.025f, + -48.765f, -47.342f, -46.078f, -44.846f, -43.287f, -36.970f, -39.560f, -39.510f, -38.623f, + -37.712f, -36.781f, -35.835f, -35.697f, -33.864f, -30.636f, -26.644f, -23.290f, -23.373f, + -21.990f, -20.162f, -20.432f, -19.950f, -18.923f, -22.686f, -18.655f, -17.349f, -17.608f, + -18.441f, -16.154f, -14.742f, -13.340f, -11.956f, -11.016f, -8.422f, -7.775f, -5.407f, + -3.618f, -1.804f, -2.351f, 3.416f, 7.642f, 5.990f, 9.371f, 10.390f, 13.675f, + 15.596f, 17.129f, 19.680f, 18.246f, 17.480f, 21.296f, 21.582f, 16.817f, 11.250f, + 11.330f, 18.244f, 19.997f, 21.100f, 20.926f, 20.318f, 19.291f, 18.545f, 15.835f, + 13.606f }, + { -29.534f, -28.567f, -26.275f, -24.084f, -22.659f, -22.639f, -24.788f, -25.974f, -25.137f, + -22.735f, -20.542f, -18.309f, -16.888f, -16.889f, -15.160f, -10.606f, -2.430f, 2.596f, + 7.070f, 10.820f, 13.233f, 11.016f, 9.205f, 10.557f, 13.783f, 15.330f, 17.350f, + 14.870f, 15.141f, 17.274f, 17.402f, 17.151f, 16.203f, 15.257f, 13.789f, 11.280f, + 9.979f, 12.786f, 13.174f, 13.331f, 12.073f, 11.270f, 11.377f, 11.333f, 11.923f, + 11.909f, 11.396f, 12.718f, 13.293f, 13.580f, 14.091f, 13.883f, 15.218f, 16.849f, + 17.715f, 18.851f, 21.204f, 23.351f, 24.522f, 25.669f, 25.597f, 24.422f, 24.078f, + 24.739f, 26.572f, 26.651f, 26.556f, 24.723f, 27.491f, 29.388f, 29.757f, 30.252f, + 30.405f, 21.083f, 22.306f, 25.316f, 24.806f, 23.899f, 20.833f, 19.397f, 15.913f, + 12.030f, 10.018f, 7.034f, 3.120f, 0.157f, -1.706f, -1.729f, -2.179f, -3.385f, + -4.676f, -5.896f, -6.485f, -6.293f, -8.586f, -9.954f, -13.159f, -15.579f, -21.433f, + -29.188f, -31.586f, -29.996f, -32.125f, -35.319f, -37.459f, -39.122f, -41.603f, -43.350f, + -45.685f, -55.498f, -59.238f, -51.376f, -52.095f, -52.585f, -52.190f, -51.316f, -50.060f, + -48.863f, -47.165f, -45.280f, -43.489f, -41.733f, -39.526f, -38.323f, -38.046f, -37.488f, + -36.823f, -35.117f, -34.389f, -33.157f, -32.802f, -29.664f, -26.292f, -22.192f, -22.941f, + -21.141f, -19.373f, -19.402f, -19.348f, -19.973f, -20.580f, -17.678f, -16.125f, -16.314f, + -17.599f, -14.798f, -12.521f, -10.518f, -9.121f, -7.179f, -4.864f, -2.945f, -0.931f, + -1.488f, -1.412f, 1.061f, 6.444f, 7.310f, 9.118f, 13.256f, 13.794f, 15.661f, + 16.976f, 19.336f, 20.570f, 17.600f, 18.046f, 22.229f, 22.695f, 18.250f, 12.592f, + 11.670f, 17.494f, 20.042f, 21.326f, 21.081f, 20.763f, 19.537f, 18.638f, 15.833f, + 13.606f }, + { -29.534f, -28.530f, -26.289f, -24.067f, -22.822f, -23.074f, -25.243f, -26.004f, -24.954f, + -22.968f, -20.329f, -18.010f, -16.983f, -16.080f, -14.354f, -11.074f, -4.372f, 1.518f, + 5.604f, 9.984f, 11.130f, 9.221f, 9.324f, 11.783f, 15.313f, 16.393f, 17.994f, + 15.460f, 14.392f, 17.931f, 17.766f, 17.798f, 17.050f, 16.186f, 14.665f, 11.515f, + 9.384f, 12.415f, 13.696f, 13.271f, 12.962f, 11.571f, 11.293f, 11.556f, 11.560f, + 11.252f, 11.387f, 11.924f, 12.642f, 12.695f, 13.248f, 13.815f, 15.776f, 16.561f, + 17.676f, 18.153f, 19.402f, 20.306f, 21.609f, 21.710f, 22.552f, 23.592f, 23.874f, + 24.158f, 25.487f, 25.650f, 23.895f, 23.543f, 23.224f, 22.405f, 23.164f, 21.987f, + 21.613f, 22.600f, 23.897f, 22.409f, 21.131f, 20.606f, 19.409f, 17.875f, 14.459f, + 10.986f, 8.117f, 4.341f, 0.799f, -3.252f, -5.498f, -4.423f, -4.920f, -5.905f, + -6.858f, -7.891f, -8.608f, -10.162f, -11.773f, -15.171f, -17.218f, -20.913f, -24.764f, + -33.321f, -40.218f, -32.558f, -37.926f, -38.209f, -37.749f, -39.674f, -41.374f, -41.771f, + -42.948f, -60.784f, -57.270f, -50.777f, -51.615f, -52.626f, -52.651f, -51.871f, -50.845f, + -49.465f, -47.085f, -44.666f, -42.338f, -40.468f, -38.564f, -37.549f, -36.677f, -36.140f, + -35.448f, -33.586f, -32.200f, -32.105f, -31.325f, -28.603f, -26.253f, -21.537f, -21.334f, + -19.552f, -18.210f, -18.059f, -17.878f, -19.545f, -19.043f, -16.537f, -14.713f, -15.086f, + -16.179f, -13.377f, -10.872f, -9.945f, -7.780f, -4.723f, -1.720f, -0.118f, 2.316f, + 2.019f, 0.900f, 2.885f, 7.608f, 8.245f, 11.916f, 14.700f, 16.262f, 17.389f, + 18.572f, 22.307f, 20.306f, 16.928f, 18.661f, 22.917f, 23.777f, 19.619f, 14.001f, + 12.457f, 16.732f, 20.081f, 21.518f, 21.237f, 21.216f, 19.774f, 18.716f, 15.829f, + 13.606f }, + { -29.534f, -28.496f, -26.311f, -24.085f, -23.039f, -23.649f, -25.603f, -25.875f, -24.956f, + -23.254f, -20.240f, -18.050f, -16.978f, -15.101f, -13.134f, -10.398f, -6.265f, -1.004f, + 2.747f, 7.641f, 7.672f, 8.032f, 8.583f, 11.933f, 15.642f, 17.580f, 18.427f, + 17.008f, 14.181f, 18.376f, 18.400f, 18.596f, 18.423f, 16.737f, 15.861f, 13.041f, + 10.268f, 12.092f, 13.865f, 11.770f, 12.893f, 11.437f, 11.080f, 11.408f, 11.037f, + 11.030f, 11.070f, 11.498f, 12.303f, 12.695f, 13.045f, 14.071f, 15.137f, 16.258f, + 17.535f, 17.756f, 18.144f, 18.842f, 19.536f, 19.591f, 21.223f, 22.161f, 23.221f, + 23.766f, 24.648f, 25.294f, 23.942f, 22.578f, 21.411f, 22.815f, 23.578f, 23.056f, + 21.602f, 22.273f, 22.418f, 19.983f, 18.807f, 18.690f, 18.370f, 14.753f, 11.129f, + 7.724f, 4.420f, 1.221f, -1.586f, -4.368f, -5.696f, -7.226f, -7.397f, -7.530f, + -8.360f, -9.232f, -10.063f, -12.689f, -14.322f, -13.388f, -16.488f, -23.619f, -26.905f, + -35.211f, -45.096f, -38.578f, -38.030f, -41.799f, -41.252f, -42.056f, -41.163f, -40.995f, + -49.142f, -62.033f, -52.976f, -50.517f, -51.085f, -52.189f, -52.322f, -51.793f, -50.874f, + -49.377f, -46.861f, -44.355f, -41.707f, -39.558f, -37.366f, -36.328f, -35.238f, -34.277f, + -33.477f, -32.017f, -30.488f, -30.515f, -29.890f, -28.269f, -26.344f, -20.962f, -19.435f, + -18.198f, -16.869f, -17.173f, -16.749f, -17.795f, -17.905f, -15.208f, -12.814f, -13.859f, + -14.652f, -12.245f, -9.960f, -8.975f, -6.982f, -1.421f, 1.241f, 2.905f, 6.036f, + 6.855f, 6.745f, 6.037f, 8.528f, 11.162f, 14.446f, 16.286f, 18.736f, 19.477f, + 20.672f, 23.697f, 19.068f, 16.791f, 19.307f, 23.394f, 24.757f, 20.810f, 15.466f, + 13.563f, 16.126f, 20.104f, 21.687f, 21.397f, 21.653f, 19.993f, 18.778f, 15.822f, + 13.606f }, + { -29.534f, -28.464f, -26.339f, -24.140f, -23.286f, -24.267f, -25.768f, -25.562f, -25.096f, + -23.525f, -20.355f, -18.257f, -16.763f, -14.533f, -12.359f, -9.756f, -7.149f, -3.493f, + 0.590f, 5.289f, 5.797f, 7.286f, 8.478f, 11.428f, 15.094f, 17.672f, 19.405f, + 19.377f, 15.067f, 17.894f, 19.026f, 19.604f, 19.051f, 17.810f, 16.770f, 15.209f, + 10.938f, 11.289f, 13.526f, 12.204f, 12.710f, 11.302f, 11.000f, 11.373f, 10.266f, + 10.798f, 11.095f, 11.734f, 12.425f, 13.462f, 13.519f, 13.422f, 14.370f, 16.598f, + 16.991f, 17.320f, 17.264f, 17.511f, 17.860f, 17.937f, 19.125f, 20.146f, 21.333f, + 22.292f, 22.900f, 23.255f, 22.887f, 21.079f, 20.519f, 20.963f, 22.116f, 21.506f, + 21.856f, 21.642f, 21.071f, 19.117f, 17.640f, 17.040f, 15.249f, 11.055f, 7.234f, + 4.106f, 1.316f, -1.643f, -4.513f, -5.922f, -6.824f, -9.328f, -9.462f, -9.076f, + -9.969f, -11.327f, -11.925f, -14.430f, -15.493f, -14.123f, -18.842f, -25.891f, -28.803f, + -34.196f, -42.514f, -41.798f, -42.985f, -38.744f, -39.031f, -40.270f, -42.406f, -55.832f, + -61.905f, -57.375f, -49.849f, -49.740f, -50.228f, -51.183f, -51.476f, -50.726f, -49.790f, + -48.701f, -46.402f, -43.955f, -41.213f, -38.930f, -36.537f, -35.175f, -34.274f, -32.535f, + -31.382f, -30.620f, -28.407f, -27.424f, -28.505f, -27.223f, -25.892f, -20.950f, -18.036f, + -17.432f, -14.592f, -15.041f, -15.639f, -16.150f, -15.661f, -13.137f, -10.046f, -10.465f, + -12.864f, -10.759f, -9.082f, -6.818f, -2.774f, 2.748f, 3.512f, 6.180f, 9.512f, + 10.087f, 11.569f, 11.805f, 12.763f, 15.159f, 16.569f, 18.127f, 21.210f, 22.026f, + 22.842f, 22.319f, 17.971f, 17.579f, 19.965f, 23.702f, 25.597f, 21.821f, 16.966f, + 14.853f, 15.789f, 20.111f, 21.852f, 21.556f, 22.045f, 20.186f, 18.822f, 15.814f, + 13.606f }, + { -29.534f, -28.434f, -26.371f, -24.232f, -23.537f, -24.828f, -25.680f, -25.076f, -25.285f, + -23.785f, -20.663f, -18.416f, -16.409f, -14.427f, -12.341f, -9.797f, -7.250f, -4.436f, + -0.111f, 3.891f, 5.219f, 6.519f, 8.632f, 11.376f, 14.811f, 18.101f, 20.685f, + 20.743f, 17.722f, 16.616f, 20.199f, 19.239f, 19.550f, 18.850f, 17.776f, 16.815f, + 10.228f, 10.560f, 11.863f, 12.848f, 12.383f, 10.814f, 9.990f, 9.467f, 8.724f, + 8.724f, 9.861f, 11.498f, 12.209f, 12.620f, 13.555f, 12.307f, 14.617f, 16.878f, + 16.837f, 17.324f, 17.106f, 16.968f, 16.834f, 17.082f, 17.789f, 18.655f, 19.847f, + 20.510f, 21.241f, 21.055f, 20.271f, 19.473f, 20.184f, 20.900f, 19.708f, 18.897f, + 20.660f, 19.098f, 17.031f, 16.401f, 14.906f, 13.394f, 10.845f, 6.779f, 3.321f, + 0.947f, -1.339f, -3.585f, -6.176f, -7.632f, -7.818f, -11.888f, -12.022f, -11.809f, + -12.627f, -14.435f, -15.525f, -17.488f, -18.296f, -18.916f, -22.718f, -27.301f, -29.505f, + -33.221f, -41.849f, -46.452f, -49.391f, -48.076f, -46.629f, -55.380f, -61.322f, -62.025f, + -57.849f, -51.697f, -47.213f, -48.882f, -49.747f, -50.355f, -50.164f, -49.447f, -48.606f, + -47.684f, -45.631f, -42.905f, -40.795f, -38.646f, -36.520f, -34.764f, -33.319f, -31.304f, + -30.299f, -28.497f, -27.554f, -26.889f, -26.955f, -25.678f, -24.451f, -20.026f, -14.615f, + -15.398f, -13.244f, -13.535f, -14.214f, -13.761f, -12.755f, -10.279f, -7.756f, -6.961f, + -9.152f, -8.263f, -6.280f, -1.238f, 3.266f, 4.905f, 4.817f, 7.709f, 9.260f, + 10.859f, 13.594f, 16.237f, 17.391f, 17.733f, 19.044f, 20.710f, 22.996f, 24.228f, + 24.553f, 20.224f, 18.133f, 18.941f, 20.621f, 23.946f, 26.330f, 22.763f, 18.462f, + 16.202f, 15.746f, 20.117f, 22.038f, 21.704f, 22.365f, 20.348f, 18.847f, 15.803f, + 13.606f }, + { -29.534f, -28.407f, -26.408f, -24.360f, -23.776f, -25.245f, -25.335f, -24.458f, -25.430f, + -24.072f, -21.072f, -18.451f, -16.111f, -14.376f, -12.619f, -10.074f, -7.426f, -4.378f, + -0.526f, 2.773f, 4.359f, 6.146f, 8.428f, 11.226f, 14.202f, 18.429f, 21.061f, + 21.634f, 20.660f, 15.639f, 21.014f, 19.090f, 19.860f, 19.687f, 18.332f, 16.897f, + 10.109f, 10.507f, 11.660f, 12.555f, 11.900f, 10.266f, 8.441f, 6.789f, 5.423f, + 4.965f, 6.350f, 9.003f, 11.606f, 12.388f, 13.253f, 12.655f, 14.948f, 16.351f, + 17.226f, 16.706f, 16.908f, 17.536f, 17.037f, 16.814f, 17.135f, 17.325f, 18.243f, + 18.919f, 19.113f, 19.083f, 18.424f, 17.817f, 17.745f, 18.210f, 17.703f, 17.332f, + 15.891f, 14.393f, 13.262f, 12.632f, 12.283f, 11.519f, 9.143f, 2.284f, -0.813f, + -2.526f, -4.134f, -6.177f, -8.757f, -10.613f, -9.710f, -14.652f, -15.147f, -15.125f, + -15.817f, -16.977f, -18.970f, -20.265f, -22.017f, -23.649f, -26.133f, -28.582f, -31.021f, + -35.691f, -41.013f, -44.963f, -49.045f, -48.433f, -53.415f, -55.591f, -54.690f, -52.918f, + -50.897f, -48.248f, -46.111f, -47.174f, -48.756f, -49.020f, -48.833f, -48.238f, -47.359f, + -46.242f, -44.315f, -41.732f, -39.582f, -37.660f, -35.792f, -33.823f, -32.046f, -30.433f, + -28.682f, -27.504f, -26.697f, -25.494f, -24.943f, -23.848f, -22.915f, -19.752f, -12.825f, + -12.812f, -11.602f, -11.001f, -8.642f, -9.638f, -9.796f, -7.582f, -4.917f, -3.084f, + -5.067f, -4.465f, -0.241f, 4.007f, 4.717f, 5.275f, 6.908f, 9.235f, 10.175f, + 12.072f, 14.919f, 17.583f, 19.477f, 19.391f, 22.299f, 23.868f, 24.360f, 25.599f, + 25.519f, 19.847f, 19.522f, 20.206f, 21.378f, 24.295f, 27.027f, 23.739f, 19.893f, + 17.515f, 15.946f, 20.146f, 22.268f, 21.826f, 22.591f, 20.473f, 18.851f, 15.791f, + 13.606f }, + { -29.534f, -28.383f, -26.446f, -24.521f, -23.994f, -25.465f, -24.786f, -23.764f, -25.472f, + -24.389f, -21.451f, -18.433f, -16.028f, -14.110f, -12.621f, -9.987f, -7.736f, -4.475f, + -1.000f, 1.932f, 3.803f, 6.534f, 9.053f, 11.522f, 14.407f, 18.100f, 21.328f, + 22.850f, 21.906f, 15.404f, 20.660f, 19.967f, 20.264f, 19.632f, 18.874f, 17.958f, + 10.312f, 10.478f, 11.746f, 12.657f, 11.193f, 9.565f, 6.619f, 5.553f, 4.378f, + 2.918f, 5.584f, 5.595f, 9.730f, 11.145f, 12.948f, 13.080f, 14.912f, 15.302f, + 17.038f, 15.920f, 16.511f, 17.484f, 17.074f, 16.102f, 15.326f, 15.691f, 16.482f, + 16.949f, 16.812f, 16.935f, 16.138f, 15.907f, 15.544f, 15.883f, 16.492f, 15.735f, + 13.272f, 10.411f, 8.639f, 7.977f, 10.168f, 11.066f, 8.129f, -1.908f, -4.002f, + -5.353f, -7.487f, -9.437f, -11.423f, -13.434f, -11.938f, -14.737f, -16.386f, -17.868f, + -18.872f, -20.275f, -21.702f, -22.937f, -24.387f, -25.442f, -27.373f, -29.634f, -32.742f, + -39.915f, -41.915f, -44.798f, -45.443f, -46.111f, -48.688f, -49.108f, -49.441f, -49.118f, + -48.410f, -48.085f, -45.447f, -45.092f, -46.986f, -47.494f, -47.389f, -47.079f, -45.815f, + -44.660f, -42.654f, -40.208f, -38.043f, -36.183f, -34.993f, -31.904f, -30.090f, -29.435f, + -27.275f, -25.353f, -24.452f, -23.653f, -22.890f, -21.494f, -20.011f, -18.050f, -12.301f, + -10.243f, -9.475f, -7.803f, -4.234f, -3.343f, -5.082f, -4.925f, -1.147f, -0.265f, + -1.217f, -0.997f, 5.314f, 5.630f, 6.309f, 7.277f, 9.256f, 10.948f, 12.388f, + 14.050f, 16.309f, 18.725f, 20.608f, 21.406f, 24.482f, 25.395f, 25.777f, 26.442f, + 25.639f, 21.004f, 21.155f, 21.156f, 22.427f, 24.872f, 27.718f, 24.737f, 21.184f, + 18.724f, 16.301f, 20.214f, 22.547f, 21.903f, 22.707f, 20.558f, 18.836f, 15.777f, + 13.606f }, + { -29.534f, -28.360f, -26.486f, -24.712f, -24.191f, -25.477f, -24.130f, -23.048f, -25.408f, + -24.685f, -21.699f, -18.444f, -16.113f, -13.801f, -12.309f, -9.675f, -7.589f, -4.570f, + -1.001f, 1.475f, 3.523f, 6.761f, 9.857f, 12.372f, 15.444f, 18.084f, 21.431f, + 23.632f, 22.234f, 16.447f, 20.426f, 20.668f, 20.353f, 19.843f, 18.436f, 18.344f, + 9.014f, 9.750f, 12.079f, 11.999f, 10.503f, 8.653f, 4.975f, 3.781f, 2.246f, + 1.645f, 2.415f, 3.502f, 5.790f, 9.444f, 12.206f, 12.606f, 13.223f, 14.382f, + 15.286f, 15.192f, 16.309f, 16.976f, 16.372f, 14.960f, 13.996f, 13.772f, 13.965f, + 14.612f, 14.297f, 13.305f, 12.679f, 13.017f, 14.108f, 13.861f, 13.895f, 12.488f, + 9.925f, 7.125f, 4.912f, 3.173f, 4.095f, 4.692f, 2.022f, -4.416f, -3.940f, + -7.695f, -10.443f, -12.303f, -13.664f, -15.777f, -16.489f, -14.881f, -17.194f, -20.209f, + -21.303f, -23.003f, -24.060f, -25.607f, -26.886f, -27.337f, -28.235f, -30.513f, -35.046f, + -40.224f, -44.354f, -47.397f, -48.004f, -47.447f, -48.250f, -49.513f, -46.050f, -49.355f, + -47.013f, -47.377f, -46.130f, -44.366f, -45.322f, -45.958f, -45.797f, -45.147f, -43.894f, + -42.784f, -40.736f, -38.351f, -36.460f, -34.880f, -33.563f, -30.907f, -29.118f, -27.237f, + -25.859f, -23.613f, -22.436f, -21.652f, -20.761f, -19.133f, -16.691f, -13.933f, -10.826f, + -6.615f, -5.876f, -3.928f, -1.501f, 1.619f, 0.644f, -1.769f, 1.828f, 3.632f, + 2.021f, 3.325f, 6.336f, 7.864f, 8.589f, 9.926f, 11.257f, 13.325f, 14.705f, + 16.150f, 18.747f, 20.498f, 21.681f, 22.930f, 25.184f, 26.111f, 27.078f, 27.288f, + 25.416f, 22.193f, 22.420f, 22.084f, 23.818f, 25.651f, 28.363f, 25.642f, 22.289f, + 19.791f, 16.725f, 20.326f, 22.869f, 21.920f, 22.706f, 20.602f, 18.801f, 15.762f, + 13.606f }, + { -29.534f, -28.340f, -26.525f, -24.925f, -24.374f, -25.315f, -23.486f, -22.358f, -25.267f, + -24.891f, -21.792f, -18.481f, -16.134f, -13.731f, -12.030f, -9.565f, -6.988f, -4.130f, + -0.857f, 0.665f, 2.282f, 5.983f, 9.333f, 12.602f, 16.203f, 18.830f, 21.515f, + 23.954f, 22.331f, 20.504f, 20.183f, 20.654f, 20.012f, 19.899f, 17.482f, 16.638f, + 7.479f, 8.184f, 11.427f, 10.762f, 9.197f, 7.200f, 3.749f, 1.598f, 0.404f, + 0.303f, 0.909f, 1.372f, 2.333f, 5.162f, 9.582f, 10.733f, 11.023f, 12.219f, + 12.741f, 13.508f, 15.564f, 15.850f, 15.465f, 14.532f, 12.757f, 11.251f, 11.005f, + 11.311f, 10.572f, 9.649f, 8.775f, 9.090f, 9.253f, 9.141f, 8.976f, 8.064f, + 5.950f, 3.976f, 1.893f, -0.150f, -1.536f, -2.332f, -4.608f, -8.972f, -7.075f, + -10.445f, -13.513f, -15.656f, -16.756f, -18.469f, -19.917f, -18.278f, -18.681f, -21.158f, + -23.068f, -24.939f, -25.949f, -28.060f, -30.992f, -32.582f, -31.621f, -31.721f, -36.836f, + -42.286f, -45.819f, -47.163f, -46.971f, -46.342f, -47.714f, -49.379f, -46.043f, -48.015f, + -45.491f, -45.293f, -45.018f, -43.774f, -43.859f, -44.025f, -43.866f, -43.113f, -41.843f, + -40.821f, -38.730f, -36.561f, -34.719f, -33.046f, -31.231f, -29.284f, -27.727f, -25.545f, + -23.449f, -21.748f, -20.152f, -19.353f, -18.212f, -16.126f, -12.998f, -9.824f, -8.525f, + -3.908f, -1.681f, -0.165f, 1.911f, 4.614f, 4.160f, 3.050f, 4.064f, 6.808f, + 6.086f, 7.922f, 7.859f, 10.619f, 11.212f, 12.553f, 13.844f, 15.825f, 17.506f, + 18.157f, 20.795f, 22.436f, 24.306f, 24.644f, 25.488f, 27.180f, 27.821f, 28.285f, + 25.728f, 23.068f, 23.616f, 23.293f, 25.360f, 26.509f, 28.904f, 26.360f, 23.221f, + 20.705f, 17.158f, 20.472f, 23.211f, 21.868f, 22.593f, 20.607f, 18.748f, 15.745f, + 13.606f }, + { -29.534f, -28.323f, -26.562f, -25.153f, -24.559f, -25.049f, -22.961f, -21.728f, -25.079f, + -24.980f, -21.779f, -18.484f, -15.923f, -13.872f, -11.988f, -9.555f, -6.503f, -3.460f, + -0.955f, -0.434f, 0.556f, 4.590f, 7.992f, 11.581f, 15.913f, 18.859f, 21.822f, + 23.423f, 22.600f, 23.171f, 20.408f, 20.447f, 19.787f, 18.797f, 18.335f, 14.916f, + 6.894f, 6.397f, 10.129f, 9.795f, 7.817f, 5.529f, 2.182f, 0.119f, -0.241f, + 0.109f, 0.584f, 0.501f, 0.903f, 2.104f, 5.104f, 7.669f, 8.589f, 9.823f, + 11.306f, 12.530f, 14.625f, 14.879f, 14.450f, 13.633f, 11.223f, 9.681f, 8.609f, + 7.592f, 7.036f, 6.088f, 5.461f, 4.753f, 4.336f, 4.241f, 3.829f, 3.621f, + 2.030f, 0.824f, -0.181f, -1.958f, -4.199f, -4.985f, -7.527f, -10.094f, -10.236f, + -13.189f, -16.340f, -18.297f, -19.283f, -20.161f, -20.145f, -17.871f, -22.341f, -23.581f, + -24.915f, -26.435f, -27.652f, -29.410f, -32.593f, -34.083f, -32.110f, -32.764f, -38.300f, + -43.846f, -44.928f, -45.839f, -45.952f, -45.561f, -47.401f, -48.842f, -47.286f, -46.678f, + -43.993f, -42.795f, -42.581f, -42.499f, -41.975f, -41.681f, -41.460f, -40.880f, -39.419f, + -38.216f, -36.282f, -34.362f, -32.558f, -30.700f, -28.955f, -27.211f, -25.209f, -23.057f, + -20.984f, -19.480f, -17.852f, -16.257f, -15.080f, -12.938f, -10.316f, -8.298f, -6.622f, + -1.695f, 1.467f, 3.299f, 5.254f, 6.972f, 8.089f, 8.817f, 8.859f, 10.225f, + 10.630f, 12.506f, 11.241f, 13.097f, 13.919f, 14.631f, 16.514f, 18.568f, 19.687f, + 20.247f, 22.495f, 25.775f, 27.264f, 25.947f, 25.211f, 26.358f, 27.861f, 28.837f, + 26.779f, 24.314f, 25.168f, 24.827f, 26.805f, 27.356f, 29.337f, 26.897f, 24.063f, + 21.479f, 17.570f, 20.634f, 23.544f, 21.747f, 22.382f, 20.576f, 18.677f, 15.727f, + 13.606f }, + { -29.534f, -28.307f, -26.595f, -25.386f, -24.759f, -24.766f, -22.630f, -21.187f, -24.852f, + -24.978f, -21.721f, -18.424f, -15.599f, -13.958f, -12.060f, -9.273f, -6.221f, -2.951f, + -0.922f, -1.137f, -0.525f, 3.391f, 6.813f, 9.807f, 14.136f, 16.398f, 20.133f, + 22.319f, 22.981f, 23.618f, 20.622f, 20.384f, 19.802f, 18.224f, 18.118f, 13.595f, + 8.774f, 5.026f, 9.085f, 9.604f, 6.172f, 3.091f, 0.857f, -0.773f, -0.700f, + -0.390f, -0.086f, 0.009f, 0.049f, 0.646f, 1.783f, 3.483f, 4.260f, 8.055f, + 9.174f, 10.329f, 12.785f, 13.191f, 12.770f, 12.726f, 9.533f, 9.073f, 7.934f, + 5.925f, 4.877f, 4.174f, 2.453f, -0.060f, -0.562f, -0.721f, -1.083f, -1.502f, + -1.105f, -1.288f, -2.209f, -4.359f, -6.269f, -8.014f, -9.556f, -10.425f, -11.526f, + -14.884f, -18.042f, -19.747f, -20.649f, -20.933f, -20.016f, -18.540f, -21.642f, -24.084f, + -25.554f, -27.553f, -29.007f, -30.444f, -32.627f, -33.322f, -31.783f, -33.222f, -37.410f, + -42.178f, -44.943f, -45.380f, -44.930f, -44.724f, -45.952f, -47.015f, -46.129f, -44.039f, + -41.785f, -41.476f, -40.988f, -40.770f, -40.204f, -39.314f, -38.631f, -37.986f, -36.508f, + -35.289f, -33.678f, -32.003f, -30.126f, -28.267f, -26.452f, -24.709f, -22.361f, -20.281f, + -18.176f, -16.437f, -14.768f, -13.310f, -11.757f, -9.847f, -8.144f, -6.617f, -3.094f, + 3.321f, 4.400f, 6.475f, 7.926f, 9.488f, 10.944f, 11.332f, 12.135f, 12.578f, + 13.927f, 15.054f, 14.218f, 15.729f, 16.775f, 17.526f, 19.083f, 20.742f, 21.892f, + 22.070f, 25.512f, 27.877f, 28.289f, 26.441f, 25.298f, 23.893f, 27.319f, 28.336f, + 28.198f, 26.265f, 26.961f, 26.565f, 28.030f, 28.185f, 29.701f, 27.333f, 24.904f, + 22.148f, 17.951f, 20.797f, 23.842f, 21.570f, 22.095f, 20.515f, 18.592f, 15.708f, + 13.606f }, + { -29.534f, -28.293f, -26.622f, -25.614f, -24.987f, -24.554f, -22.515f, -20.761f, -24.562f, + -24.936f, -21.620f, -18.324f, -15.461f, -13.896f, -12.037f, -8.827f, -5.786f, -2.471f, + -0.790f, -1.503f, -0.961f, 2.922f, 6.239f, 8.821f, 12.979f, 14.635f, 17.858f, + 21.563f, 21.930f, 23.508f, 21.269f, 20.477f, 19.696f, 19.168f, 17.126f, 14.163f, + 11.788f, 5.062f, 7.674f, 8.541f, 4.380f, 0.653f, -0.027f, -1.486f, -1.647f, + -1.471f, -1.008f, -0.884f, -0.609f, -0.264f, 0.385f, 1.329f, 2.062f, 4.181f, + 7.140f, 8.827f, 9.601f, 11.002f, 10.766f, 11.135f, 8.577f, 8.330f, 7.841f, + 5.310f, 4.174f, 2.808f, 0.820f, -1.792f, -2.844f, -3.977f, -5.400f, -4.946f, + -3.386f, -3.311f, -4.284f, -5.000f, -7.599f, -8.469f, -9.436f, -10.789f, -12.420f, + -15.590f, -19.064f, -20.542f, -21.296f, -21.588f, -21.195f, -20.119f, -21.686f, -23.285f, + -24.762f, -27.578f, -29.336f, -30.396f, -32.167f, -33.711f, -32.627f, -34.324f, -38.835f, + -43.913f, -44.976f, -45.302f, -44.709f, -44.240f, -44.368f, -44.495f, -44.210f, -42.101f, + -40.665f, -40.495f, -40.001f, -38.726f, -38.237f, -36.855f, -36.330f, -35.496f, -33.596f, + -32.572f, -31.137f, -29.093f, -27.592f, -25.804f, -23.791f, -21.602f, -19.551f, -17.518f, + -15.655f, -13.083f, -11.122f, -10.176f, -8.891f, -7.311f, -5.723f, -2.479f, 2.603f, + 6.164f, 7.456f, 8.498f, 9.465f, 12.220f, 12.907f, 13.646f, 14.559f, 15.401f, + 15.644f, 15.977f, 16.970f, 18.433f, 19.177f, 20.583f, 21.683f, 23.070f, 23.352f, + 24.755f, 27.946f, 27.195f, 29.648f, 28.063f, 26.408f, 22.776f, 26.390f, 27.509f, + 29.934f, 28.550f, 28.658f, 28.303f, 29.025f, 28.993f, 30.020f, 27.742f, 25.774f, + 22.761f, 18.301f, 20.959f, 24.094f, 21.358f, 21.763f, 20.431f, 18.494f, 15.688f, + 13.606f }, + { -29.534f, -28.282f, -26.642f, -25.827f, -25.249f, -24.475f, -22.587f, -20.475f, -24.190f, + -24.867f, -21.385f, -18.181f, -15.624f, -13.872f, -11.846f, -8.631f, -5.248f, -1.991f, + -0.949f, -1.640f, -0.827f, 3.132f, 6.236f, 8.701f, 12.512f, 14.533f, 16.655f, + 20.855f, 20.788f, 22.296f, 21.305f, 20.201f, 19.292f, 18.956f, 17.226f, 14.594f, + 13.436f, 5.751f, 6.644f, 7.083f, 3.436f, -0.311f, -0.955f, -2.237f, -2.610f, + -2.407f, -2.051f, -1.758f, -1.342f, -0.987f, -0.399f, -0.179f, 0.834f, 2.316f, + 4.134f, 7.689f, 8.433f, 7.828f, 8.190f, 8.244f, 6.125f, 6.973f, 6.946f, + 6.505f, 4.848f, 2.453f, -0.996f, -2.656f, -4.397f, -5.797f, -6.555f, -6.569f, + -6.106f, -4.485f, -4.937f, -5.937f, -8.796f, -8.344f, -10.683f, -12.027f, -12.752f, + -16.214f, -19.439f, -20.913f, -21.514f, -21.859f, -22.091f, -22.276f, -22.717f, -23.579f, + -24.158f, -26.516f, -28.659f, -30.447f, -32.521f, -34.264f, -33.098f, -39.220f, -43.167f, + -43.856f, -44.800f, -44.983f, -44.197f, -43.731f, -43.209f, -42.845f, -42.021f, -40.721f, + -39.372f, -38.779f, -37.900f, -36.333f, -35.683f, -34.246f, -33.720f, -32.627f, -30.706f, + -29.525f, -28.021f, -26.299f, -24.581f, -22.825f, -20.876f, -18.355f, -16.199f, -14.718f, + -11.314f, -10.211f, -7.959f, -6.733f, -5.796f, -4.227f, -1.032f, 3.678f, 8.258f, + 9.743f, 10.261f, 11.194f, 12.947f, 15.496f, 16.458f, 16.362f, 17.394f, 18.783f, + 17.655f, 18.422f, 19.536f, 20.824f, 22.085f, 23.143f, 24.357f, 25.318f, 25.262f, + 28.261f, 28.382f, 27.312f, 31.441f, 29.960f, 27.378f, 23.593f, 25.997f, 27.890f, + 31.962f, 30.633f, 30.181f, 29.798f, 29.830f, 29.718f, 30.279f, 28.148f, 26.623f, + 23.367f, 18.629f, 21.135f, 24.300f, 21.139f, 21.417f, 20.331f, 18.386f, 15.667f, + 13.606f }, + { -29.534f, -28.272f, -26.653f, -26.012f, -25.540f, -24.553f, -22.770f, -20.350f, -23.759f, + -24.724f, -20.888f, -17.915f, -15.820f, -14.027f, -11.561f, -8.656f, -4.943f, -1.722f, + -1.094f, -1.446f, -0.229f, 3.584f, 6.511f, 8.641f, 11.696f, 13.643f, 15.404f, + 20.003f, 20.184f, 21.343f, 20.022f, 20.294f, 19.071f, 18.077f, 17.314f, 14.671f, + 11.769f, 6.811f, 6.198f, 6.000f, 3.157f, -0.714f, -1.642f, -2.932f, -3.326f, + -2.775f, -2.261f, -2.167f, -2.026f, -1.722f, -1.641f, -1.560f, -1.095f, -0.365f, + 1.495f, 3.169f, 5.927f, 7.296f, 5.830f, 5.750f, 4.245f, 6.211f, 6.396f, + 5.892f, 4.913f, 3.017f, -0.006f, -4.412f, -5.691f, -6.880f, -8.022f, -8.415f, + -7.943f, -6.513f, -6.078f, -7.231f, -9.534f, -11.124f, -13.996f, -15.596f, -14.751f, + -17.445f, -20.083f, -21.290f, -21.931f, -22.295f, -22.536f, -22.173f, -23.051f, -23.019f, + -23.655f, -25.561f, -28.391f, -30.855f, -33.639f, -33.698f, -35.616f, -39.996f, -42.968f, + -43.138f, -44.051f, -43.903f, -43.356f, -42.788f, -41.867f, -40.846f, -39.910f, -38.802f, + -37.599f, -36.998f, -35.505f, -34.013f, -33.506f, -31.353f, -30.697f, -29.254f, -27.658f, + -26.335f, -24.638f, -22.920f, -21.042f, -19.450f, -17.722f, -15.509f, -13.274f, -11.287f, + -8.784f, -6.815f, -4.985f, -3.320f, -2.073f, -0.858f, 3.589f, 9.570f, 11.945f, + 14.045f, 13.752f, 14.709f, 16.672f, 21.733f, 22.083f, 20.108f, 20.634f, 20.752f, + 21.098f, 21.899f, 22.735f, 23.510f, 24.604f, 25.271f, 26.784f, 27.169f, 28.940f, + 30.034f, 29.388f, 29.372f, 32.417f, 31.408f, 29.002f, 25.739f, 27.302f, 29.794f, + 33.744f, 32.387f, 31.585f, 30.900f, 30.526f, 30.260f, 30.470f, 28.566f, 27.367f, + 24.002f, 18.959f, 21.349f, 24.475f, 20.943f, 21.087f, 20.224f, 18.272f, 15.646f, + 13.606f }, + { -29.534f, -28.263f, -26.653f, -26.159f, -25.843f, -24.765f, -22.968f, -20.391f, -23.348f, + -24.438f, -20.073f, -17.417f, -15.658f, -14.194f, -11.280f, -8.517f, -4.805f, -1.575f, + -0.905f, -1.260f, 0.278f, 4.057f, 6.916f, 8.822f, 11.336f, 12.973f, 15.430f, + 19.545f, 20.167f, 20.790f, 19.614f, 19.895f, 19.200f, 18.040f, 17.916f, 14.834f, + 11.451f, 5.535f, 5.743f, 5.537f, 2.474f, -0.640f, -1.959f, -3.603f, -3.663f, + -3.122f, -2.337f, -2.318f, -2.734f, -2.671f, -2.633f, -2.698f, -2.480f, -2.203f, + -1.459f, -0.245f, 2.140f, 4.474f, 4.527f, 4.393f, 2.771f, 4.303f, 5.898f, + 4.045f, 3.854f, 4.111f, -0.131f, -5.005f, -6.197f, -7.124f, -8.115f, -8.328f, + -9.057f, -9.112f, -8.244f, -9.230f, -9.562f, -12.152f, -16.348f, -18.501f, -18.860f, + -20.533f, -21.769f, -22.124f, -22.878f, -23.737f, -24.189f, -23.806f, -23.941f, -24.958f, + -25.693f, -26.828f, -28.634f, -30.567f, -32.293f, -36.260f, -38.493f, -40.314f, -42.047f, + -42.403f, -42.806f, -42.547f, -42.499f, -41.398f, -40.544f, -38.256f, -37.762f, -36.087f, + -35.396f, -34.331f, -32.982f, -31.264f, -30.634f, -28.820f, -27.700f, -26.168f, -24.327f, + -22.898f, -21.004f, -19.342f, -17.633f, -15.731f, -14.074f, -12.089f, -9.715f, -7.512f, + -5.421f, -3.706f, -2.034f, -0.374f, 1.179f, 3.419f, 5.205f, 13.012f, 15.565f, + 17.046f, 17.574f, 17.416f, 20.574f, 23.794f, 24.159f, 23.632f, 22.247f, 22.806f, + 23.644f, 25.065f, 25.718f, 26.526f, 26.942f, 27.951f, 28.522f, 29.294f, 31.305f, + 32.328f, 32.519f, 32.779f, 33.877f, 33.422f, 31.841f, 28.667f, 29.860f, 32.108f, + 34.932f, 34.082f, 32.760f, 31.651f, 31.171f, 30.564f, 30.640f, 29.038f, 27.971f, + 24.682f, 19.333f, 21.627f, 24.639f, 20.796f, 20.801f, 20.118f, 18.153f, 15.624f, + 13.606f }, + { -29.534f, -28.256f, -26.642f, -26.259f, -26.133f, -25.045f, -23.088f, -20.574f, -23.078f, + -23.987f, -19.045f, -16.662f, -15.058f, -14.084f, -11.018f, -8.156f, -4.579f, -1.359f, + -0.807f, -1.197f, 0.590f, 4.418f, 7.168f, 8.956f, 11.037f, 13.241f, 16.300f, + 19.093f, 20.293f, 20.826f, 19.266f, 20.206f, 19.210f, 18.121f, 17.901f, 15.591f, + 10.900f, 3.606f, 5.572f, 5.797f, 2.227f, -0.702f, -2.308f, -3.900f, -4.122f, + -3.331f, -2.559f, -2.622f, -2.987f, -3.313f, -3.549f, -3.538f, -3.384f, -3.283f, + -3.391f, -3.058f, -1.129f, -0.291f, -0.997f, 0.928f, 3.222f, 1.999f, 1.615f, + 0.776f, 2.013f, 1.577f, -1.021f, -4.808f, -6.506f, -7.122f, -8.053f, -10.772f, + -13.258f, -11.781f, -10.629f, -11.526f, -10.635f, -11.741f, -14.045f, -17.111f, -19.403f, + -22.076f, -23.277f, -22.811f, -23.608f, -24.569f, -25.425f, -24.954f, -24.536f, -25.035f, + -26.783f, -28.145f, -29.402f, -29.285f, -29.491f, -35.000f, -38.238f, -40.251f, -41.526f, + -41.158f, -41.154f, -41.139f, -41.012f, -39.660f, -38.226f, -35.567f, -34.479f, -33.613f, + -32.651f, -31.682f, -30.161f, -28.592f, -27.278f, -25.763f, -24.512f, -22.480f, -20.921f, + -19.331f, -17.529f, -15.720f, -13.944f, -12.196f, -10.294f, -8.541f, -6.086f, -4.212f, + -2.944f, -0.882f, 0.906f, 2.495f, 4.479f, 6.530f, 9.463f, 16.154f, 16.939f, + 19.469f, 20.133f, 20.523f, 25.154f, 22.200f, 22.967f, 24.226f, 23.558f, 25.362f, + 26.754f, 27.942f, 28.379f, 29.298f, 29.659f, 30.561f, 30.422f, 30.952f, 33.432f, + 36.870f, 36.246f, 36.792f, 36.234f, 35.818f, 34.233f, 31.371f, 32.384f, 33.988f, + 35.832f, 35.695f, 33.562f, 32.213f, 31.708f, 30.678f, 30.872f, 29.608f, 28.485f, + 25.403f, 19.809f, 21.980f, 24.807f, 20.713f, 20.577f, 20.020f, 18.034f, 15.602f, + 13.606f }, + { -29.534f, -28.250f, -26.617f, -26.304f, -26.375f, -25.296f, -23.058f, -20.838f, -23.040f, + -23.435f, -18.047f, -15.786f, -14.363f, -13.658f, -10.686f, -7.833f, -4.338f, -1.255f, + -1.064f, -0.951f, 0.919f, 4.547f, 7.230f, 8.905f, 11.185f, 14.140f, 16.395f, + 18.806f, 19.547f, 20.854f, 18.024f, 20.431f, 19.629f, 18.685f, 17.670f, 15.851f, + 12.050f, 5.564f, 5.138f, 5.938f, 2.379f, -0.884f, -2.762f, -3.962f, -4.062f, + -3.709f, -2.761f, -2.792f, -3.224f, -3.872f, -4.418f, -4.363f, -3.891f, -4.131f, + -4.522f, -5.039f, -3.419f, -2.653f, -2.668f, -3.127f, 0.819f, 1.266f, 1.238f, + 0.399f, -0.106f, -1.420f, -3.140f, -5.195f, -6.299f, -7.063f, -9.089f, -11.087f, + -13.172f, -12.496f, -12.625f, -13.543f, -14.600f, -15.855f, -15.390f, -15.738f, -18.862f, + -21.278f, -22.955f, -23.608f, -24.334f, -24.843f, -24.685f, -26.061f, -25.205f, -25.323f, + -26.444f, -27.257f, -28.446f, -28.979f, -30.149f, -34.620f, -37.568f, -39.070f, -39.960f, + -39.300f, -39.489f, -39.383f, -38.420f, -36.962f, -35.304f, -32.953f, -32.026f, -31.008f, + -29.837f, -28.639f, -26.902f, -25.580f, -24.024f, -22.280f, -20.846f, -18.932f, -17.083f, + -15.407f, -13.845f, -12.010f, -10.187f, -8.432f, -6.732f, -4.720f, -2.708f, -0.658f, + 0.245f, 2.016f, 3.754f, 5.100f, 6.963f, 9.329f, 11.785f, 17.415f, 17.827f, + 20.909f, 23.713f, 25.060f, 27.226f, 23.321f, 23.476f, 24.693f, 26.311f, 28.283f, + 29.673f, 30.635f, 31.088f, 31.974f, 32.483f, 33.577f, 32.792f, 33.424f, 37.363f, + 41.199f, 39.911f, 40.070f, 39.109f, 38.617f, 36.012f, 33.721f, 34.567f, 35.510f, + 36.671f, 36.683f, 34.117f, 32.760f, 32.038f, 30.772f, 31.209f, 30.266f, 29.014f, + 26.150f, 20.446f, 22.401f, 24.979f, 20.701f, 20.428f, 19.935f, 17.917f, 15.581f, + 13.606f }, + { -29.534f, -28.246f, -26.580f, -26.289f, -26.532f, -25.409f, -22.845f, -21.094f, -23.235f, + -22.893f, -17.339f, -15.041f, -13.997f, -13.152f, -10.213f, -7.564f, -4.204f, -1.453f, + -1.358f, -0.674f, 1.174f, 4.501f, 7.208f, 8.955f, 11.809f, 14.731f, 16.520f, + 18.815f, 20.854f, 23.434f, 18.817f, 20.713f, 20.074f, 18.905f, 17.502f, 15.646f, + 13.723f, 7.760f, 4.432f, 5.397f, 2.244f, -0.927f, -2.886f, -3.938f, -3.716f, + -3.776f, -3.144f, -3.111f, -3.646f, -4.572f, -5.101f, -4.878f, -4.563f, -4.772f, + -5.261f, -5.835f, -4.858f, -4.091f, -3.797f, -5.182f, -3.905f, -3.009f, -1.594f, + -2.679f, -2.465f, -1.567f, -2.466f, -3.986f, -5.118f, -5.575f, -7.870f, -9.134f, + -11.478f, -12.859f, -13.222f, -15.030f, -16.752f, -17.952f, -16.929f, -16.499f, -18.510f, + -20.688f, -23.055f, -24.423f, -25.519f, -26.300f, -26.418f, -26.432f, -24.877f, -25.388f, + -26.060f, -26.085f, -29.960f, -30.764f, -31.201f, -33.904f, -36.179f, -37.537f, -37.385f, + -37.010f, -37.320f, -37.399f, -35.243f, -33.702f, -32.043f, -30.662f, -28.905f, -27.907f, + -26.815f, -25.131f, -23.982f, -22.411f, -20.631f, -18.862f, -17.198f, -15.014f, -13.466f, + -11.646f, -10.086f, -8.078f, -6.433f, -4.579f, -3.179f, -1.095f, 0.755f, 2.147f, + 3.928f, 5.288f, 6.702f, 7.742f, 10.150f, 11.862f, 15.248f, 18.555f, 20.494f, + 23.481f, 26.235f, 27.799f, 28.971f, 26.266f, 26.092f, 27.164f, 29.082f, 31.343f, + 32.320f, 33.849f, 33.897f, 34.025f, 35.043f, 36.324f, 35.964f, 35.925f, 41.538f, + 44.442f, 43.236f, 42.997f, 41.712f, 41.185f, 37.930f, 35.956f, 36.487f, 36.862f, + 37.299f, 36.850f, 34.705f, 33.417f, 32.231f, 31.071f, 31.627f, 30.935f, 29.639f, + 26.916f, 21.285f, 22.867f, 25.144f, 20.757f, 20.356f, 19.868f, 17.805f, 15.560f, + 13.606f }, + { -29.534f, -28.242f, -26.529f, -26.211f, -26.567f, -25.287f, -22.453f, -21.242f, -23.531f, + -22.443f, -17.057f, -14.659f, -14.079f, -12.782f, -9.683f, -7.125f, -4.051f, -1.746f, + -1.504f, -0.601f, 1.415f, 4.354f, 7.010f, 9.087f, 12.062f, 14.344f, 16.733f, + 18.622f, 22.414f, 25.395f, 17.324f, 20.967f, 20.212f, 18.446f, 17.052f, 15.592f, + 14.008f, 6.490f, 4.091f, 5.898f, 2.274f, -0.595f, -2.809f, -3.783f, -3.561f, + -3.634f, -3.351f, -3.574f, -4.462f, -5.411f, -5.787f, -5.376f, -5.141f, -5.317f, + -5.660f, -6.065f, -5.607f, -5.039f, -4.923f, -6.136f, -6.361f, -6.316f, -6.291f, + -7.050f, -5.754f, -3.362f, -3.375f, -2.179f, -2.832f, -5.439f, -8.122f, -9.211f, + -11.608f, -14.624f, -13.887f, -13.644f, -14.055f, -14.031f, -15.588f, -16.208f, -17.214f, + -19.887f, -23.170f, -24.563f, -25.385f, -26.404f, -27.480f, -26.624f, -25.708f, -23.806f, + -24.872f, -26.482f, -31.513f, -30.656f, -31.795f, -32.880f, -34.485f, -35.051f, -34.629f, + -34.909f, -34.948f, -34.770f, -32.030f, -30.653f, -28.993f, -28.057f, -26.637f, -25.342f, + -24.029f, -22.536f, -20.668f, -18.864f, -17.224f, -15.650f, -13.490f, -11.367f, -9.574f, + -8.187f, -6.173f, -4.177f, -2.524f, -0.843f, 0.591f, 2.565f, 4.336f, 5.926f, + 7.351f, 8.545f, 9.396f, 11.124f, 13.491f, 15.579f, 18.091f, 20.451f, 23.436f, + 26.258f, 29.085f, 31.982f, 31.575f, 29.104f, 29.242f, 30.649f, 31.850f, 33.923f, + 35.358f, 36.569f, 36.589f, 36.682f, 37.666f, 37.750f, 39.190f, 37.863f, 45.059f, + 47.180f, 46.319f, 45.749f, 43.608f, 42.885f, 39.923f, 37.855f, 38.034f, 37.981f, + 37.814f, 36.818f, 35.394f, 34.200f, 32.550f, 31.700f, 32.072f, 31.538f, 30.365f, + 27.705f, 22.335f, 23.347f, 25.278f, 20.867f, 20.355f, 19.821f, 17.700f, 15.539f, + 13.606f }, + { -29.534f, -28.239f, -26.464f, -26.071f, -26.452f, -24.869f, -21.918f, -21.204f, -23.710f, + -22.079f, -17.151f, -14.730f, -14.411f, -12.540f, -9.247f, -6.561f, -3.853f, -1.975f, + -1.575f, -0.467f, 1.717f, 4.218f, 6.859f, 9.469f, 12.251f, 13.972f, 16.793f, + 18.772f, 22.803f, 25.916f, 16.085f, 20.824f, 19.862f, 18.565f, 17.132f, 15.725f, + 13.657f, 4.309f, 4.715f, 6.285f, 3.189f, 0.018f, -2.113f, -3.143f, -3.307f, + -3.480f, -3.805f, -4.364f, -5.423f, -6.179f, -6.434f, -6.055f, -5.731f, -5.728f, + -5.983f, -6.282f, -5.989f, -6.105f, -6.230f, -7.895f, -7.315f, -8.015f, -7.855f, + -8.138f, -9.589f, -5.665f, -4.489f, -3.181f, -2.733f, -4.289f, -6.951f, -10.452f, + -12.102f, -14.588f, -14.055f, -12.755f, -12.681f, -12.817f, -15.773f, -17.097f, -16.003f, + -18.909f, -22.621f, -23.825f, -23.819f, -25.313f, -26.465f, -26.553f, -26.351f, -22.262f, + -23.154f, -28.256f, -29.277f, -28.685f, -29.672f, -31.179f, -32.439f, -32.478f, -32.148f, + -32.537f, -32.354f, -30.790f, -29.042f, -27.148f, -25.734f, -25.770f, -25.234f, -24.217f, + -22.639f, -20.673f, -18.396f, -16.451f, -14.359f, -12.354f, -11.376f, -8.325f, -6.148f, + -3.844f, -2.087f, -0.493f, 1.281f, 2.957f, 4.435f, 6.479f, 7.850f, 9.343f, + 10.692f, 11.747f, 12.607f, 13.863f, 16.119f, 18.567f, 20.741f, 22.972f, 25.370f, + 27.854f, 29.490f, 35.015f, 34.888f, 32.864f, 32.376f, 33.501f, 34.146f, 36.334f, + 37.761f, 38.770f, 39.091f, 39.341f, 40.221f, 39.729f, 41.214f, 42.487f, 47.700f, + 49.366f, 48.852f, 47.873f, 45.463f, 44.498f, 41.852f, 39.427f, 39.311f, 38.881f, + 38.556f, 37.228f, 36.046f, 34.965f, 33.166f, 32.558f, 32.517f, 32.070f, 31.126f, + 28.539f, 23.559f, 23.820f, 25.361f, 21.016f, 20.412f, 19.795f, 17.606f, 15.518f, + 13.606f }, + { -29.534f, -28.237f, -26.386f, -25.871f, -26.174f, -24.139f, -21.295f, -20.946f, -23.558f, + -21.715f, -17.443f, -15.161f, -14.750f, -12.341f, -8.932f, -6.121f, -3.784f, -2.347f, + -1.585f, -0.189f, 1.912f, 4.171f, 6.815f, 9.826f, 12.148f, 13.995f, 16.796f, + 18.458f, 22.500f, 25.721f, 15.910f, 19.986f, 19.763f, 18.436f, 17.292f, 15.631f, + 13.487f, 4.101f, 5.010f, 7.583f, 4.527f, 0.678f, -1.333f, -2.557f, -3.547f, + -3.644f, -4.667f, -5.425f, -6.457f, -7.085f, -6.970f, -6.696f, -6.402f, -6.215f, + -6.482f, -6.959f, -6.724f, -6.993f, -7.559f, -8.027f, -7.765f, -8.684f, -10.449f, + -10.558f, -10.922f, -10.188f, -6.162f, -4.054f, -3.886f, -3.804f, -6.280f, -9.680f, + -10.965f, -12.365f, -12.864f, -13.234f, -13.124f, -14.264f, -16.022f, -17.016f, -14.816f, + -17.716f, -21.737f, -23.111f, -22.620f, -23.000f, -23.425f, -23.525f, -22.296f, -22.190f, + -24.792f, -26.740f, -26.675f, -26.888f, -28.177f, -28.554f, -29.603f, -29.952f, -29.795f, + -29.550f, -28.963f, -27.480f, -25.942f, -25.165f, -24.621f, -24.503f, -23.624f, -22.492f, + -20.738f, -19.030f, -17.043f, -14.920f, -12.920f, -10.803f, -8.570f, -6.513f, -3.643f, + -0.821f, 1.698f, 3.637f, 5.132f, 6.747f, 8.366f, 10.168f, 11.341f, 12.749f, + 14.022f, 15.538f, 16.039f, 16.843f, 19.352f, 21.309f, 23.528f, 25.774f, 27.553f, + 29.688f, 30.962f, 35.528f, 35.863f, 35.086f, 35.272f, 36.326f, 36.484f, 38.845f, + 39.977f, 40.858f, 41.317f, 41.512f, 41.647f, 43.277f, 43.654f, 46.079f, 49.067f, + 50.233f, 50.119f, 49.201f, 47.251f, 46.048f, 43.444f, 40.699f, 40.460f, 39.743f, + 39.417f, 38.081f, 36.613f, 35.530f, 33.985f, 33.395f, 32.957f, 32.596f, 31.843f, + 29.441f, 24.887f, 24.279f, 25.379f, 21.191f, 20.513f, 19.790f, 17.524f, 15.499f, + 13.606f }, + { -29.534f, -28.235f, -26.296f, -25.619f, -25.730f, -23.135f, -20.640f, -20.497f, -22.980f, + -21.267f, -17.747f, -15.715f, -14.983f, -12.203f, -8.650f, -5.786f, -3.811f, -2.943f, + -1.617f, 0.016f, 2.130f, 4.151f, 6.749f, 9.797f, 12.000f, 14.297f, 16.533f, + 18.242f, 21.795f, 24.433f, 17.711f, 19.643f, 19.555f, 18.030f, 17.252f, 15.514f, + 14.061f, 5.735f, 5.291f, 8.766f, 6.024f, 1.373f, -1.126f, -2.784f, -4.238f, + -4.375f, -5.360f, -6.311f, -7.216f, -7.620f, -7.428f, -7.097f, -6.828f, -6.732f, + -6.830f, -7.309f, -7.198f, -7.614f, -7.588f, -7.943f, -8.247f, -9.085f, -10.331f, + -10.229f, -10.520f, -11.619f, -7.944f, -5.636f, -4.632f, -5.215f, -9.677f, -11.310f, + -10.541f, -12.227f, -11.957f, -12.789f, -13.133f, -15.671f, -15.690f, -16.479f, -16.776f, + -15.643f, -19.194f, -21.327f, -21.506f, -21.562f, -21.058f, -22.151f, -20.269f, -22.839f, + -24.768f, -24.501f, -24.361f, -24.860f, -25.613f, -26.463f, -27.052f, -27.576f, -27.986f, + -26.185f, -25.612f, -24.752f, -23.678f, -23.741f, -23.085f, -23.140f, -21.856f, -21.033f, + -19.288f, -17.432f, -15.206f, -13.427f, -11.398f, -9.356f, -6.667f, -4.127f, -1.591f, + 0.875f, 3.990f, 6.859f, 8.848f, 10.561f, 12.048f, 13.671f, 14.842f, 16.231f, + 17.691f, 19.182f, 19.725f, 20.456f, 22.523f, 24.360f, 26.287f, 28.560f, 30.173f, + 31.925f, 33.487f, 35.147f, 36.419f, 37.177f, 37.886f, 38.631f, 39.185f, 41.320f, + 42.349f, 43.068f, 43.357f, 43.781f, 43.428f, 45.357f, 45.497f, 45.544f, 46.690f, + 47.998f, 50.219f, 49.146f, 48.111f, 47.075f, 44.766f, 41.927f, 41.720f, 40.710f, + 40.066f, 39.103f, 37.143f, 35.908f, 34.824f, 34.053f, 33.376f, 33.162f, 32.469f, + 30.416f, 26.224f, 24.737f, 25.337f, 21.382f, 20.641f, 19.802f, 17.454f, 15.480f, + 13.606f }, + { -29.534f, -28.234f, -26.195f, -25.322f, -25.139f, -21.944f, -20.002f, -19.934f, -22.060f, + -20.732f, -17.947f, -16.127f, -15.058f, -12.180f, -8.393f, -5.335f, -3.764f, -3.487f, + -1.772f, 0.166f, 2.448f, 4.235f, 6.915f, 9.606f, 11.924f, 14.330f, 16.355f, + 18.364f, 20.763f, 21.074f, 20.167f, 19.319f, 19.329f, 18.021f, 17.373f, 15.882f, + 15.932f, 6.040f, 5.183f, 7.850f, 6.377f, 1.787f, -1.132f, -3.317f, -4.572f, + -4.857f, -5.972f, -6.936f, -7.706f, -7.840f, -7.506f, -7.262f, -7.085f, -7.171f, + -7.222f, -7.619f, -7.601f, -7.633f, -7.381f, -8.092f, -9.116f, -9.217f, -10.772f, + -10.143f, -10.243f, -11.278f, -8.752f, -5.855f, -5.222f, -5.796f, -6.315f, -10.842f, + -10.134f, -11.396f, -10.803f, -10.640f, -13.562f, -12.706f, -13.136f, -15.813f, -16.529f, + -14.491f, -16.170f, -18.431f, -18.954f, -19.274f, -19.115f, -20.369f, -19.035f, -21.751f, + -23.138f, -22.110f, -21.956f, -22.856f, -22.990f, -23.733f, -24.148f, -24.720f, -24.853f, + -22.907f, -22.298f, -22.422f, -22.247f, -22.164f, -21.433f, -21.365f, -20.237f, -19.051f, + -17.666f, -15.631f, -13.767f, -11.951f, -9.744f, -7.756f, -4.935f, -2.132f, 0.724f, + 3.367f, 5.901f, 9.017f, 12.025f, 14.476f, 15.778f, 17.139f, 18.430f, 19.850f, + 21.511f, 22.761f, 23.311f, 23.789f, 25.564f, 27.323f, 29.160f, 31.422f, 32.986f, + 34.126f, 35.322f, 36.091f, 37.454f, 39.425f, 40.031f, 40.794f, 41.686f, 43.523f, + 44.330f, 45.167f, 45.417f, 45.545f, 45.326f, 46.365f, 47.544f, 48.108f, 46.762f, + 45.931f, 48.001f, 47.725f, 47.701f, 47.573f, 46.036f, 43.598f, 43.177f, 41.863f, + 40.741f, 40.118f, 37.567f, 36.314f, 35.664f, 34.597f, 33.746f, 33.737f, 33.002f, + 31.436f, 27.475f, 25.216f, 25.261f, 21.586f, 20.780f, 19.828f, 17.400f, 15.463f, + 13.606f }, + { -29.534f, -28.232f, -26.085f, -24.991f, -24.431f, -20.686f, -19.413f, -19.356f, -21.031f, + -20.206f, -18.002f, -16.239f, -14.918f, -12.210f, -8.239f, -4.777f, -3.735f, -3.833f, + -1.895f, 0.323f, 2.542f, 4.470f, 7.181f, 9.426f, 11.585f, 14.193f, 16.313f, + 17.855f, 18.997f, 18.180f, 21.260f, 19.572f, 19.164f, 18.514f, 17.783f, 16.536f, + 15.852f, 3.919f, 4.965f, 6.514f, 5.719f, 1.502f, -0.714f, -3.382f, -4.773f, + -5.025f, -6.369f, -7.197f, -7.615f, -7.646f, -7.389f, -7.184f, -6.901f, -7.081f, + -7.324f, -7.336f, -7.378f, -7.773f, -8.016f, -8.956f, -9.586f, -9.460f, -11.036f, + -11.012f, -11.067f, -11.777f, -10.339f, -6.358f, -6.042f, -5.981f, -5.628f, -8.638f, + -10.133f, -10.227f, -9.453f, -9.954f, -11.951f, -11.997f, -11.979f, -12.667f, -14.236f, + -13.751f, -12.539f, -14.054f, -14.741f, -15.417f, -14.934f, -15.815f, -16.894f, -19.791f, + -20.176f, -19.889f, -19.803f, -20.553f, -20.610f, -21.127f, -21.553f, -21.847f, -21.276f, + -19.591f, -18.702f, -20.224f, -20.464f, -20.216f, -19.952f, -19.168f, -18.158f, -16.967f, + -15.613f, -13.800f, -12.023f, -10.243f, -8.180f, -5.781f, -3.360f, -0.470f, 2.325f, + 5.314f, 8.007f, 11.125f, 14.226f, 17.551f, 19.869f, 20.921f, 22.014f, 23.419f, + 24.754f, 26.302f, 26.951f, 27.013f, 28.817f, 30.362f, 32.166f, 34.003f, 35.070f, + 37.195f, 37.736f, 38.285f, 39.735f, 41.483f, 42.206f, 42.989f, 44.583f, 45.434f, + 46.533f, 47.361f, 47.494f, 47.220f, 47.107f, 47.392f, 48.009f, 48.978f, 49.703f, + 47.648f, 45.436f, 45.461f, 47.545f, 47.887f, 47.008f, 45.263f, 44.430f, 43.282f, + 41.832f, 40.972f, 37.820f, 36.883f, 36.587f, 35.198f, 34.074f, 34.233f, 33.461f, + 32.430f, 28.568f, 25.738f, 25.188f, 21.806f, 20.918f, 19.865f, 17.359f, 15.446f, + 13.606f }, + { -29.534f, -28.231f, -25.968f, -24.638f, -23.650f, -19.492f, -18.894f, -18.847f, -20.172f, + -19.825f, -17.899f, -16.061f, -14.598f, -12.184f, -8.151f, -4.303f, -3.845f, -4.147f, + -1.838f, 0.396f, 2.515f, 4.598f, 7.223f, 9.251f, 11.502f, 14.226f, 15.987f, + 18.142f, 18.648f, 19.510f, 21.863f, 20.077f, 19.511f, 19.041f, 18.321f, 16.306f, + 15.305f, 2.789f, 5.806f, 6.041f, 3.419f, 1.319f, -0.322f, -2.764f, -4.185f, + -4.836f, -6.251f, -6.906f, -7.162f, -7.103f, -6.836f, -6.638f, -6.668f, -6.872f, + -6.883f, -7.169f, -7.429f, -7.553f, -7.481f, -8.041f, -8.687f, -8.639f, -10.767f, + -11.527f, -10.884f, -11.301f, -11.585f, -10.598f, -7.652f, -7.925f, -6.679f, -7.658f, + -9.021f, -9.264f, -9.472f, -10.895f, -10.269f, -10.850f, -11.571f, -11.758f, -11.872f, + -12.139f, -11.072f, -11.337f, -11.843f, -12.337f, -13.172f, -13.081f, -15.757f, -17.866f, + -18.568f, -17.689f, -17.400f, -17.940f, -18.087f, -18.399f, -18.855f, -18.837f, -18.378f, + -16.404f, -16.334f, -18.448f, -18.871f, -18.334f, -17.680f, -16.927f, -15.901f, -14.950f, + -13.661f, -11.992f, -10.238f, -8.247f, -6.250f, -4.167f, -1.506f, 1.126f, 3.841f, + 6.802f, 9.742f, 12.997f, 16.299f, 19.552f, 22.836f, 25.129f, 25.762f, 26.727f, + 27.918f, 29.197f, 30.501f, 30.367f, 32.340f, 33.583f, 35.028f, 36.619f, 37.692f, + 39.194f, 40.294f, 41.208f, 42.073f, 43.430f, 44.505f, 45.410f, 47.059f, 47.417f, + 48.843f, 49.575f, 49.456f, 48.909f, 48.768f, 48.694f, 48.765f, 48.657f, 49.850f, + 49.628f, 46.650f, 44.363f, 48.339f, 48.558f, 47.891f, 46.528f, 45.572f, 44.846f, + 43.093f, 41.642f, 38.090f, 37.476f, 37.543f, 35.921f, 34.423f, 34.597f, 33.872f, + 33.305f, 29.464f, 26.308f, 25.160f, 22.048f, 21.045f, 19.908f, 17.334f, 15.431f, + 13.606f }, + { -29.534f, -28.230f, -25.845f, -24.275f, -22.844f, -18.485f, -18.454f, -18.448f, -19.664f, + -19.669f, -17.645f, -15.731f, -14.269f, -12.122f, -7.987f, -3.930f, -3.873f, -4.466f, + -1.717f, 0.453f, 2.681f, 4.545f, 7.195f, 9.058f, 11.637f, 14.175f, 15.702f, + 18.410f, 19.246f, 19.971f, 21.183f, 20.511f, 19.907f, 19.617f, 18.527f, 16.529f, + 17.216f, 2.903f, 6.682f, 6.271f, 2.807f, 1.338f, -0.212f, -2.471f, -3.726f, + -4.423f, -5.700f, -6.309f, -6.400f, -6.181f, -6.027f, -6.324f, -6.548f, -6.578f, + -6.749f, -7.026f, -7.092f, -7.100f, -7.131f, -7.055f, -7.201f, -7.660f, -9.863f, + -9.465f, -10.984f, -10.525f, -10.548f, -10.804f, -10.395f, -11.423f, -10.129f, -6.615f, + -7.560f, -8.280f, -8.477f, -8.423f, -9.221f, -11.125f, -11.783f, -13.412f, -12.348f, + -10.895f, -9.917f, -10.472f, -10.619f, -9.647f, -9.543f, -10.781f, -15.850f, -16.009f, + -16.488f, -15.287f, -15.162f, -15.244f, -15.295f, -15.694f, -16.320f, -15.951f, -14.832f, + -14.455f, -14.683f, -16.719f, -16.774f, -16.577f, -15.787f, -14.748f, -13.598f, -12.730f, + -11.566f, -10.011f, -8.318f, -6.403f, -4.261f, -2.268f, 0.147f, 3.027f, 5.792f, + 8.409f, 11.434f, 14.855f, 18.289f, 21.613f, 24.601f, 28.048f, 29.324f, 30.407f, + 31.211f, 32.518f, 33.541f, 33.324f, 35.134f, 36.708f, 38.450f, 39.837f, 40.445f, + 41.680f, 42.328f, 43.604f, 44.086f, 45.235f, 47.054f, 47.770f, 48.685f, 49.661f, + 51.146f, 51.821f, 51.504f, 50.971f, 50.542f, 50.078f, 49.599f, 49.709f, 50.119f, + 50.213f, 49.921f, 45.926f, 48.629f, 50.070f, 49.302f, 48.016f, 47.015f, 46.268f, + 44.266f, 42.400f, 38.684f, 37.907f, 38.378f, 36.709f, 34.868f, 34.869f, 34.268f, + 33.973f, 30.162f, 26.910f, 25.207f, 22.317f, 21.159f, 19.952f, 17.323f, 15.418f, + 13.606f }, + { -29.534f, -28.229f, -25.719f, -23.915f, -22.063f, -17.754f, -18.104f, -18.148f, -19.507f, + -19.699f, -17.302f, -15.377f, -14.040f, -12.133f, -7.748f, -3.549f, -3.643f, -4.612f, + -1.621f, 0.616f, 2.756f, 4.566f, 7.163f, 8.888f, 11.545f, 14.144f, 15.622f, + 17.722f, 19.987f, 21.164f, 20.366f, 20.392f, 19.879f, 19.620f, 18.887f, 18.919f, + 18.483f, 5.384f, 7.988f, 6.523f, 3.260f, 1.822f, 0.164f, -2.262f, -3.252f, + -3.967f, -5.272f, -5.506f, -5.289f, -5.212f, -5.186f, -5.862f, -6.049f, -6.119f, + -6.336f, -6.335f, -5.957f, -6.444f, -6.376f, -5.405f, -6.046f, -7.942f, -8.956f, + -9.158f, -9.815f, -9.235f, -9.655f, -9.718f, -10.023f, -8.858f, -7.230f, -7.677f, + -5.901f, -12.013f, -9.334f, -13.252f, -11.657f, -11.104f, -10.659f, -11.568f, -10.583f, + -9.383f, -7.931f, -8.630f, -7.548f, -8.010f, -8.477f, -11.023f, -12.906f, -14.071f, + -14.357f, -12.824f, -12.692f, -12.391f, -12.563f, -12.835f, -13.094f, -12.758f, -12.050f, + -12.329f, -12.718f, -14.868f, -14.779f, -14.778f, -13.805f, -12.660f, -11.252f, -10.073f, + -9.299f, -7.795f, -6.237f, -4.239f, -2.252f, -0.524f, 1.672f, 4.687f, 7.447f, + 10.166f, 13.253f, 16.392f, 20.196f, 23.534f, 26.713f, 29.889f, 32.453f, 33.752f, + 34.466f, 35.521f, 36.535f, 36.381f, 38.105f, 39.716f, 41.618f, 42.698f, 43.511f, + 44.206f, 44.815f, 45.575f, 46.325f, 47.304f, 49.277f, 50.036f, 50.473f, 51.399f, + 53.401f, 53.988f, 53.801f, 53.029f, 52.439f, 51.534f, 50.807f, 50.758f, 50.909f, + 50.849f, 52.085f, 48.357f, 49.125f, 52.646f, 51.305f, 49.707f, 48.372f, 47.498f, + 45.642f, 43.491f, 39.708f, 38.291f, 39.062f, 37.528f, 35.422f, 35.139f, 34.700f, + 34.385f, 30.688f, 27.512f, 25.341f, 22.611f, 21.257f, 19.994f, 17.327f, 15.406f, + 13.606f }, + { -29.534f, -28.227f, -25.594f, -23.569f, -21.349f, -17.342f, -17.852f, -17.906f, -19.530f, + -19.779f, -17.026f, -15.045f, -13.694f, -12.171f, -7.617f, -3.166f, -3.335f, -4.541f, + -1.496f, 0.763f, 2.590f, 4.650f, 7.128f, 8.721f, 11.168f, 13.961f, 15.437f, + 17.259f, 20.194f, 21.556f, 20.622f, 20.806f, 20.235f, 20.210f, 19.219f, 21.351f, + 18.282f, 9.784f, 10.296f, 7.437f, 3.954f, 2.662f, 0.756f, -1.823f, -2.740f, + -3.346f, -4.413f, -4.503f, -4.334f, -4.339f, -4.393f, -4.858f, -5.096f, -5.311f, + -5.462f, -5.167f, -5.232f, -5.144f, -4.558f, -3.737f, -4.056f, -6.179f, -6.953f, + -7.912f, -8.647f, -8.593f, -9.200f, -9.479f, -9.643f, -9.817f, -8.906f, -10.926f, + -10.773f, -10.103f, -13.978f, -13.717f, -12.888f, -12.317f, -12.320f, -10.316f, -9.060f, + -7.585f, -6.313f, -6.081f, -6.511f, -7.169f, -9.459f, -10.790f, -12.360f, -12.135f, + -12.448f, -10.507f, -9.909f, -9.544f, -9.676f, -9.846f, -9.894f, -9.525f, -9.796f, + -10.221f, -11.022f, -12.556f, -12.841f, -12.883f, -11.493f, -10.239f, -8.370f, -7.024f, + -6.354f, -5.172f, -3.668f, -1.822f, 0.030f, 1.643f, 3.341f, 6.194f, 9.295f, + 12.007f, 14.928f, 18.269f, 21.882f, 25.062f, 28.350f, 31.653f, 35.103f, 36.892f, + 37.694f, 38.422f, 39.135f, 39.186f, 40.819f, 42.171f, 43.978f, 45.005f, 45.905f, + 46.337f, 46.909f, 47.662f, 48.865f, 49.555f, 51.136f, 51.791f, 52.309f, 53.627f, + 55.395f, 56.048f, 55.906f, 55.312f, 54.377f, 53.246f, 52.332f, 52.192f, 51.711f, + 51.522f, 53.348f, 51.239f, 51.005f, 55.134f, 53.646f, 51.354f, 49.691f, 48.625f, + 47.098f, 44.851f, 41.043f, 38.966f, 39.748f, 38.406f, 36.017f, 35.469f, 35.219f, + 34.548f, 31.083f, 28.075f, 25.553f, 22.925f, 21.342f, 20.031f, 17.342f, 15.395f, + 13.606f }, + { -29.534f, -28.225f, -25.471f, -23.246f, -20.737f, -17.241f, -17.711f, -17.679f, -19.484f, + -19.748f, -17.024f, -14.737f, -12.824f, -12.017f, -7.661f, -2.837f, -2.993f, -4.327f, + -1.360f, 0.762f, 2.472f, 4.515f, 7.138f, 8.590f, 10.988f, 13.595f, 15.121f, + 17.305f, 20.430f, 20.650f, 21.848f, 21.428f, 21.005f, 20.509f, 19.407f, 22.755f, + 16.624f, 11.034f, 10.728f, 7.589f, 5.227f, 3.099f, 1.515f, -1.077f, -2.112f, + -2.787f, -3.165f, -3.334f, -3.234f, -3.358f, -3.173f, -3.794f, -4.114f, -4.195f, + -4.140f, -4.046f, -3.885f, -3.159f, -1.846f, -0.704f, -1.330f, -4.440f, -5.533f, + -6.635f, -7.286f, -7.718f, -8.565f, -8.506f, -9.523f, -8.103f, -7.185f, -9.321f, + -6.678f, -9.905f, -11.315f, -11.942f, -12.471f, -12.528f, -12.517f, -10.401f, -9.376f, + -7.078f, -5.317f, -3.997f, -5.013f, -6.318f, -7.717f, -10.049f, -11.360f, -9.598f, + -10.476f, -8.149f, -7.738f, -6.815f, -6.819f, -6.820f, -6.789f, -6.945f, -7.390f, + -8.066f, -9.051f, -10.509f, -10.870f, -10.790f, -9.170f, -7.842f, -5.400f, -4.091f, + -3.391f, -2.279f, -1.007f, 1.078f, 2.719f, 3.894f, 5.320f, 7.802f, 10.776f, + 13.716f, 16.766f, 20.100f, 23.403f, 26.747f, 29.897f, 33.020f, 36.400f, 39.180f, + 40.912f, 41.722f, 41.791f, 42.519f, 43.432f, 44.616f, 46.041f, 47.290f, 48.403f, + 48.990f, 49.280f, 50.016f, 50.724f, 51.613f, 52.775f, 53.298f, 53.935f, 56.086f, + 57.894f, 58.232f, 58.254f, 57.264f, 56.270f, 55.244f, 54.099f, 53.335f, 52.781f, + 52.240f, 53.724f, 54.430f, 53.028f, 56.307f, 55.771f, 53.358f, 51.632f, 49.681f, + 48.021f, 46.257f, 42.414f, 40.012f, 40.532f, 39.338f, 36.587f, 35.841f, 35.841f, + 34.530f, 31.383f, 28.566f, 25.813f, 23.243f, 21.416f, 20.060f, 17.370f, 15.386f, + 13.606f }, + { -29.534f, -28.222f, -25.352f, -22.955f, -20.245f, -17.398f, -17.688f, -17.454f, -19.186f, + -19.497f, -17.408f, -14.515f, -11.325f, -11.587f, -7.703f, -2.517f, -2.347f, -3.948f, + -1.246f, 0.750f, 2.309f, 4.158f, 6.992f, 8.636f, 10.991f, 12.933f, 14.804f, + 17.328f, 19.828f, 21.797f, 22.674f, 21.953f, 21.392f, 20.887f, 20.179f, 21.478f, + 11.834f, 12.219f, 10.475f, 8.091f, 5.664f, 4.138f, 2.371f, 0.075f, -1.307f, + -1.616f, -1.819f, -2.047f, -1.932f, -2.333f, -2.210f, -2.715f, -3.010f, -2.449f, + -2.840f, -2.707f, -2.673f, -1.945f, -0.761f, 1.224f, -0.144f, -3.198f, -4.081f, + -5.287f, -6.019f, -7.178f, -7.912f, -7.885f, -8.704f, -5.676f, -8.310f, -8.307f, + -8.885f, -8.986f, -9.136f, -10.630f, -11.238f, -11.602f, -12.089f, -11.610f, -11.554f, + -7.574f, -5.270f, -4.421f, -5.390f, -6.529f, -8.171f, -8.818f, -9.532f, -7.607f, + -8.434f, -5.794f, -5.174f, -4.166f, -3.948f, -3.873f, -3.881f, -4.060f, -5.430f, + -6.085f, -7.147f, -8.370f, -8.597f, -8.687f, -6.992f, -5.431f, -3.228f, -1.301f, + -0.146f, 0.958f, 2.015f, 3.887f, 5.581f, 6.525f, 7.291f, 9.325f, 11.971f, + 15.309f, 18.620f, 21.771f, 24.831f, 28.041f, 31.437f, 34.447f, 37.790f, 40.821f, + 43.396f, 44.543f, 44.611f, 45.448f, 45.934f, 47.068f, 48.402f, 49.688f, 50.838f, + 50.640f, 51.753f, 52.229f, 52.354f, 53.092f, 54.096f, 54.908f, 55.547f, 57.641f, + 59.369f, 59.741f, 60.099f, 59.512f, 58.174f, 57.125f, 55.812f, 54.796f, 54.032f, + 53.456f, 53.505f, 55.972f, 54.952f, 56.595f, 56.435f, 54.637f, 53.506f, 50.912f, + 48.576f, 47.432f, 43.481f, 41.079f, 41.334f, 40.226f, 37.148f, 36.195f, 36.501f, + 34.436f, 31.610f, 28.970f, 26.081f, 23.547f, 21.483f, 20.079f, 17.407f, 15.378f, + 13.606f }, + { -29.534f, -28.219f, -25.242f, -22.701f, -19.879f, -17.724f, -17.781f, -17.263f, -18.610f, + -19.007f, -18.064f, -14.499f, -9.691f, -11.071f, -7.605f, -2.183f, -1.428f, -3.441f, + -1.110f, 0.846f, 1.962f, 3.758f, 6.662f, 8.664f, 10.616f, 12.480f, 14.657f, + 17.055f, 19.353f, 22.179f, 22.587f, 22.000f, 21.628f, 21.385f, 20.555f, 16.571f, + 11.996f, 13.492f, 12.648f, 9.924f, 6.762f, 4.464f, 3.318f, 1.557f, 0.198f, + -0.149f, -0.475f, -0.783f, -0.647f, -1.119f, -1.106f, -1.257f, -0.903f, -0.850f, + -1.289f, -1.198f, -0.836f, -0.571f, 0.459f, 2.714f, 0.482f, -1.438f, -2.910f, + -4.004f, -5.346f, -6.774f, -7.355f, -7.532f, -7.985f, -5.323f, -7.302f, -7.249f, + -7.851f, -8.361f, -8.428f, -9.414f, -10.020f, -10.185f, -10.590f, -11.186f, -11.432f, + -11.143f, -9.543f, -9.233f, -8.466f, -8.434f, -7.082f, -8.069f, -8.198f, -5.808f, + -6.544f, -3.792f, -2.403f, -1.543f, -1.404f, -1.184f, -0.627f, -1.242f, -3.435f, + -4.362f, -5.200f, -6.313f, -6.394f, -6.046f, -4.584f, -2.954f, -0.501f, 1.614f, + 3.123f, 4.413f, 5.805f, 7.334f, 8.625f, 8.870f, 9.438f, 11.115f, 13.331f, + 16.584f, 20.204f, 23.354f, 26.240f, 29.210f, 32.594f, 35.963f, 39.046f, 42.184f, + 45.627f, 47.267f, 47.801f, 48.604f, 49.030f, 49.739f, 50.653f, 51.736f, 52.806f, + 53.197f, 53.469f, 53.868f, 54.097f, 54.709f, 55.553f, 56.573f, 56.952f, 59.057f, + 59.630f, 60.226f, 60.982f, 60.970f, 60.270f, 58.919f, 57.795f, 56.319f, 55.348f, + 54.622f, 54.034f, 56.018f, 56.866f, 56.764f, 55.750f, 54.443f, 54.539f, 52.165f, + 49.259f, 48.082f, 44.179f, 41.816f, 42.060f, 40.989f, 37.761f, 36.475f, 37.061f, + 34.379f, 31.766f, 29.291f, 26.320f, 23.817f, 21.545f, 20.088f, 17.452f, 15.373f, + 13.606f }, + { -29.534f, -28.216f, -25.141f, -22.486f, -19.629f, -18.116f, -17.971f, -17.166f, -17.899f, + -18.334f, -18.640f, -14.723f, -8.658f, -10.601f, -7.458f, -1.913f, -0.682f, -2.989f, + -0.998f, 0.864f, 1.711f, 3.324f, 6.325f, 8.434f, 10.190f, 12.507f, 14.513f, + 16.807f, 19.627f, 22.280f, 23.194f, 22.759f, 22.356f, 21.961f, 21.105f, 10.845f, + 13.206f, 15.315f, 15.023f, 9.944f, 7.518f, 5.593f, 4.445f, 2.935f, 1.838f, + 1.399f, 0.984f, 0.888f, 0.661f, 0.267f, 0.094f, 0.558f, 0.619f, 0.515f, + 0.652f, 0.485f, 0.712f, 0.974f, 1.279f, 2.862f, 0.502f, 0.141f, -1.610f, + -3.320f, -4.689f, -6.069f, -6.780f, -7.332f, -7.165f, -6.386f, -5.884f, -6.043f, + -6.980f, -7.628f, -8.129f, -8.272f, -8.534f, -8.771f, -9.395f, -10.640f, -11.217f, + -11.050f, -10.685f, -9.523f, -7.986f, -8.002f, -5.955f, -6.592f, -7.083f, -4.245f, + -3.870f, -1.163f, 0.184f, 1.112f, 1.550f, 2.199f, 1.996f, 0.927f, -1.747f, + -2.607f, -3.242f, -4.212f, -4.035f, -3.415f, -2.034f, -0.259f, 2.550f, 4.713f, + 6.383f, 7.950f, 9.345f, 10.593f, 11.419f, 11.280f, 11.472f, 12.833f, 15.357f, + 18.269f, 21.489f, 24.799f, 27.620f, 30.320f, 33.531f, 37.091f, 40.243f, 43.071f, + 46.545f, 49.432f, 50.549f, 51.568f, 52.340f, 52.676f, 53.313f, 53.975f, 54.584f, + 55.129f, 55.461f, 55.682f, 56.047f, 56.190f, 57.255f, 58.064f, 58.304f, 59.484f, + 59.928f, 60.193f, 61.036f, 61.767f, 61.842f, 60.832f, 59.594f, 58.308f, 56.727f, + 55.710f, 55.143f, 55.682f, 57.679f, 57.100f, 55.820f, 55.191f, 55.437f, 52.676f, + 49.823f, 48.329f, 44.896f, 42.300f, 42.804f, 41.659f, 38.408f, 36.650f, 37.369f, + 34.437f, 31.842f, 29.545f, 26.503f, 24.041f, 21.603f, 20.088f, 17.504f, 15.368f, + 13.606f }, + { -29.534f, -28.212f, -25.051f, -22.310f, -19.476f, -18.474f, -18.220f, -17.221f, -17.284f, + -17.577f, -18.736f, -14.999f, -8.512f, -9.921f, -7.359f, -1.746f, -0.338f, -2.686f, + -1.012f, 0.678f, 1.618f, 2.908f, 5.960f, 8.130f, 9.904f, 12.065f, 14.504f, + 16.888f, 19.365f, 22.479f, 23.736f, 23.226f, 22.828f, 22.608f, 21.341f, 11.667f, + 13.232f, 15.231f, 14.553f, 10.862f, 8.708f, 6.310f, 5.834f, 4.405f, 3.274f, + 2.922f, 2.890f, 3.208f, 2.648f, 2.131f, 2.123f, 2.473f, 2.369f, 2.450f, + 1.975f, 1.726f, 2.822f, 1.792f, 2.282f, 2.376f, 1.473f, 0.748f, -0.988f, + -2.849f, -4.191f, -5.744f, -6.399f, -6.520f, -6.425f, -4.877f, -5.366f, -5.488f, + -6.378f, -7.022f, -7.578f, -7.665f, -7.866f, -8.154f, -8.662f, -10.159f, -10.796f, + -10.927f, -10.633f, -9.481f, -8.100f, -7.247f, -5.839f, -5.631f, -5.986f, -2.454f, + -1.791f, 1.228f, 2.652f, 3.596f, 3.737f, 3.774f, 3.651f, 2.818f, -0.182f, + -0.522f, -1.173f, -2.063f, -1.671f, -0.776f, 0.371f, 2.564f, 5.191f, 7.614f, + 9.477f, 11.030f, 12.630f, 13.652f, 13.783f, 13.455f, 13.608f, 14.587f, 16.625f, + 20.028f, 23.213f, 26.258f, 28.932f, 31.537f, 34.520f, 37.978f, 40.677f, 43.970f, + 47.043f, 50.505f, 52.835f, 53.832f, 54.938f, 55.452f, 55.873f, 56.482f, 57.150f, + 57.479f, 57.377f, 57.475f, 57.962f, 58.070f, 59.141f, 59.386f, 59.504f, 59.819f, + 60.137f, 60.420f, 61.188f, 61.937f, 62.732f, 62.465f, 61.204f, 59.914f, 58.614f, + 57.190f, 56.232f, 56.101f, 58.018f, 57.396f, 56.915f, 57.468f, 56.384f, 52.908f, + 50.248f, 48.683f, 45.908f, 42.878f, 43.732f, 42.271f, 38.917f, 36.684f, 37.338f, + 34.620f, 31.828f, 29.752f, 26.621f, 24.211f, 21.656f, 20.079f, 17.561f, 15.365f, + 13.606f }, + { -29.534f, -28.207f, -24.975f, -22.173f, -19.394f, -18.722f, -18.477f, -17.442f, -16.951f, + -16.842f, -18.165f, -14.975f, -8.841f, -8.672f, -7.206f, -1.680f, -0.296f, -2.464f, + -1.097f, 0.509f, 1.509f, 2.647f, 5.589f, 7.973f, 9.607f, 11.634f, 14.454f, + 16.772f, 19.682f, 22.257f, 23.707f, 23.766f, 23.638f, 23.095f, 21.464f, 10.284f, + 13.444f, 15.943f, 15.166f, 11.720f, 10.012f, 6.795f, 7.171f, 5.809f, 5.050f, + 4.820f, 4.960f, 5.118f, 4.717f, 4.170f, 4.172f, 4.174f, 4.161f, 4.107f, + 3.782f, 4.927f, 2.911f, 3.435f, 3.121f, 2.804f, 2.635f, 2.463f, -0.182f, + -2.357f, -4.093f, -5.574f, -6.235f, -6.383f, -6.064f, -6.007f, -5.710f, -5.402f, + -5.933f, -6.677f, -7.199f, -7.059f, -7.349f, -8.220f, -9.210f, -9.815f, -10.184f, + -10.369f, -10.515f, -9.213f, -7.653f, -6.326f, -5.535f, -4.757f, -4.480f, -0.562f, + 0.420f, 3.559f, 5.127f, 5.364f, 5.157f, 5.508f, 5.163f, 4.448f, 2.087f, + 1.175f, 0.903f, 0.078f, 0.763f, 1.761f, 3.053f, 5.371f, 7.711f, 10.333f, + 12.186f, 13.622f, 15.290f, 15.998f, 15.486f, 15.080f, 15.774f, 16.805f, 18.522f, + 21.354f, 24.779f, 27.382f, 29.877f, 32.474f, 35.583f, 38.520f, 41.410f, 44.507f, + 47.837f, 50.550f, 54.083f, 55.925f, 56.869f, 57.634f, 58.067f, 58.598f, 59.206f, + 59.525f, 59.505f, 59.797f, 59.940f, 60.228f, 60.574f, 61.040f, 61.078f, 59.990f, + 60.021f, 60.357f, 60.872f, 61.903f, 63.030f, 63.331f, 62.788f, 61.512f, 60.290f, + 58.946f, 57.613f, 57.526f, 58.964f, 57.683f, 57.766f, 58.676f, 56.922f, 53.985f, + 50.900f, 49.073f, 46.851f, 43.743f, 44.857f, 42.734f, 39.058f, 36.512f, 36.987f, + 34.856f, 31.717f, 29.920f, 26.679f, 24.332f, 21.705f, 20.063f, 17.621f, 15.364f, + 13.606f }, + { -29.534f, -28.202f, -24.914f, -22.069f, -19.352f, -18.816f, -18.689f, -17.780f, -16.946f, + -16.230f, -17.094f, -14.394f, -9.003f, -6.976f, -6.888f, -1.771f, -0.537f, -2.279f, + -1.113f, 0.499f, 1.447f, 2.511f, 5.375f, 7.829f, 9.320f, 11.534f, 14.010f, + 16.679f, 19.385f, 22.198f, 23.544f, 24.102f, 23.655f, 23.105f, 21.300f, 8.469f, + 14.057f, 16.015f, 15.542f, 12.170f, 11.097f, 7.527f, 8.452f, 7.392f, 7.034f, + 6.801f, 6.881f, 6.844f, 6.358f, 6.184f, 6.314f, 6.414f, 6.415f, 5.950f, + 5.557f, 6.571f, 4.745f, 4.277f, 4.181f, 3.992f, 3.488f, 2.176f, -0.161f, + -1.850f, -3.689f, -4.932f, -5.970f, -6.340f, -6.255f, -6.217f, -6.023f, -5.422f, + -5.680f, -6.479f, -6.855f, -7.056f, -7.412f, -8.365f, -9.062f, -9.189f, -9.548f, + -9.618f, -9.222f, -8.404f, -6.944f, -5.169f, -3.943f, -3.733f, -3.527f, 1.257f, + 2.156f, 5.047f, 6.512f, 6.433f, 6.424f, 6.623f, 6.530f, 5.755f, 4.324f, + 2.886f, 2.785f, 2.274f, 3.140f, 4.265f, 5.678f, 7.846f, 10.109f, 12.699f, + 14.432f, 15.426f, 16.998f, 17.444f, 16.715f, 16.259f, 17.135f, 18.479f, 20.440f, + 22.784f, 25.803f, 28.215f, 30.194f, 32.419f, 35.863f, 39.354f, 42.110f, 44.351f, + 48.132f, 50.636f, 55.008f, 57.268f, 58.756f, 59.482f, 60.233f, 60.869f, 60.922f, + 61.268f, 61.434f, 61.625f, 61.732f, 61.735f, 62.429f, 62.212f, 61.442f, 60.108f, + 60.319f, 60.221f, 60.668f, 61.754f, 62.778f, 63.859f, 63.799f, 62.916f, 61.684f, + 60.554f, 59.219f, 58.595f, 59.796f, 58.397f, 58.560f, 59.130f, 57.182f, 54.734f, + 51.123f, 48.809f, 47.217f, 44.749f, 45.970f, 42.917f, 38.732f, 36.057f, 36.412f, + 35.010f, 31.511f, 30.042f, 26.696f, 24.420f, 21.747f, 20.043f, 17.681f, 15.364f, + 13.606f }, + { -29.534f, -28.196f, -24.868f, -21.995f, -19.324f, -18.751f, -18.807f, -18.122f, -17.146f, + -15.815f, -15.957f, -13.318f, -8.767f, -5.449f, -6.473f, -1.991f, -1.016f, -2.090f, + -1.018f, 0.565f, 1.501f, 2.463f, 5.294f, 7.551f, 9.015f, 11.281f, 13.728f, + 16.682f, 19.037f, 21.658f, 23.094f, 23.790f, 24.028f, 22.981f, 20.646f, 6.682f, + 13.599f, 15.558f, 14.870f, 12.874f, 11.171f, 9.400f, 9.978f, 9.086f, 8.890f, + 8.617f, 8.433f, 8.370f, 7.999f, 7.964f, 8.072f, 8.174f, 7.993f, 7.349f, + 7.353f, 6.292f, 6.233f, 5.839f, 5.552f, 5.386f, 4.053f, 2.173f, 0.626f, + -1.361f, -3.114f, -4.598f, -5.681f, -6.211f, -6.356f, -5.586f, -5.751f, -5.694f, + -6.158f, -6.800f, -6.935f, -7.148f, -7.243f, -8.395f, -8.669f, -8.747f, -8.932f, + -8.627f, -8.059f, -7.481f, -6.490f, -4.784f, -3.461f, -2.782f, -2.458f, 3.586f, + 4.282f, 6.159f, 7.473f, 7.578f, 7.820f, 7.942f, 7.872f, 7.059f, 5.860f, + 4.772f, 4.600f, 4.462f, 5.549f, 6.595f, 7.966f, 10.289f, 12.627f, 14.667f, + 16.186f, 16.951f, 17.920f, 17.734f, 17.120f, 16.867f, 17.992f, 19.339f, 21.550f, + 23.367f, 25.558f, 28.123f, 32.966f, 33.784f, 35.551f, 39.539f, 41.940f, 45.341f, + 48.277f, 51.495f, 56.041f, 57.658f, 59.329f, 60.741f, 61.541f, 62.257f, 62.784f, + 63.099f, 63.087f, 62.896f, 63.386f, 63.782f, 63.052f, 63.343f, 61.960f, 60.303f, + 60.739f, 60.473f, 60.719f, 61.349f, 62.698f, 63.684f, 64.373f, 63.958f, 62.918f, + 61.867f, 60.636f, 59.422f, 60.199f, 59.220f, 59.039f, 60.417f, 56.887f, 53.925f, + 50.587f, 48.115f, 47.093f, 45.510f, 46.743f, 42.857f, 38.043f, 35.289f, 35.719f, + 34.936f, 31.220f, 30.098f, 26.691f, 24.495f, 21.784f, 20.020f, 17.742f, 15.365f, + 13.606f }, + { -29.534f, -28.189f, -24.837f, -21.944f, -19.286f, -18.553f, -18.806f, -18.329f, -17.316f, + -15.617f, -15.178f, -12.106f, -8.425f, -4.527f, -6.003f, -2.077f, -1.413f, -1.885f, + -0.903f, 0.747f, 1.619f, 2.548f, 5.196f, 7.261f, 8.829f, 11.003f, 13.350f, + 16.209f, 18.791f, 20.614f, 21.765f, 23.171f, 22.820f, 22.331f, 21.148f, 4.085f, + 13.107f, 15.533f, 14.533f, 13.327f, 12.433f, 11.691f, 11.173f, 10.529f, 10.365f, + 10.250f, 9.989f, 9.767f, 9.738f, 9.524f, 9.582f, 9.661f, 9.468f, 8.929f, + 9.117f, 7.948f, 7.138f, 6.600f, 5.713f, 4.973f, 4.141f, 2.254f, 1.147f, + -0.766f, -2.269f, -3.913f, -5.182f, -5.978f, -6.418f, -6.616f, -6.681f, -6.387f, + -6.755f, -7.160f, -7.187f, -7.254f, -7.173f, -7.923f, -8.066f, -8.063f, -8.213f, + -7.946f, -7.652f, -7.042f, -5.653f, -4.184f, -3.149f, -2.009f, -0.894f, 4.640f, + 6.024f, 7.128f, 8.428f, 8.424f, 8.742f, 8.773f, 9.299f, 8.658f, 7.199f, + 6.768f, 6.499f, 6.556f, 7.771f, 8.846f, 10.456f, 12.830f, 14.989f, 16.368f, + 17.992f, 18.283f, 18.637f, 17.820f, 17.375f, 17.269f, 18.703f, 20.544f, 22.625f, + 24.594f, 25.797f, 27.494f, 32.657f, 32.237f, 37.948f, 38.406f, 42.015f, 45.944f, + 48.502f, 52.014f, 55.495f, 58.478f, 59.197f, 60.604f, 61.472f, 62.382f, 63.833f, + 64.766f, 65.018f, 64.984f, 65.054f, 64.714f, 64.125f, 63.023f, 61.893f, 60.750f, + 60.683f, 60.931f, 60.951f, 61.354f, 62.547f, 63.435f, 64.306f, 64.668f, 64.002f, + 63.030f, 61.847f, 60.867f, 60.641f, 59.864f, 58.873f, 61.196f, 56.232f, 53.539f, + 50.955f, 48.266f, 46.909f, 45.668f, 46.818f, 42.698f, 37.174f, 34.265f, 34.970f, + 34.552f, 30.850f, 30.063f, 26.682f, 24.582f, 21.817f, 19.999f, 17.801f, 15.367f, + 13.606f }, + { -29.534f, -28.182f, -24.822f, -21.912f, -19.223f, -18.274f, -18.682f, -18.281f, -17.221f, + -15.578f, -14.911f, -11.151f, -8.329f, -4.014f, -5.319f, -1.837f, -1.543f, -1.815f, + -0.901f, 1.008f, 1.794f, 2.691f, 5.145f, 7.081f, 8.701f, 10.723f, 12.574f, + 15.858f, 18.518f, 18.765f, 17.788f, 22.404f, 22.382f, 20.494f, 16.545f, 3.092f, + 13.533f, 15.841f, 15.326f, 15.281f, 13.878f, 12.575f, 12.568f, 11.986f, 11.868f, + 11.806f, 11.655f, 11.190f, 11.407f, 11.135f, 11.211f, 11.209f, 10.938f, 10.675f, + 10.394f, 9.259f, 8.555f, 7.409f, 6.681f, 5.527f, 4.646f, 2.646f, 1.711f, + 0.297f, -1.447f, -3.119f, -4.651f, -5.764f, -6.269f, -6.331f, -6.790f, -6.928f, + -7.267f, -7.584f, -7.384f, -7.275f, -6.990f, -7.415f, -7.731f, -7.772f, -7.453f, + -7.163f, -6.940f, -5.715f, -4.672f, -3.219f, -1.930f, -0.806f, 0.783f, 5.741f, + 7.598f, 8.308f, 9.163f, 9.122f, 9.599f, 9.615f, 9.989f, 10.111f, 8.734f, + 8.395f, 8.442f, 8.551f, 9.885f, 11.206f, 12.940f, 15.454f, 17.414f, 18.313f, + 19.697f, 20.001f, 19.913f, 18.741f, 18.034f, 18.295f, 19.505f, 21.126f, 23.578f, + 25.686f, 26.638f, 27.954f, 30.350f, 32.216f, 33.730f, 37.853f, 41.513f, 44.363f, + 48.453f, 52.492f, 55.354f, 58.244f, 59.515f, 60.487f, 61.460f, 62.265f, 63.715f, + 64.687f, 65.709f, 66.012f, 65.604f, 65.092f, 63.924f, 62.959f, 61.638f, 61.259f, + 60.937f, 60.671f, 61.043f, 61.161f, 62.083f, 63.181f, 64.085f, 64.842f, 64.829f, + 63.803f, 63.320f, 62.647f, 61.270f, 60.220f, 59.273f, 60.677f, 56.652f, 54.403f, + 52.854f, 49.461f, 46.877f, 45.318f, 45.919f, 42.341f, 36.197f, 33.114f, 34.184f, + 33.889f, 30.405f, 29.919f, 26.679f, 24.703f, 21.848f, 19.980f, 17.857f, 15.370f, + 13.606f }, + { -29.534f, -28.174f, -24.823f, -21.891f, -19.129f, -17.972f, -18.459f, -17.921f, -16.730f, + -15.570f, -14.989f, -10.645f, -8.457f, -3.479f, -4.343f, -1.495f, -1.568f, -1.961f, + -0.970f, 1.088f, 1.946f, 2.803f, 5.217f, 6.982f, 8.551f, 10.499f, 12.121f, + 15.350f, 18.289f, 16.653f, 12.902f, 19.996f, 19.528f, 16.142f, 4.718f, 8.224f, + 14.756f, 16.028f, 17.691f, 16.386f, 14.971f, 13.524f, 13.999f, 13.650f, 13.270f, + 13.358f, 13.166f, 12.552f, 12.821f, 12.668f, 12.915f, 12.662f, 12.532f, 12.177f, + 11.806f, 11.077f, 9.495f, 8.400f, 7.770f, 6.348f, 4.914f, 3.402f, 2.379f, + 1.333f, -0.495f, -2.194f, -3.904f, -5.200f, -5.955f, -6.219f, -6.690f, -7.171f, + -7.372f, -7.592f, -7.405f, -7.005f, -6.602f, -7.071f, -7.206f, -7.076f, -6.841f, + -6.126f, -5.914f, -4.727f, -3.468f, -1.805f, -0.873f, 0.456f, 2.359f, 5.933f, + 8.608f, 8.974f, 9.665f, 9.929f, 10.461f, 10.809f, 10.880f, 11.537f, 10.201f, + 10.211f, 10.173f, 10.407f, 11.849f, 13.012f, 15.114f, 17.537f, 19.244f, 21.204f, + 21.805f, 22.053f, 21.416f, 20.051f, 19.068f, 19.796f, 20.471f, 21.372f, 24.263f, + 26.009f, 26.818f, 28.609f, 30.592f, 31.672f, 34.069f, 38.103f, 39.503f, 43.168f, + 47.737f, 52.101f, 55.458f, 57.150f, 58.541f, 59.806f, 60.878f, 62.320f, 63.855f, + 64.758f, 65.730f, 65.986f, 65.093f, 64.486f, 63.659f, 62.861f, 61.999f, 61.497f, + 61.030f, 61.041f, 60.871f, 61.132f, 61.698f, 62.648f, 63.681f, 64.648f, 65.107f, + 64.711f, 64.505f, 63.786f, 62.245f, 60.108f, 59.755f, 59.801f, 57.775f, 54.037f, + 54.057f, 50.252f, 47.066f, 45.163f, 44.090f, 41.278f, 35.040f, 31.981f, 33.393f, + 33.092f, 29.881f, 29.669f, 26.680f, 24.868f, 21.882f, 19.967f, 17.909f, 15.375f, + 13.606f }, + { -29.534f, -28.165f, -24.838f, -21.879f, -19.003f, -17.700f, -18.173f, -17.282f, -15.870f, + -15.450f, -15.082f, -10.533f, -8.476f, -2.864f, -3.373f, -1.376f, -1.449f, -2.031f, + -0.916f, 1.033f, 1.990f, 2.905f, 5.249f, 6.886f, 8.431f, 10.321f, 12.259f, + 14.768f, 17.934f, 16.640f, 10.302f, 14.587f, 15.214f, 8.242f, 5.398f, 14.917f, + 17.025f, 17.431f, 17.402f, 17.108f, 15.827f, 14.725f, 15.370f, 14.807f, 14.567f, + 14.984f, 14.723f, 14.156f, 14.409f, 14.195f, 14.421f, 14.198f, 14.025f, 13.473f, + 13.283f, 12.255f, 10.678f, 9.273f, 8.775f, 7.437f, 5.761f, 4.473f, 3.305f, + 2.297f, 0.706f, -1.029f, -2.947f, -4.260f, -5.244f, -5.868f, -6.362f, -7.021f, + -6.968f, -7.121f, -6.668f, -6.225f, -6.021f, -6.371f, -6.161f, -5.991f, -5.939f, + -5.121f, -4.740f, -3.576f, -2.084f, -0.972f, 0.189f, 1.408f, 4.183f, 6.732f, + 10.096f, 9.890f, 10.445f, 10.795f, 11.611f, 12.105f, 12.412f, 12.792f, 11.667f, + 11.839f, 11.388f, 12.265f, 13.575f, 14.448f, 16.543f, 20.440f, 21.213f, 29.185f, + 23.628f, 23.349f, 22.638f, 21.077f, 20.477f, 21.085f, 21.727f, 21.990f, 24.074f, + 26.011f, 26.812f, 28.522f, 30.096f, 30.860f, 33.357f, 37.217f, 38.287f, 42.503f, + 48.161f, 52.320f, 54.788f, 56.443f, 57.636f, 59.109f, 60.387f, 62.174f, 63.635f, + 64.969f, 65.928f, 65.606f, 64.617f, 64.182f, 63.445f, 62.916f, 61.916f, 61.413f, + 61.117f, 61.301f, 61.162f, 61.053f, 61.335f, 62.123f, 63.264f, 64.173f, 65.045f, + 65.390f, 64.819f, 64.343f, 63.207f, 60.535f, 59.200f, 58.973f, 57.764f, 52.664f, + 53.458f, 49.865f, 47.533f, 45.834f, 41.835f, 39.028f, 33.630f, 30.955f, 32.679f, + 32.352f, 29.275f, 29.337f, 26.679f, 25.079f, 21.923f, 19.962f, 17.956f, 15.380f, + 13.606f }, + { -29.534f, -28.156f, -24.865f, -21.870f, -18.853f, -17.496f, -17.862f, -16.471f, -14.805f, + -15.136f, -14.944f, -10.647f, -8.134f, -2.414f, -2.757f, -1.414f, -0.889f, -1.678f, + -0.751f, 1.107f, 1.997f, 3.000f, 5.211f, 6.711f, 8.366f, 10.189f, 12.295f, + 14.297f, 17.673f, 16.811f, 13.338f, 9.420f, 9.604f, 8.660f, 14.807f, 18.347f, + 19.165f, 19.223f, 18.332f, 17.280f, 16.851f, 15.996f, 16.223f, 15.981f, 15.888f, + 16.548f, 16.305f, 15.969f, 16.040f, 15.990f, 15.708f, 15.673f, 15.234f, 14.868f, + 14.315f, 13.675f, 11.532f, 10.756f, 9.865f, 8.402f, 6.873f, 5.428f, 4.356f, + 3.185f, 1.701f, 0.200f, -1.777f, -3.334f, -4.578f, -4.990f, -5.648f, -6.242f, + -6.097f, -6.002f, -5.513f, -5.317f, -5.131f, -5.237f, -4.943f, -4.738f, -4.404f, + -3.656f, -3.727f, -2.327f, -0.658f, 0.108f, 1.350f, 2.332f, 5.317f, 7.485f, + 10.195f, 10.279f, 10.837f, 11.398f, 12.115f, 13.276f, 13.310f, 13.928f, 13.021f, + 13.221f, 12.934f, 13.929f, 14.568f, 15.743f, 17.619f, 24.834f, 22.615f, 25.150f, + 24.693f, 24.396f, 23.430f, 22.376f, 21.842f, 22.365f, 22.980f, 23.348f, 24.585f, + 25.444f, 26.781f, 28.649f, 29.816f, 30.377f, 32.666f, 35.349f, 38.269f, 42.000f, + 46.854f, 49.196f, 53.150f, 54.659f, 56.617f, 58.047f, 59.750f, 61.605f, 63.118f, + 64.413f, 65.414f, 65.160f, 63.650f, 64.026f, 62.968f, 62.965f, 62.264f, 60.816f, + 60.801f, 60.759f, 61.907f, 61.060f, 61.012f, 61.525f, 62.736f, 63.895f, 64.795f, + 65.492f, 65.224f, 65.146f, 63.817f, 61.916f, 58.915f, 58.607f, 56.806f, 53.191f, + 52.770f, 49.360f, 48.041f, 46.974f, 39.898f, 35.842f, 32.065f, 30.052f, 32.153f, + 31.818f, 28.601f, 28.971f, 26.667f, 25.327f, 21.976f, 19.965f, 17.997f, 15.386f, + 13.606f }, + { -29.534f, -28.146f, -24.904f, -21.863f, -18.690f, -17.370f, -17.555f, -15.635f, -13.757f, + -14.653f, -14.548f, -10.828f, -7.510f, -2.147f, -2.364f, -1.306f, -0.056f, -0.923f, + -0.615f, 1.208f, 2.022f, 3.108f, 5.228f, 6.461f, 8.317f, 9.983f, 11.632f, + 13.914f, 16.977f, 16.491f, 18.484f, 14.749f, 14.545f, 16.166f, 18.577f, 20.445f, + 20.940f, 19.398f, 18.774f, 18.041f, 17.869f, 17.491f, 17.519f, 17.421f, 17.332f, + 17.744f, 17.803f, 17.581f, 17.673f, 17.501f, 17.107f, 16.996f, 16.425f, 15.990f, + 15.540f, 14.676f, 12.772f, 11.972f, 11.057f, 9.323f, 7.838f, 6.477f, 5.284f, + 4.089f, 2.631f, 1.187f, -0.709f, -2.201f, -3.488f, -4.124f, -4.755f, -4.913f, + -4.673f, -4.193f, -4.224f, -4.227f, -4.069f, -4.048f, -3.575f, -3.271f, -2.633f, + -2.078f, -1.954f, -0.538f, 0.709f, 1.687f, 2.823f, 3.546f, 5.985f, 8.494f, + 10.181f, 10.879f, 11.235f, 11.978f, 12.993f, 14.436f, 15.237f, 15.451f, 14.984f, + 14.518f, 14.489f, 15.106f, 15.326f, 16.481f, 18.238f, 25.235f, 31.100f, 27.099f, + 25.430f, 25.692f, 24.552f, 23.320f, 23.137f, 23.389f, 23.952f, 24.736f, 25.683f, + 25.873f, 27.156f, 29.227f, 30.501f, 31.642f, 33.036f, 34.742f, 37.623f, 41.249f, + 45.233f, 48.569f, 51.548f, 53.552f, 55.695f, 57.279f, 59.365f, 61.697f, 62.567f, + 63.814f, 64.066f, 64.049f, 62.780f, 63.378f, 62.881f, 63.056f, 61.772f, 60.296f, + 60.067f, 60.030f, 62.766f, 61.051f, 60.970f, 60.947f, 62.116f, 63.291f, 64.377f, + 65.152f, 65.897f, 65.723f, 64.557f, 62.938f, 59.650f, 58.779f, 56.253f, 54.973f, + 52.981f, 49.779f, 48.211f, 47.452f, 38.762f, 32.837f, 30.627f, 29.264f, 31.888f, + 31.525f, 27.901f, 28.626f, 26.634f, 25.590f, 22.044f, 19.978f, 18.032f, 15.392f, + 13.606f }, + { -29.534f, -28.136f, -24.952f, -21.855f, -18.526f, -17.312f, -17.261f, -14.908f, -12.917f, + -14.120f, -14.038f, -10.952f, -6.879f, -1.799f, -1.759f, -1.022f, 0.518f, 0.013f, + -0.397f, 1.206f, 2.054f, 3.300f, 5.269f, 6.352f, 8.060f, 9.820f, 11.238f, + 13.609f, 16.469f, 17.213f, 19.620f, 18.391f, 18.277f, 18.846f, 19.759f, 21.203f, + 20.578f, 19.775f, 19.397f, 18.662f, 18.943f, 18.783f, 18.749f, 18.916f, 18.866f, + 19.226f, 19.102f, 19.203f, 19.070f, 18.928f, 18.685f, 18.152f, 17.824f, 16.749f, + 16.624f, 15.844f, 13.678f, 12.948f, 11.733f, 10.246f, 8.656f, 7.412f, 6.233f, + 4.964f, 3.643f, 2.235f, 0.410f, -1.120f, -2.190f, -3.037f, -3.488f, -3.403f, + -2.612f, -2.340f, -2.855f, -2.932f, -2.740f, -2.730f, -2.186f, -1.446f, -0.783f, + -0.214f, 0.139f, 1.238f, 2.484f, 3.120f, 4.564f, 4.758f, 7.557f, 8.309f, + 10.654f, 11.935f, 11.541f, 12.955f, 14.124f, 15.391f, 15.960f, 17.424f, 16.681f, + 16.124f, 15.738f, 15.673f, 16.485f, 17.499f, 19.028f, 21.321f, 25.145f, 25.238f, + 25.968f, 26.800f, 25.555f, 23.905f, 23.775f, 24.219f, 25.095f, 26.172f, 27.288f, + 27.652f, 28.337f, 30.444f, 31.952f, 33.351f, 34.150f, 35.162f, 37.528f, 40.816f, + 43.523f, 48.556f, 50.543f, 51.920f, 54.169f, 56.437f, 58.362f, 60.799f, 62.591f, + 62.830f, 63.051f, 62.228f, 62.624f, 63.140f, 62.686f, 63.097f, 61.579f, 60.137f, + 60.248f, 60.196f, 62.989f, 61.564f, 60.994f, 60.777f, 61.004f, 62.714f, 64.034f, + 64.895f, 66.313f, 66.007f, 65.173f, 63.265f, 60.598f, 59.004f, 56.840f, 55.864f, + 53.440f, 50.686f, 48.117f, 46.664f, 38.350f, 31.251f, 29.653f, 28.635f, 31.851f, + 31.394f, 27.253f, 28.353f, 26.579f, 25.843f, 22.128f, 20.001f, 18.062f, 15.399f, + 13.606f }, + { -29.534f, -28.125f, -25.006f, -21.847f, -18.373f, -17.292f, -16.975f, -14.373f, -12.370f, + -13.679f, -13.579f, -10.909f, -6.425f, -1.346f, -0.948f, -0.804f, 0.875f, 0.926f, + -0.011f, 1.230f, 2.152f, 3.579f, 5.361f, 6.425f, 7.753f, 9.709f, 11.262f, + 13.122f, 16.363f, 17.788f, 20.225f, 19.713f, 19.530f, 19.641f, 20.061f, 20.263f, + 20.972f, 20.117f, 19.982f, 19.590f, 19.888f, 19.556f, 19.946f, 20.275f, 20.283f, + 20.834f, 20.572f, 20.410f, 20.387f, 20.335f, 19.602f, 19.094f, 18.834f, 17.863f, + 17.600f, 16.456f, 14.662f, 13.656f, 12.546f, 11.001f, 9.441f, 8.249f, 7.128f, + 5.880f, 4.610f, 3.267f, 1.526f, 0.068f, -0.855f, -1.699f, -2.108f, -1.870f, + -1.428f, -1.156f, -1.565f, -1.557f, -1.191f, -1.118f, -0.371f, 0.540f, 1.566f, + 2.313f, 2.057f, 3.297f, 4.038f, 4.860f, 5.753f, 6.266f, 8.368f, 8.751f, + 11.591f, 12.780f, 11.669f, 13.433f, 14.951f, 17.049f, 17.254f, 17.034f, 18.666f, + 18.600f, 15.747f, 16.258f, 17.976f, 18.931f, 20.242f, 21.612f, 23.584f, 25.323f, + 26.681f, 26.683f, 25.350f, 23.981f, 23.943f, 24.912f, 26.525f, 28.063f, 29.296f, + 29.630f, 29.625f, 31.596f, 33.359f, 34.636f, 35.682f, 36.270f, 38.384f, 40.238f, + 42.705f, 48.016f, 50.028f, 50.667f, 53.536f, 56.102f, 57.464f, 59.654f, 60.887f, + 61.769f, 61.468f, 62.106f, 62.563f, 62.688f, 62.770f, 62.174f, 60.856f, 60.287f, + 60.423f, 59.763f, 61.099f, 61.752f, 60.906f, 60.664f, 60.629f, 62.002f, 63.594f, + 64.563f, 66.295f, 66.509f, 65.289f, 63.553f, 61.375f, 59.378f, 58.478f, 56.486f, + 54.112f, 51.183f, 48.186f, 45.233f, 38.217f, 31.438f, 29.351f, 28.283f, 31.910f, + 31.301f, 26.764f, 28.175f, 26.504f, 26.058f, 22.226f, 20.032f, 18.084f, 15.406f, + 13.606f }, + { -29.534f, -28.114f, -25.066f, -21.839f, -18.241f, -17.272f, -16.678f, -14.034f, -12.082f, + -13.402f, -13.233f, -10.646f, -6.110f, -1.166f, -0.501f, -0.728f, 1.514f, 1.694f, + 0.396f, 1.217f, 2.420f, 3.898f, 5.579f, 6.433f, 7.607f, 9.363f, 10.786f, + 12.993f, 15.820f, 18.026f, 20.839f, 20.577f, 19.806f, 19.821f, 20.526f, 20.486f, + 21.032f, 20.866f, 20.419f, 20.203f, 20.422f, 20.504f, 21.041f, 21.499f, 21.532f, + 22.031f, 21.922f, 21.620f, 21.773f, 21.438f, 20.882f, 19.990f, 19.729f, 18.836f, + 18.275f, 17.087f, 15.684f, 14.493f, 13.298f, 11.733f, 10.248f, 8.999f, 7.892f, + 6.858f, 5.574f, 4.276f, 2.677f, 1.465f, 0.515f, -0.281f, -0.627f, -0.167f, + -0.182f, 0.115f, -0.064f, -0.076f, 0.370f, 0.658f, 1.521f, 2.490f, 3.870f, + 4.330f, 4.300f, 5.285f, 5.647f, 6.666f, 7.475f, 8.000f, 9.837f, 10.496f, + 12.605f, 12.554f, 12.141f, 14.657f, 15.681f, 16.841f, 18.446f, 18.485f, 18.677f, + 19.779f, 17.071f, 17.475f, 18.811f, 20.121f, 21.483f, 23.172f, 24.978f, 26.238f, + 26.140f, 26.176f, 25.261f, 23.872f, 24.037f, 25.877f, 28.108f, 30.526f, 32.061f, + 31.485f, 31.414f, 32.408f, 34.150f, 35.678f, 37.935f, 39.592f, 40.163f, 41.028f, + 41.409f, 46.624f, 48.626f, 51.082f, 51.872f, 54.055f, 56.727f, 57.687f, 59.893f, + 60.760f, 60.855f, 61.910f, 62.136f, 62.344f, 61.655f, 61.522f, 60.935f, 60.326f, + 61.042f, 60.830f, 61.092f, 61.331f, 61.393f, 60.282f, 60.658f, 61.386f, 63.098f, + 63.360f, 66.727f, 66.912f, 65.564f, 63.774f, 61.869f, 59.761f, 59.554f, 57.054f, + 55.069f, 51.295f, 48.541f, 44.217f, 37.992f, 32.594f, 29.676f, 28.326f, 31.914f, + 31.170f, 26.544f, 28.088f, 26.421f, 26.214f, 22.333f, 20.071f, 18.100f, 15.413f, + 13.606f }, + { -29.534f, -28.102f, -25.127f, -21.831f, -18.138f, -17.215f, -16.355f, -13.832f, -11.937f, + -13.255f, -12.951f, -10.229f, -5.792f, -1.436f, -0.709f, -0.521f, 2.332f, 2.565f, + 1.018f, 1.118f, 2.867f, 4.234f, 5.825f, 6.499f, 7.331f, 9.083f, 10.516f, + 12.734f, 14.840f, 17.930f, 21.094f, 20.934f, 19.790f, 20.026f, 20.186f, 20.818f, + 21.081f, 21.392f, 21.020f, 20.990f, 21.092f, 21.346f, 22.046f, 22.511f, 22.745f, + 23.112f, 22.980f, 22.737f, 22.710f, 22.171f, 21.838f, 20.814f, 20.454f, 19.741f, + 18.966f, 17.813f, 16.416f, 15.274f, 13.994f, 12.458f, 11.045f, 9.918f, 8.888f, + 7.779f, 6.702f, 5.383f, 4.046f, 2.868f, 1.837f, 1.222f, 0.972f, 1.361f, + 1.611f, 1.952f, 1.513f, 1.448f, 2.013f, 2.352f, 3.156f, 4.323f, 5.306f, + 6.251f, 6.422f, 7.577f, 8.192f, 8.790f, 9.719f, 9.616f, 11.878f, 13.079f, + 12.859f, 12.229f, 12.792f, 14.543f, 15.713f, 17.085f, 17.774f, 18.981f, 19.216f, + 18.796f, 18.852f, 19.080f, 20.003f, 21.409f, 23.553f, 24.752f, 25.823f, 26.619f, + 26.296f, 26.228f, 25.671f, 24.735f, 24.860f, 26.875f, 30.075f, 32.979f, 34.198f, + 33.704f, 33.567f, 33.706f, 34.798f, 37.072f, 39.478f, 43.128f, 41.987f, 42.091f, + 41.516f, 45.844f, 47.906f, 49.476f, 50.885f, 52.127f, 55.149f, 58.340f, 58.045f, + 59.381f, 60.815f, 61.141f, 61.507f, 61.441f, 61.107f, 59.969f, 58.997f, 60.085f, + 60.719f, 61.696f, 61.241f, 60.303f, 61.142f, 60.681f, 60.375f, 60.804f, 62.499f, + 62.976f, 67.146f, 67.182f, 65.816f, 63.806f, 62.236f, 60.002f, 59.039f, 56.532f, + 55.313f, 51.704f, 49.043f, 43.999f, 37.676f, 33.470f, 30.301f, 28.752f, 31.791f, + 31.012f, 26.667f, 28.057f, 26.344f, 26.294f, 22.441f, 20.115f, 18.109f, 15.420f, + 13.606f }, + { -29.534f, -28.090f, -25.189f, -21.825f, -18.065f, -17.095f, -16.002f, -13.675f, -11.802f, + -13.131f, -12.651f, -9.831f, -5.411f, -1.644f, -0.980f, 0.184f, 2.704f, 3.989f, + 2.259f, 1.327f, 3.313f, 4.543f, 6.022f, 6.707f, 7.109f, 8.812f, 10.459f, + 11.946f, 14.316f, 17.459f, 21.035f, 20.876f, 19.482f, 19.884f, 20.199f, 21.078f, + 21.514f, 21.808f, 21.650f, 21.849f, 21.811f, 22.535f, 22.832f, 23.479f, 23.880f, + 23.930f, 23.804f, 23.812f, 23.586f, 23.085f, 22.552f, 21.734f, 21.438f, 20.631f, + 19.614f, 18.151f, 17.174f, 15.901f, 14.604f, 13.255f, 11.852f, 10.784f, 9.738f, + 8.713f, 7.808f, 6.572f, 5.409f, 4.179f, 3.115f, 2.774f, 2.578f, 3.183f, + 3.415f, 3.707f, 3.315f, 3.045f, 3.530f, 4.032f, 4.679f, 5.739f, 6.860f, + 7.854f, 8.312f, 9.479f, 10.125f, 10.677f, 11.290f, 11.319f, 13.057f, 15.272f, + 14.834f, 12.260f, 13.140f, 15.442f, 16.555f, 17.383f, 18.156f, 19.444f, 19.956f, + 20.941f, 20.878f, 19.944f, 21.272f, 22.742f, 25.710f, 27.826f, 27.106f, 27.458f, + 26.472f, 26.035f, 27.676f, 28.140f, 27.131f, 28.549f, 31.167f, 32.962f, 33.727f, + 34.192f, 38.058f, 39.078f, 35.500f, 37.246f, 39.865f, 45.191f, 43.092f, 43.823f, + 42.751f, 45.647f, 48.571f, 49.286f, 51.690f, 51.802f, 54.150f, 57.715f, 58.353f, + 58.540f, 60.480f, 60.298f, 60.661f, 60.294f, 59.654f, 58.738f, 57.938f, 59.632f, + 60.778f, 61.499f, 61.347f, 59.795f, 60.699f, 60.666f, 59.862f, 60.486f, 61.703f, + 63.022f, 66.196f, 67.258f, 65.467f, 63.680f, 62.347f, 60.517f, 58.503f, 55.992f, + 54.463f, 52.524f, 49.708f, 44.258f, 37.615f, 33.415f, 30.765f, 29.373f, 31.581f, + 30.904f, 27.148f, 28.034f, 26.289f, 26.293f, 22.542f, 20.162f, 18.112f, 15.427f, + 13.606f }, + { -29.534f, -28.078f, -25.248f, -21.822f, -18.022f, -16.906f, -15.631f, -13.480f, -11.592f, + -12.931f, -12.299f, -9.598f, -5.035f, -1.103f, -0.451f, 1.505f, 2.660f, 5.692f, + 3.910f, 2.098f, 3.574f, 4.840f, 6.185f, 6.808f, 7.236f, 8.651f, 10.200f, + 11.545f, 13.971f, 16.797f, 20.619f, 21.264f, 19.338f, 20.348f, 20.377f, 21.492f, + 21.848f, 22.488f, 22.411f, 22.630f, 22.595f, 23.430f, 24.067f, 24.590f, 24.890f, + 24.893f, 24.831f, 24.823f, 24.594f, 24.246f, 23.287f, 22.537f, 21.977f, 20.890f, + 19.710f, 18.264f, 17.522f, 16.354f, 15.126f, 13.845f, 12.632f, 11.692f, 10.627f, + 9.681f, 8.942f, 7.814f, 6.688f, 5.402f, 4.474f, 4.177f, 4.206f, 4.839f, + 4.839f, 5.018f, 4.907f, 4.624f, 4.908f, 5.457f, 6.111f, 7.100f, 8.020f, + 9.436f, 9.709f, 10.494f, 11.721f, 12.404f, 12.822f, 13.057f, 14.204f, 16.564f, + 16.515f, 14.631f, 13.664f, 16.253f, 17.113f, 17.956f, 18.815f, 20.199f, 21.273f, + 23.052f, 25.424f, 26.159f, 27.278f, 28.622f, 29.012f, 30.472f, 29.723f, 29.778f, + 28.367f, 28.729f, 31.206f, 31.615f, 32.665f, 33.299f, 33.373f, 31.238f, 30.811f, + 33.272f, 45.418f, 37.064f, 36.659f, 37.905f, 40.612f, 48.065f, 44.249f, 47.459f, + 45.105f, 46.954f, 47.128f, 48.918f, 50.562f, 51.382f, 53.639f, 56.511f, 58.497f, + 58.957f, 58.985f, 59.111f, 59.799f, 58.977f, 58.217f, 57.676f, 57.492f, 59.165f, + 59.713f, 60.204f, 61.978f, 60.402f, 59.591f, 59.858f, 59.714f, 60.074f, 61.009f, + 62.232f, 65.209f, 66.703f, 65.239f, 63.422f, 61.881f, 60.835f, 58.974f, 56.659f, + 53.664f, 52.958f, 50.441f, 44.692f, 38.165f, 32.824f, 30.784f, 29.917f, 31.395f, + 30.907f, 27.922f, 27.970f, 26.271f, 26.214f, 22.626f, 20.209f, 18.109f, 15.434f, + 13.606f }, + { -29.534f, -28.065f, -25.302f, -21.823f, -18.007f, -16.657f, -15.270f, -13.202f, -11.299f, + -12.633f, -11.930f, -9.529f, -4.749f, 0.145f, 0.968f, 3.110f, 2.967f, 6.715f, + 5.521f, 3.278f, 3.752f, 5.136f, 6.291f, 6.968f, 7.373f, 8.654f, 10.084f, + 11.600f, 13.854f, 16.179f, 19.687f, 20.861f, 19.435f, 20.922f, 21.080f, 21.975f, + 22.359f, 22.793f, 22.910f, 23.453f, 23.498f, 24.084f, 24.865f, 25.714f, 25.705f, + 25.890f, 25.688f, 25.358f, 25.136f, 24.502f, 23.883f, 23.257f, 21.896f, 20.657f, + 19.518f, 18.617f, 17.687f, 16.577f, 15.733f, 14.439f, 13.376f, 12.420f, 11.579f, + 10.837f, 9.986f, 9.059f, 7.994f, 6.730f, 6.070f, 5.590f, 5.627f, 6.030f, + 6.132f, 6.251f, 6.187f, 5.987f, 6.263f, 6.836f, 7.388f, 8.410f, 9.223f, + 10.492f, 10.850f, 12.112f, 12.870f, 13.915f, 14.456f, 14.709f, 15.349f, 18.233f, + 18.261f, 16.228f, 14.394f, 16.753f, 17.970f, 18.892f, 19.799f, 21.024f, 22.698f, + 25.141f, 28.759f, 28.193f, 28.217f, 29.796f, 30.199f, 29.379f, 30.052f, 31.613f, + 32.799f, 33.071f, 32.595f, 34.733f, 35.952f, 35.634f, 34.747f, 33.608f, 31.244f, + 31.773f, 44.216f, 36.692f, 38.927f, 38.674f, 40.152f, 45.124f, 45.854f, 48.104f, + 47.277f, 47.169f, 48.163f, 48.385f, 49.433f, 51.086f, 52.735f, 55.561f, 55.745f, + 58.817f, 58.577f, 58.102f, 58.432f, 58.023f, 57.512f, 57.073f, 58.028f, 58.641f, + 58.983f, 58.459f, 61.588f, 59.584f, 59.527f, 58.898f, 59.741f, 59.725f, 60.534f, + 61.279f, 64.681f, 66.280f, 65.252f, 63.186f, 61.392f, 60.478f, 59.433f, 57.349f, + 53.767f, 52.380f, 50.719f, 45.317f, 39.329f, 32.679f, 30.528f, 30.227f, 31.317f, + 31.006f, 28.864f, 27.839f, 26.299f, 26.068f, 22.685f, 20.252f, 18.100f, 15.441f, + 13.606f }, + { -29.534f, -28.053f, -25.350f, -21.829f, -18.014f, -16.377f, -14.954f, -12.854f, -10.978f, + -12.305f, -11.605f, -9.488f, -4.538f, 1.304f, 2.552f, 4.426f, 3.970f, 6.838f, + 6.983f, 4.809f, 4.100f, 5.307f, 6.333f, 7.157f, 7.517f, 8.647f, 10.051f, + 11.241f, 13.521f, 15.896f, 19.164f, 21.320f, 19.371f, 21.067f, 21.330f, 22.332f, + 22.652f, 23.290f, 23.554f, 24.257f, 24.636f, 24.871f, 25.578f, 26.420f, 26.628f, + 26.328f, 25.456f, 25.179f, 24.892f, 24.389f, 23.865f, 23.093f, 21.902f, 20.738f, + 19.550f, 18.684f, 18.129f, 17.284f, 16.215f, 15.028f, 14.181f, 13.186f, 12.431f, + 11.817f, 11.085f, 10.257f, 9.268f, 8.105f, 7.569f, 7.088f, 6.886f, 7.128f, + 7.192f, 7.417f, 7.314f, 7.265f, 7.767f, 8.667f, 8.680f, 9.759f, 10.473f, + 11.764f, 12.114f, 12.854f, 13.981f, 15.013f, 15.841f, 16.153f, 17.002f, 17.821f, + 18.763f, 16.660f, 14.846f, 17.530f, 19.002f, 19.893f, 20.810f, 21.848f, 23.988f, + 28.611f, 30.376f, 28.830f, 29.243f, 30.966f, 30.491f, 30.921f, 31.536f, 32.165f, + 32.356f, 33.895f, 33.633f, 35.801f, 35.765f, 37.562f, 37.243f, 33.970f, 33.609f, + 31.707f, 40.889f, 36.019f, 39.500f, 41.097f, 40.479f, 42.653f, 45.228f, 46.412f, + 48.779f, 50.747f, 48.519f, 49.050f, 48.392f, 49.629f, 51.132f, 53.139f, 54.662f, + 57.225f, 56.714f, 57.026f, 57.263f, 56.926f, 56.608f, 58.999f, 60.508f, 60.171f, + 58.015f, 57.566f, 60.127f, 60.360f, 59.984f, 58.811f, 59.927f, 59.590f, 60.126f, + 60.621f, 64.009f, 65.880f, 64.406f, 62.836f, 60.854f, 60.054f, 59.323f, 57.319f, + 54.251f, 51.273f, 50.195f, 46.125f, 40.665f, 33.675f, 30.568f, 30.356f, 31.348f, + 31.124f, 29.823f, 27.652f, 26.378f, 25.873f, 22.713f, 20.291f, 18.086f, 15.447f, + 13.606f }, + { -29.534f, -28.040f, -25.389f, -21.840f, -18.036f, -16.102f, -14.713f, -12.492f, -10.708f, + -12.043f, -11.356f, -9.344f, -4.316f, 1.754f, 3.710f, 5.269f, 5.178f, 6.900f, + 7.892f, 6.582f, 4.724f, 5.445f, 6.336f, 7.137f, 7.672f, 8.713f, 9.962f, + 10.966f, 13.052f, 15.920f, 18.417f, 20.643f, 18.639f, 21.151f, 21.741f, 22.453f, + 23.144f, 23.881f, 24.294f, 24.828f, 25.468f, 25.819f, 26.217f, 27.401f, 27.008f, + 26.211f, 25.579f, 25.272f, 24.939f, 24.415f, 23.667f, 22.865f, 21.864f, 20.546f, + 19.280f, 18.398f, 17.873f, 17.383f, 16.427f, 15.801f, 15.021f, 13.818f, 13.331f, + 13.033f, 12.291f, 11.541f, 10.964f, 9.528f, 9.108f, 8.394f, 8.246f, 8.159f, + 8.233f, 8.706f, 8.385f, 8.701f, 8.830f, 9.311f, 9.632f, 10.661f, 11.995f, + 13.258f, 14.334f, 14.096f, 15.158f, 16.146f, 17.024f, 17.603f, 18.239f, 18.509f, + 19.316f, 17.207f, 15.959f, 18.058f, 19.347f, 20.253f, 21.666f, 23.057f, 30.599f, + 32.346f, 31.335f, 31.051f, 30.187f, 30.740f, 31.241f, 31.997f, 33.221f, 33.849f, + 34.679f, 35.095f, 33.649f, 35.292f, 35.589f, 37.154f, 39.815f, 37.128f, 35.979f, + 36.074f, 41.228f, 42.236f, 40.616f, 44.012f, 41.659f, 41.054f, 43.224f, 45.747f, + 45.761f, 52.187f, 50.144f, 50.421f, 47.031f, 48.571f, 50.530f, 50.804f, 55.243f, + 55.462f, 55.001f, 56.074f, 56.382f, 55.786f, 56.070f, 60.145f, 60.964f, 61.495f, + 58.021f, 57.153f, 57.624f, 59.600f, 59.558f, 58.248f, 59.581f, 59.457f, 60.326f, + 60.914f, 63.172f, 64.338f, 63.308f, 61.989f, 59.959f, 59.606f, 58.949f, 57.373f, + 54.290f, 50.566f, 49.281f, 46.823f, 41.645f, 35.670f, 31.400f, 30.499f, 31.426f, + 31.193f, 30.661f, 27.448f, 26.502f, 25.646f, 22.708f, 20.321f, 18.068f, 15.453f, + 13.606f }, + { -29.534f, -28.027f, -25.419f, -21.856f, -18.067f, -15.869f, -14.558f, -12.187f, -10.538f, + -11.898f, -11.156f, -9.077f, -4.064f, 1.685f, 4.525f, 6.143f, 6.078f, 7.348f, + 7.943f, 8.267f, 5.565f, 5.810f, 6.294f, 7.182f, 7.709f, 8.595f, 9.770f, + 11.079f, 12.982f, 15.861f, 18.100f, 20.396f, 19.002f, 21.326f, 21.830f, 22.841f, + 23.421f, 24.394f, 24.759f, 25.337f, 26.015f, 26.551f, 27.122f, 27.620f, 26.870f, + 26.068f, 25.747f, 25.161f, 24.778f, 24.258f, 23.223f, 22.691f, 21.642f, 20.583f, + 18.925f, 17.886f, 17.331f, 16.718f, 16.226f, 15.904f, 15.257f, 14.543f, 14.135f, + 13.594f, 12.957f, 12.334f, 11.756f, 11.039f, 10.458f, 9.857f, 9.820f, 9.747f, + 9.529f, 9.240f, 9.159f, 9.539f, 9.333f, 9.458f, 9.865f, 11.874f, 13.254f, + 14.218f, 15.076f, 15.097f, 16.454f, 17.465f, 18.290f, 18.768f, 19.561f, 19.479f, + 19.476f, 17.236f, 17.973f, 19.331f, 20.318f, 21.272f, 22.756f, 26.736f, 32.665f, + 32.068f, 32.780f, 32.285f, 30.297f, 31.018f, 32.188f, 33.193f, 31.784f, 30.446f, + 30.850f, 32.112f, 33.617f, 35.455f, 36.827f, 38.961f, 39.193f, 39.455f, 38.815f, + 38.258f, 39.493f, 42.125f, 44.465f, 44.226f, 42.922f, 42.261f, 41.925f, 47.748f, + 46.101f, 48.142f, 48.123f, 50.916f, 45.930f, 48.003f, 50.154f, 51.824f, 53.070f, + 56.170f, 54.190f, 55.219f, 54.695f, 56.474f, 57.154f, 58.363f, 60.239f, 60.425f, + 58.500f, 56.336f, 56.572f, 56.516f, 57.092f, 56.389f, 58.468f, 59.579f, 60.434f, + 61.582f, 62.669f, 63.069f, 62.915f, 60.339f, 59.364f, 58.906f, 58.517f, 57.582f, + 53.843f, 50.459f, 48.634f, 47.057f, 42.162f, 37.859f, 32.949f, 30.811f, 31.501f, + 31.229f, 31.283f, 27.292f, 26.656f, 25.407f, 22.672f, 20.342f, 18.045f, 15.458f, + 13.606f }, + { -29.534f, -28.014f, -25.438f, -21.876f, -18.100f, -15.706f, -14.480f, -11.996f, -10.469f, + -11.839f, -10.935f, -8.753f, -3.873f, 1.658f, 5.288f, 7.563f, 6.695f, 7.659f, + 8.172f, 9.786f, 6.569f, 6.289f, 6.294f, 7.190f, 7.825f, 8.562f, 9.763f, + 10.820f, 12.894f, 15.459f, 17.609f, 19.951f, 19.083f, 21.599f, 22.018f, 23.191f, + 23.914f, 24.848f, 25.153f, 25.880f, 26.281f, 26.937f, 27.724f, 27.264f, 26.475f, + 25.974f, 25.504f, 24.776f, 24.454f, 24.026f, 23.233f, 22.609f, 21.358f, 20.312f, + 18.499f, 17.537f, 16.761f, 16.180f, 15.962f, 15.357f, 15.088f, 14.485f, 14.243f, + 13.676f, 13.179f, 12.572f, 12.085f, 12.067f, 11.414f, 11.681f, 11.568f, 11.159f, + 10.247f, 10.134f, 9.578f, 9.726f, 9.592f, 9.758f, 10.264f, 11.444f, 12.834f, + 13.954f, 15.100f, 15.771f, 17.464f, 18.239f, 19.065f, 19.707f, 19.983f, 19.721f, + 19.001f, 17.587f, 20.126f, 20.293f, 21.045f, 22.563f, 24.505f, 31.245f, 30.264f, + 29.829f, 32.141f, 35.299f, 33.011f, 30.707f, 30.377f, 29.307f, 27.665f, 27.350f, + 29.518f, 31.305f, 32.959f, 35.160f, 36.896f, 38.115f, 38.410f, 39.508f, 39.081f, + 39.099f, 39.458f, 40.986f, 42.043f, 44.135f, 43.123f, 42.467f, 41.245f, 47.396f, + 46.962f, 45.799f, 45.075f, 48.614f, 45.837f, 48.103f, 50.978f, 55.259f, 49.869f, + 53.879f, 52.202f, 52.579f, 54.366f, 57.675f, 57.471f, 58.554f, 59.760f, 60.584f, + 58.751f, 56.252f, 55.242f, 55.440f, 55.790f, 55.703f, 57.691f, 59.157f, 60.176f, + 61.560f, 62.383f, 62.496f, 61.853f, 58.504f, 58.763f, 58.320f, 57.925f, 57.299f, + 53.460f, 50.533f, 48.413f, 46.784f, 42.595f, 39.434f, 34.568f, 31.315f, 31.607f, + 31.341f, 31.638f, 27.243f, 26.819f, 25.172f, 22.612f, 20.353f, 18.018f, 15.462f, + 13.606f }, + { -29.534f, -28.001f, -25.445f, -21.900f, -18.131f, -15.631f, -14.451f, -11.935f, -10.455f, + -11.777f, -10.637f, -8.410f, -3.818f, 1.828f, 5.935f, 9.198f, 7.253f, 7.581f, + 9.403f, 10.939f, 7.717f, 6.738f, 6.457f, 7.042f, 7.913f, 8.677f, 9.747f, + 10.614f, 13.201f, 15.189f, 17.173f, 19.922f, 19.325f, 21.888f, 22.549f, 23.915f, + 24.567f, 25.463f, 25.672f, 26.282f, 26.743f, 27.389f, 28.076f, 27.146f, 26.622f, + 25.856f, 24.904f, 24.416f, 24.258f, 23.686f, 23.214f, 22.236f, 21.176f, 19.527f, + 18.012f, 17.235f, 16.420f, 15.802f, 15.660f, 15.326f, 14.982f, 14.613f, 14.235f, + 14.065f, 13.522f, 12.980f, 12.578f, 12.462f, 12.174f, 12.382f, 12.038f, 11.456f, + 10.884f, 10.590f, 10.450f, 10.401f, 10.189f, 10.022f, 10.342f, 11.324f, 12.758f, + 13.758f, 15.221f, 16.049f, 17.934f, 18.416f, 18.986f, 19.240f, 19.876f, 20.004f, + 19.126f, 18.726f, 19.963f, 20.662f, 21.547f, 23.264f, 28.050f, 30.881f, 32.219f, + 32.683f, 33.081f, 33.569f, 33.382f, 31.330f, 30.695f, 29.658f, 27.857f, 26.637f, + 28.628f, 30.734f, 31.860f, 32.981f, 35.458f, 36.254f, 38.007f, 38.726f, 40.152f, + 39.396f, 39.137f, 41.404f, 39.657f, 42.935f, 43.550f, 40.777f, 40.098f, 44.058f, + 43.760f, 50.640f, 44.342f, 49.395f, 45.815f, 47.912f, 52.036f, 52.968f, 47.417f, + 52.998f, 49.996f, 50.165f, 53.143f, 58.253f, 59.089f, 59.554f, 59.412f, 59.949f, + 59.358f, 56.139f, 55.780f, 55.871f, 55.638f, 55.446f, 56.596f, 58.759f, 59.913f, + 61.037f, 61.443f, 61.378f, 59.850f, 57.679f, 57.650f, 57.719f, 56.832f, 56.598f, + 53.406f, 50.555f, 48.366f, 46.289f, 43.304f, 40.170f, 35.616f, 31.977f, 31.853f, + 31.647f, 31.707f, 27.341f, 26.967f, 24.955f, 22.535f, 20.353f, 17.989f, 15.466f, + 13.606f }, + { -29.534f, -27.988f, -25.441f, -21.927f, -18.156f, -15.641f, -14.432f, -11.976f, -10.436f, + -11.631f, -10.258f, -8.023f, -3.812f, 1.899f, 6.244f, 10.204f, 7.829f, 7.797f, + 10.339f, 11.149f, 8.781f, 7.228f, 6.741f, 7.181f, 8.023f, 8.843f, 9.678f, + 11.071f, 13.269f, 14.926f, 16.702f, 19.664f, 19.318f, 22.584f, 23.014f, 24.449f, + 25.286f, 26.068f, 26.323f, 26.466f, 26.901f, 27.588f, 28.095f, 27.252f, 26.094f, + 25.658f, 24.697f, 23.948f, 23.826f, 23.441f, 23.167f, 22.198f, 21.011f, 19.466f, + 18.061f, 16.865f, 16.104f, 15.660f, 15.551f, 15.233f, 14.860f, 14.794f, 14.367f, + 14.313f, 13.727f, 13.302f, 12.826f, 12.558f, 12.290f, 12.477f, 12.176f, 12.143f, + 11.598f, 10.996f, 10.890f, 10.975f, 10.596f, 10.397f, 10.510f, 11.163f, 12.658f, + 13.795f, 15.017f, 16.405f, 17.395f, 18.339f, 18.737f, 19.159f, 19.729f, 19.993f, + 19.457f, 19.474f, 19.558f, 20.438f, 22.389f, 26.902f, 30.043f, 31.342f, 33.879f, + 34.067f, 32.657f, 32.030f, 33.016f, 32.345f, 31.291f, 30.109f, 28.525f, 27.671f, + 28.298f, 29.617f, 30.315f, 31.549f, 33.103f, 34.657f, 36.367f, 37.939f, 39.918f, + 39.872f, 38.996f, 42.223f, 43.405f, 46.000f, 45.571f, 39.407f, 37.413f, 43.020f, + 43.175f, 48.848f, 49.007f, 53.380f, 48.540f, 49.108f, 52.578f, 53.558f, 47.332f, + 51.037f, 49.060f, 49.863f, 52.129f, 57.635f, 58.389f, 59.033f, 58.362f, 58.548f, + 58.750f, 57.907f, 56.814f, 55.808f, 55.691f, 56.206f, 55.457f, 58.202f, 59.395f, + 60.167f, 59.940f, 59.593f, 58.435f, 57.274f, 56.638f, 56.787f, 55.741f, 56.082f, + 53.410f, 50.579f, 48.271f, 45.894f, 44.143f, 40.466f, 36.056f, 32.826f, 32.334f, + 32.155f, 31.496f, 27.587f, 27.081f, 24.770f, 22.455f, 20.342f, 17.957f, 15.469f, + 13.606f }, + { -29.534f, -27.976f, -25.426f, -21.955f, -18.172f, -15.719f, -14.392f, -12.066f, -10.377f, + -11.386f, -9.851f, -7.577f, -3.676f, 1.715f, 6.306f, 10.395f, 8.504f, 9.016f, + 10.067f, 10.742f, 9.504f, 7.641f, 7.196f, 7.620f, 8.286f, 9.093f, 9.782f, + 11.519f, 12.844f, 14.696f, 16.458f, 19.287f, 20.265f, 23.093f, 23.518f, 25.086f, + 25.487f, 26.372f, 26.989f, 26.809f, 27.225f, 27.415f, 27.213f, 27.013f, 25.338f, + 25.344f, 24.525f, 23.509f, 23.720f, 22.992f, 22.270f, 21.772f, 20.854f, 19.314f, + 17.940f, 16.856f, 16.064f, 15.567f, 15.416f, 15.087f, 15.009f, 14.877f, 14.624f, + 14.587f, 13.970f, 13.535f, 12.963f, 12.622f, 12.527f, 12.642f, 12.374f, 12.420f, + 12.261f, 11.616f, 11.309f, 11.505f, 11.324f, 10.796f, 11.055f, 11.450f, 12.984f, + 13.968f, 14.882f, 16.388f, 17.018f, 18.187f, 18.560f, 18.969f, 19.487f, 19.891f, + 19.540f, 19.937f, 18.622f, 21.106f, 24.295f, 30.284f, 30.753f, 32.063f, 34.905f, + 34.937f, 32.379f, 31.576f, 32.078f, 32.508f, 31.220f, 29.775f, 28.598f, 27.603f, + 28.037f, 28.494f, 28.811f, 30.011f, 31.854f, 32.602f, 33.976f, 35.906f, 37.278f, + 38.499f, 38.945f, 42.086f, 47.290f, 51.050f, 48.298f, 45.962f, 37.994f, 41.038f, + 44.757f, 51.849f, 52.736f, 54.109f, 54.009f, 54.540f, 55.626f, 55.319f, 51.317f, + 47.793f, 48.116f, 50.142f, 52.391f, 55.954f, 57.563f, 57.783f, 57.754f, 57.535f, + 58.241f, 58.392f, 57.779f, 57.689f, 58.153f, 55.312f, 55.575f, 58.142f, 59.318f, + 59.534f, 58.487f, 57.650f, 57.548f, 56.376f, 55.690f, 55.596f, 55.297f, 55.880f, + 53.222f, 50.635f, 48.051f, 45.720f, 44.614f, 40.877f, 36.433f, 33.936f, 33.031f, + 32.700f, 31.036f, 27.941f, 27.150f, 24.624f, 22.383f, 20.324f, 17.923f, 15.471f, + 13.606f }, + { -29.534f, -27.963f, -25.399f, -21.982f, -18.178f, -15.836f, -14.315f, -12.143f, -10.284f, + -11.097f, -9.484f, -7.128f, -3.363f, 1.523f, 6.426f, 10.458f, 9.521f, 11.107f, + 10.313f, 10.790f, 10.004f, 8.132f, 7.738f, 8.102f, 8.660f, 9.287f, 10.144f, + 11.621f, 13.005f, 14.648f, 16.228f, 18.780f, 21.086f, 24.108f, 24.314f, 25.263f, + 25.628f, 26.532f, 27.312f, 27.286f, 27.270f, 26.559f, 26.642f, 26.623f, 24.732f, + 25.260f, 24.117f, 23.382f, 23.353f, 22.887f, 22.154f, 21.828f, 20.241f, 19.254f, + 17.726f, 16.610f, 16.126f, 15.713f, 15.336f, 15.157f, 15.256f, 15.067f, 15.027f, + 14.938f, 14.430f, 13.736f, 13.242f, 12.716f, 12.631f, 12.819f, 12.620f, 12.379f, + 12.728f, 12.280f, 11.842f, 12.003f, 12.003f, 11.639f, 11.727f, 12.095f, 13.062f, + 14.254f, 14.687f, 15.940f, 16.263f, 17.780f, 18.277f, 18.813f, 19.166f, 19.564f, + 19.331f, 19.677f, 18.360f, 20.500f, 25.177f, 29.610f, 30.580f, 31.274f, 33.646f, + 33.553f, 31.810f, 30.824f, 30.570f, 30.759f, 30.115f, 29.084f, 27.929f, 27.588f, + 27.610f, 27.559f, 27.271f, 28.666f, 30.468f, 30.988f, 32.595f, 33.805f, 34.847f, + 38.009f, 37.753f, 39.907f, 49.234f, 53.102f, 49.358f, 48.280f, 43.148f, 40.652f, + 45.405f, 51.801f, 54.779f, 54.919f, 55.882f, 55.951f, 56.313f, 56.552f, 50.813f, + 46.464f, 47.452f, 48.695f, 53.423f, 54.983f, 56.090f, 56.137f, 56.475f, 56.868f, + 57.519f, 57.588f, 58.138f, 58.110f, 57.328f, 55.394f, 55.616f, 56.954f, 58.283f, + 58.715f, 57.285f, 56.716f, 56.051f, 55.497f, 54.711f, 54.056f, 54.392f, 55.402f, + 52.937f, 50.680f, 47.785f, 45.699f, 44.469f, 41.566f, 37.259f, 35.256f, 33.777f, + 33.010f, 30.396f, 28.337f, 27.174f, 24.525f, 22.330f, 20.298f, 17.888f, 15.472f, + 13.606f }, + { -29.534f, -27.951f, -25.361f, -22.007f, -18.175f, -15.957f, -14.208f, -12.173f, -10.196f, + -10.834f, -9.176f, -6.753f, -3.025f, 1.611f, 6.662f, 10.861f, 10.996f, 13.260f, + 12.214f, 11.062f, 10.351f, 8.975f, 8.008f, 8.449f, 9.137f, 9.729f, 10.588f, + 11.575f, 13.139f, 14.464f, 15.714f, 18.258f, 21.129f, 24.192f, 24.902f, 25.685f, + 26.229f, 26.944f, 27.390f, 27.584f, 27.181f, 26.419f, 26.157f, 25.335f, 24.572f, + 24.938f, 23.818f, 22.840f, 23.119f, 22.374f, 21.878f, 20.407f, 20.047f, 18.621f, + 17.216f, 16.656f, 16.162f, 15.908f, 15.400f, 15.470f, 15.542f, 15.399f, 15.425f, + 15.414f, 15.027f, 14.219f, 13.643f, 13.074f, 12.848f, 13.085f, 12.950f, 12.445f, + 12.692f, 12.683f, 12.716f, 12.393f, 12.596f, 12.309f, 12.185f, 12.525f, 13.084f, + 14.177f, 14.816f, 15.426f, 15.868f, 17.529f, 18.201f, 18.568f, 18.815f, 19.238f, + 19.426f, 19.142f, 18.284f, 20.063f, 23.947f, 28.746f, 29.246f, 30.458f, 30.900f, + 30.506f, 29.736f, 28.872f, 29.113f, 29.065f, 29.236f, 28.343f, 27.911f, 27.795f, + 27.307f, 26.839f, 26.799f, 27.801f, 28.915f, 29.442f, 30.554f, 31.560f, 33.029f, + 35.005f, 36.454f, 40.048f, 47.999f, 53.869f, 50.408f, 50.596f, 45.137f, 40.030f, + 41.645f, 50.500f, 55.377f, 55.081f, 55.093f, 55.873f, 57.102f, 56.227f, 48.652f, + 45.555f, 47.336f, 48.037f, 53.577f, 53.880f, 54.917f, 54.802f, 55.733f, 55.878f, + 56.889f, 57.227f, 57.118f, 57.029f, 57.129f, 56.501f, 55.417f, 56.582f, 57.260f, + 57.102f, 55.464f, 55.868f, 54.348f, 54.278f, 53.771f, 52.483f, 52.474f, 54.457f, + 52.727f, 50.632f, 47.673f, 45.686f, 43.961f, 42.189f, 38.452f, 36.485f, 34.336f, + 32.862f, 29.699f, 28.698f, 27.168f, 24.476f, 22.303f, 20.269f, 17.852f, 15.473f, + 13.606f }, + { -29.534f, -27.940f, -25.313f, -22.028f, -18.166f, -16.047f, -14.101f, -12.154f, -10.163f, + -10.632f, -8.878f, -6.432f, -2.803f, 1.938f, 6.824f, 11.194f, 12.547f, 14.573f, + 13.951f, 10.757f, 10.454f, 9.537f, 8.267f, 8.700f, 9.497f, 10.219f, 10.781f, + 11.549f, 12.816f, 13.989f, 15.532f, 18.040f, 21.301f, 24.363f, 25.535f, 26.142f, + 26.901f, 27.393f, 27.968f, 27.873f, 26.891f, 25.727f, 25.262f, 24.845f, 24.074f, + 24.831f, 23.330f, 22.504f, 22.336f, 22.295f, 21.853f, 19.819f, 19.437f, 18.447f, + 17.165f, 16.669f, 16.457f, 16.418f, 15.901f, 15.990f, 15.950f, 15.971f, 16.049f, + 15.872f, 15.677f, 14.815f, 13.993f, 13.602f, 13.301f, 13.223f, 13.141f, 12.682f, + 12.698f, 12.762f, 13.895f, 12.758f, 13.111f, 14.263f, 11.866f, 12.626f, 13.359f, + 13.954f, 14.626f, 15.141f, 15.922f, 17.064f, 17.996f, 18.214f, 18.227f, 18.769f, + 19.466f, 18.663f, 18.188f, 19.537f, 23.079f, 27.015f, 29.004f, 29.951f, 30.078f, + 29.079f, 28.368f, 28.745f, 28.829f, 28.481f, 28.554f, 28.009f, 27.766f, 27.831f, + 26.863f, 26.276f, 26.719f, 27.281f, 27.294f, 27.886f, 30.195f, 30.530f, 31.677f, + 33.336f, 35.968f, 40.253f, 47.269f, 52.336f, 55.495f, 52.161f, 45.669f, 40.116f, + 41.669f, 47.313f, 54.971f, 54.292f, 54.816f, 56.167f, 56.810f, 56.099f, 47.762f, + 44.927f, 46.670f, 48.238f, 52.400f, 52.801f, 53.820f, 54.465f, 54.518f, 55.760f, + 56.262f, 55.766f, 55.809f, 55.603f, 55.866f, 55.893f, 55.372f, 55.350f, 56.109f, + 55.515f, 53.497f, 54.303f, 53.632f, 52.719f, 52.324f, 51.546f, 51.265f, 53.747f, + 52.593f, 50.398f, 47.744f, 45.581f, 43.461f, 42.295f, 39.420f, 37.183f, 34.533f, + 32.247f, 29.111f, 28.961f, 27.153f, 24.480f, 22.307f, 20.238f, 17.817f, 15.472f, + 13.606f }, + { -29.534f, -27.928f, -25.257f, -22.044f, -18.154f, -16.080f, -14.031f, -12.119f, -10.211f, + -10.467f, -8.520f, -6.036f, -2.595f, 2.265f, 6.854f, 11.013f, 13.524f, 14.594f, + 14.044f, 10.477f, 10.546f, 9.311f, 8.946f, 9.174f, 9.873f, 10.515f, 11.001f, + 11.605f, 12.781f, 13.863f, 15.467f, 18.000f, 21.236f, 24.577f, 25.184f, 26.506f, + 27.051f, 27.802f, 27.889f, 27.379f, 26.587f, 25.449f, 24.635f, 24.287f, 23.468f, + 24.268f, 23.231f, 22.220f, 21.973f, 20.431f, 19.967f, 19.016f, 18.700f, 18.007f, + 17.496f, 17.829f, 16.779f, 17.246f, 16.870f, 16.630f, 16.651f, 16.566f, 16.708f, + 16.551f, 16.338f, 15.639f, 14.694f, 14.203f, 13.775f, 13.594f, 13.478f, 12.835f, + 12.769f, 13.048f, 13.050f, 13.045f, 13.288f, 13.373f, 12.962f, 12.712f, 13.381f, + 14.086f, 15.010f, 15.376f, 15.591f, 16.836f, 17.802f, 17.811f, 17.727f, 18.252f, + 18.851f, 18.444f, 19.283f, 19.079f, 22.399f, 25.615f, 27.363f, 28.189f, 28.789f, + 28.367f, 27.905f, 29.157f, 28.605f, 27.885f, 28.207f, 28.333f, 28.090f, 27.467f, + 26.833f, 25.929f, 26.909f, 27.385f, 26.130f, 25.918f, 28.534f, 30.376f, 31.556f, + 33.261f, 36.021f, 40.426f, 46.259f, 49.718f, 53.836f, 54.610f, 47.548f, 43.626f, + 42.412f, 47.245f, 52.206f, 54.330f, 54.471f, 54.537f, 54.489f, 55.206f, 49.560f, + 44.856f, 46.214f, 50.297f, 51.463f, 51.730f, 52.943f, 53.962f, 54.035f, 54.585f, + 55.260f, 55.094f, 55.036f, 54.925f, 55.201f, 54.540f, 54.208f, 53.215f, 54.483f, + 53.572f, 52.335f, 53.278f, 52.998f, 52.028f, 51.032f, 51.089f, 51.329f, 53.474f, + 52.424f, 50.058f, 47.734f, 45.418f, 43.036f, 41.825f, 39.673f, 37.096f, 34.365f, + 31.408f, 28.793f, 29.090f, 27.152f, 24.531f, 22.340f, 20.208f, 17.782f, 15.471f, + 13.606f }, + { -29.534f, -27.917f, -25.194f, -22.052f, -18.141f, -16.045f, -14.028f, -12.115f, -10.332f, + -10.284f, -8.083f, -5.487f, -2.173f, 2.467f, 6.901f, 10.695f, 13.676f, 13.673f, + 13.489f, 10.738f, 10.508f, 8.912f, 9.663f, 9.826f, 10.348f, 10.839f, 11.120f, + 11.655f, 12.731f, 14.062f, 15.206f, 17.998f, 20.741f, 24.186f, 25.490f, 26.650f, + 27.370f, 28.226f, 27.597f, 27.037f, 26.408f, 25.093f, 24.333f, 24.141f, 23.238f, + 23.646f, 22.309f, 21.198f, 21.411f, 20.129f, 18.942f, 18.585f, 17.316f, 17.713f, + 17.530f, 17.386f, 17.840f, 17.350f, 18.276f, 17.562f, 17.498f, 17.530f, 17.295f, + 17.432f, 17.095f, 16.458f, 15.611f, 15.015f, 14.446f, 14.171f, 13.981f, 13.354f, + 13.052f, 13.017f, 13.144f, 13.434f, 13.030f, 13.289f, 12.728f, 12.691f, 13.365f, + 14.059f, 14.996f, 15.891f, 15.900f, 16.583f, 17.722f, 17.607f, 17.593f, 17.821f, + 18.106f, 18.063f, 19.028f, 18.142f, 20.507f, 24.238f, 27.220f, 27.701f, 27.328f, + 27.005f, 27.018f, 27.628f, 27.856f, 28.115f, 29.075f, 29.100f, 28.526f, 28.130f, + 27.013f, 26.444f, 27.031f, 27.390f, 25.485f, 25.230f, 27.249f, 29.373f, 31.322f, + 32.977f, 35.790f, 40.126f, 43.658f, 47.860f, 51.136f, 52.410f, 51.533f, 48.364f, + 45.523f, 48.400f, 50.838f, 54.138f, 52.391f, 53.721f, 53.621f, 53.615f, 46.230f, + 44.392f, 48.421f, 49.724f, 50.653f, 50.816f, 52.053f, 52.937f, 53.850f, 54.571f, + 53.858f, 54.424f, 54.047f, 53.723f, 52.786f, 53.645f, 53.724f, 51.715f, 52.420f, + 52.165f, 51.892f, 52.695f, 52.000f, 51.623f, 50.830f, 50.572f, 51.300f, 53.068f, + 52.194f, 49.783f, 47.489f, 45.286f, 42.578f, 41.210f, 39.279f, 36.408f, 34.000f, + 30.733f, 28.845f, 29.087f, 27.181f, 24.621f, 22.397f, 20.183f, 17.748f, 15.469f, + 13.606f }, + { -29.534f, -27.907f, -25.125f, -22.051f, -18.133f, -15.945f, -14.108f, -12.177f, -10.485f, + -10.048f, -7.640f, -4.909f, -1.564f, 2.546f, 6.975f, 10.804f, 13.300f, 12.704f, + 13.200f, 10.919f, 10.144f, 8.827f, 9.978f, 10.408f, 10.780f, 11.269f, 11.415f, + 11.963f, 12.873f, 14.138f, 15.454f, 18.007f, 21.113f, 23.484f, 24.835f, 27.057f, + 27.690f, 27.793f, 27.381f, 26.845f, 26.021f, 24.778f, 23.990f, 23.632f, 23.308f, + 22.505f, 21.833f, 21.980f, 20.203f, 19.686f, 18.432f, 17.540f, 16.350f, 16.902f, + 17.168f, 16.994f, 17.204f, 18.688f, 18.521f, 18.324f, 18.400f, 18.391f, 17.986f, + 18.107f, 17.922f, 17.342f, 16.117f, 16.005f, 15.288f, 14.773f, 14.688f, 14.167f, + 13.610f, 13.336f, 13.328f, 13.297f, 12.899f, 13.328f, 12.289f, 12.107f, 12.745f, + 14.081f, 15.169f, 16.130f, 16.750f, 16.570f, 17.661f, 17.673f, 17.512f, 17.663f, + 17.740f, 17.714f, 17.827f, 18.087f, 19.901f, 25.172f, 27.542f, 27.753f, 27.642f, + 27.091f, 26.407f, 26.048f, 26.792f, 26.814f, 26.595f, 28.228f, 28.712f, 28.668f, + 27.316f, 27.022f, 26.556f, 26.989f, 25.237f, 25.428f, 26.297f, 28.160f, 30.349f, + 31.933f, 34.081f, 37.812f, 41.367f, 45.506f, 48.180f, 51.696f, 51.448f, 49.912f, + 47.540f, 50.842f, 51.202f, 53.306f, 52.386f, 53.679f, 54.027f, 51.426f, 46.928f, + 46.617f, 49.390f, 49.315f, 49.590f, 50.445f, 50.182f, 50.644f, 51.868f, 52.806f, + 52.610f, 53.029f, 52.204f, 52.302f, 50.256f, 52.465f, 52.911f, 50.656f, 50.047f, + 51.446f, 51.761f, 52.046f, 51.661f, 50.914f, 50.823f, 49.899f, 50.816f, 52.457f, + 51.944f, 49.542f, 47.246f, 45.108f, 42.212f, 40.953f, 38.726f, 35.655f, 33.672f, + 30.541f, 29.252f, 28.978f, 27.242f, 24.737f, 22.468f, 20.163f, 17.716f, 15.466f, + 13.606f }, + { -29.534f, -27.897f, -25.051f, -22.039f, -18.132f, -15.799f, -14.259f, -12.311f, -10.615f, + -9.776f, -7.307f, -4.563f, -1.162f, 2.456f, 6.845f, 11.005f, 12.659f, 12.348f, + 12.822f, 11.334f, 10.719f, 9.190f, 9.986f, 10.640f, 11.222f, 11.730f, 12.053f, + 12.288f, 13.087f, 14.067f, 15.566f, 17.915f, 21.003f, 23.067f, 24.515f, 27.469f, + 27.705f, 27.557f, 26.961f, 26.592f, 25.752f, 24.448f, 23.671f, 23.177f, 22.689f, + 21.777f, 22.689f, 20.852f, 19.774f, 18.740f, 17.917f, 17.035f, 15.888f, 16.407f, + 16.676f, 17.153f, 18.053f, 18.819f, 19.237f, 18.961f, 19.111f, 19.130f, 19.094f, + 18.884f, 18.540f, 18.205f, 16.712f, 16.768f, 15.902f, 15.620f, 15.415f, 15.247f, + 14.673f, 14.044f, 13.668f, 13.510f, 13.031f, 12.467f, 11.796f, 11.577f, 12.627f, + 13.817f, 15.207f, 16.133f, 17.126f, 17.037f, 18.047f, 17.951f, 17.838f, 17.630f, + 17.469f, 17.585f, 17.001f, 17.601f, 20.252f, 24.441f, 27.162f, 28.002f, 27.156f, + 25.697f, 25.278f, 25.413f, 26.059f, 26.062f, 25.264f, 25.640f, 28.147f, 28.075f, + 28.631f, 28.157f, 28.540f, 28.908f, 27.284f, 26.694f, 26.311f, 27.385f, 28.410f, + 29.836f, 31.431f, 36.354f, 38.972f, 43.343f, 47.114f, 49.614f, 51.025f, 49.938f, + 47.663f, 49.950f, 51.740f, 52.668f, 52.723f, 52.940f, 51.708f, 50.233f, 48.663f, + 47.560f, 48.342f, 48.517f, 48.888f, 49.067f, 48.049f, 48.106f, 49.163f, 50.801f, + 51.154f, 50.926f, 49.989f, 50.065f, 49.024f, 50.518f, 50.981f, 51.020f, 49.287f, + 50.315f, 51.386f, 51.542f, 51.267f, 50.641f, 50.215f, 49.210f, 50.298f, 51.798f, + 51.599f, 49.227f, 47.207f, 44.677f, 42.277f, 41.153f, 38.423f, 35.351f, 33.545f, + 30.908f, 29.877f, 28.811f, 27.321f, 24.863f, 22.543f, 20.150f, 17.686f, 15.462f, + 13.606f }, + { -29.534f, -27.888f, -24.975f, -22.013f, -18.140f, -15.637f, -14.450f, -12.489f, -10.677f, + -9.516f, -7.143f, -4.597f, -1.353f, 2.121f, 6.408f, 10.464f, 11.750f, 12.582f, + 12.407f, 12.616f, 12.857f, 10.021f, 10.154f, 10.646f, 11.833f, 12.456f, 12.724f, + 12.886f, 13.213f, 14.150f, 15.272f, 17.879f, 20.764f, 22.963f, 24.603f, 27.003f, + 27.587f, 27.312f, 26.803f, 26.526f, 25.291f, 24.096f, 23.523f, 22.860f, 22.752f, + 21.480f, 22.172f, 18.988f, 19.650f, 17.750f, 17.522f, 16.845f, 16.386f, 16.183f, + 17.003f, 17.802f, 18.774f, 19.157f, 19.414f, 20.208f, 20.392f, 20.320f, 19.995f, + 19.687f, 19.195f, 19.094f, 17.727f, 17.493f, 16.872f, 16.112f, 16.132f, 15.979f, + 15.094f, 14.507f, 13.875f, 13.380f, 12.826f, 12.117f, 11.241f, 11.934f, 12.519f, + 12.857f, 14.591f, 16.103f, 17.129f, 17.396f, 18.050f, 18.272f, 18.391f, 17.622f, + 17.305f, 17.384f, 16.676f, 17.044f, 18.966f, 22.479f, 26.936f, 26.761f, 26.042f, + 24.794f, 24.105f, 24.333f, 25.136f, 26.068f, 24.616f, 24.020f, 26.847f, 27.605f, + 28.812f, 29.965f, 30.065f, 29.214f, 28.555f, 27.388f, 27.796f, 27.299f, 26.763f, + 27.335f, 29.782f, 33.521f, 37.537f, 41.763f, 44.136f, 48.303f, 50.145f, 50.431f, + 46.838f, 46.726f, 50.401f, 51.817f, 52.456f, 51.249f, 50.245f, 51.390f, 48.555f, + 47.214f, 47.805f, 48.125f, 48.277f, 48.255f, 46.171f, 46.144f, 47.757f, 48.543f, + 48.096f, 48.258f, 48.075f, 48.496f, 48.596f, 48.469f, 49.185f, 50.555f, 49.938f, + 49.639f, 50.646f, 51.296f, 50.668f, 50.105f, 49.348f, 48.775f, 49.634f, 50.929f, + 51.099f, 48.981f, 47.136f, 44.066f, 42.825f, 41.472f, 38.405f, 35.629f, 33.647f, + 31.629f, 30.516f, 28.632f, 27.390f, 24.982f, 22.610f, 20.145f, 17.658f, 15.457f, + 13.606f }, + { -29.534f, -27.880f, -24.897f, -21.973f, -18.154f, -15.493f, -14.636f, -12.657f, -10.648f, + -9.301f, -7.084f, -4.850f, -2.015f, 1.642f, 5.903f, 9.258f, 10.905f, 13.100f, + 12.465f, 13.448f, 14.464f, 10.528f, 10.660f, 10.931f, 12.894f, 13.775f, 13.406f, + 13.503f, 13.701f, 14.329f, 15.132f, 17.828f, 20.762f, 22.627f, 24.433f, 27.098f, + 27.238f, 27.168f, 26.391f, 26.405f, 25.022f, 23.761f, 23.319f, 22.775f, 22.479f, + 21.243f, 20.774f, 18.793f, 23.573f, 17.031f, 17.474f, 16.804f, 16.597f, 16.734f, + 16.967f, 17.767f, 18.370f, 20.028f, 20.044f, 20.940f, 21.409f, 21.247f, 20.852f, + 20.564f, 20.098f, 19.847f, 18.959f, 18.146f, 17.336f, 16.808f, 16.339f, 16.371f, + 15.504f, 14.713f, 14.061f, 13.421f, 12.683f, 11.942f, 11.145f, 11.092f, 11.477f, + 11.602f, 13.059f, 15.223f, 16.411f, 16.838f, 17.664f, 18.217f, 18.196f, 17.846f, + 17.162f, 16.992f, 16.895f, 16.616f, 17.673f, 20.453f, 25.912f, 26.234f, 25.914f, + 24.272f, 23.262f, 23.412f, 24.155f, 25.095f, 23.751f, 22.245f, 24.140f, 27.104f, + 28.980f, 30.837f, 31.445f, 30.261f, 30.432f, 29.865f, 29.163f, 27.348f, 25.617f, + 25.845f, 28.325f, 30.965f, 35.389f, 39.102f, 41.083f, 45.020f, 48.293f, 49.580f, + 47.460f, 46.235f, 49.156f, 49.913f, 51.091f, 50.314f, 49.985f, 52.108f, 48.706f, + 47.140f, 48.169f, 47.587f, 47.370f, 47.048f, 45.038f, 45.301f, 46.300f, 46.367f, + 45.821f, 46.184f, 46.676f, 47.262f, 47.762f, 46.927f, 48.227f, 49.454f, 50.172f, + 49.071f, 49.781f, 50.804f, 50.320f, 48.953f, 48.675f, 48.539f, 48.836f, 50.053f, + 50.553f, 48.925f, 46.724f, 43.723f, 43.370f, 41.560f, 38.495f, 36.215f, 33.895f, + 32.344f, 30.978f, 28.477f, 27.419f, 25.076f, 22.659f, 20.147f, 17.632f, 15.452f, + 13.606f } +}; -double geoid_per_degree(double latitude,double longitude) -{ +double geoid_per_degree(double latitude, double longitude) { + const double dlon = 1.0, dlat = 1.0; + double a, b, y[4]; + int i1, i2, j1, j2; + double geoid_height; - const double dlon=1.0,dlat=1.0; - double a,b,y[4]; - int i1,i2,j1,j2; - double geoid_height; - - if (longitude #include - -double** read_geoid_map() -{ - +double** read_geoid_map() { double** data; std::string path = ament_index_cpp::get_package_share_directory("eagleye_coordinate") + "/data/"; std::string file_name = "gsigeo2011_ver2.asc"; - std::ifstream ifs(path+file_name); + std::ifstream ifs(path + file_name); - if (!ifs) - { - fprintf(stderr, "[LocalizationTool]: Geoid database is not found\n"); - exit(2); - } - size_t row = 1802; - size_t column = 1202; + if (!ifs) { + fprintf(stderr, "[LocalizationTool]: Geoid database is not found\n"); + exit(2); + } + size_t row = 1802; + size_t column = 1202; - data = (double**)malloc(sizeof(double*) * row + 1); + data = (double**)malloc(sizeof(double*) * row + 1); - data[1] = (double*)malloc(sizeof(double) * column * row); - for (int i = 2; i < row; i++) - { - data[i] = data[1] + i * column; - } - std::string str; - getline(ifs, str); - - int i = 1; - int j = 1; - - while (getline(ifs, str)) - { - std::string token; - std::istringstream stream(str); - - while (getline(stream, token, ' ')) - { - if (token == " " || token == "" || token == "\n" || token == "\r") - { - continue; - } - if (j >= column) - { - j = 1; - i += 1; - } - data[i][j] = std::stod(token); - j++; + data[1] = (double*)malloc(sizeof(double) * column * row); + for (int i = 2; i < row; i++) { + data[i] = data[1] + i * column; + } + std::string str; + getline(ifs, str); + + int i = 1; + int j = 1; + + while (getline(ifs, str)) { + std::string token; + std::istringstream stream(str); + + while (getline(stream, token, ' ')) { + if (token == " " || token == "" || token == "\n" || token == "\r") { + continue; } + if (j >= column) { + j = 1; + i += 1; + } + data[i][j] = std::stod(token); + j++; } + } return data; } -double geoid_per_minute(double latitude,double longitude,double** geoid_map_data) -{ +double geoid_per_minute(double latitude, double longitude, double** geoid_map_data) { double xmin = 120; double ymin = 20; double xpt = longitude; @@ -112,69 +102,49 @@ double geoid_per_minute(double latitude,double longitude,double** geoid_map_data double xx = std::fabs(x); double el2 = 1e-5; - if (ix < 0 || ix >= 1201 || iy < 0 || iy >= 1801) - { + if (ix < 0 || ix >= 1201 || iy < 0 || iy >= 1801) { return 0.0; } int iadx = 99; int iady = 99; - if (yy < el2) - { + if (yy < el2) { iady = 0; - } - else if ((1 - yy) < el2) - { + } else if ((1 - yy) < el2) { iady = 1; } - if (xx < el2) - { + if (xx < el2) { iadx = 0; - } - else if ((1 - xx) < el2) - { + } else if ((1 - xx) < el2) { iadx = 1; } - if (iady < 10) - { - if (iadx < 10) - { + if (iady < 10) { + if (iadx < 10) { return geoid_map_data[iy + iady][ix + iadx]; } - if (geoid_map_data[iy + iady][ix] == 999.000 || geoid_map_data[iy + iady][jx] == 999.000) - { + if (geoid_map_data[iy + iady][ix] == 999.000 || geoid_map_data[iy + iady][jx] == 999.000) { return 999.000; - } - else - { + } else { return (1 - x) * geoid_map_data[iy + iady][ix] + x * geoid_map_data[iy + iady][jx]; } - } - else - { - if (iadx < 10) - { - if (geoid_map_data[iy][ix + iadx] == 999.000 || geoid_map_data[jy][ix + iadx] == 999.000) - { + } else { + if (iadx < 10) { + if (geoid_map_data[iy][ix + iadx] == 999.000 || geoid_map_data[jy][ix + iadx] == 999.000) { return 999.000; - } - else - { + } else { return (1 - y) * geoid_map_data[iy][ix + iadx] + y * geoid_map_data[jy][ix + iadx]; } } } - if (geoid_map_data[jy][ix] == 999.0 || geoid_map_data[jy][jx] == 999.0 || geoid_map_data[iy][ix] == 999.0 || geoid_map_data[iy][jx] == 999.0) - { + if (geoid_map_data[jy][ix] == 999.0 || geoid_map_data[jy][jx] == 999.0 || + geoid_map_data[iy][ix] == 999.0 || geoid_map_data[iy][jx] == 999.0) { return 999.0; - } - else - { - return (1 - x) * (1 - y) * geoid_map_data[iy][ix] + y * (1. - x) * geoid_map_data[jy][ix] + x * (1. - y) * geoid_map_data[iy][jx] + - geoid_map_data[jy][jx] * x * y; + } else { + return (1 - x) * (1 - y) * geoid_map_data[iy][ix] + y * (1. - x) * geoid_map_data[jy][ix] + + x * (1. - y) * geoid_map_data[iy][jx] + geoid_map_data[jy][jx] * x * y; } } diff --git a/eagleye_core/coordinate/src/ll2xy.cpp b/eagleye_core/coordinate/src/ll2xy.cpp index f49982d1..058b22ce 100644 --- a/eagleye_core/coordinate/src/ll2xy.cpp +++ b/eagleye_core/coordinate/src/ll2xy.cpp @@ -27,147 +27,107 @@ #include "eagleye_coordinate/eagleye_coordinate.hpp" #include +void ll2xy(int num, double llh[3], double xyz[3]) { + int lon_deg, lon_min, lat_deg, + lat_min; // longitude and latitude of origin of each plane in Japan + double m_PLo, m_PLato; -void ll2xy(int num, double llh[3], double xyz[3]) -{ - int lon_deg, lon_min, lat_deg, lat_min; // longitude and latitude of origin of each plane in Japan - double m_PLo,m_PLato; - - if (num == 1) - { + if (num == 1) { lon_deg = 33; lon_min = 0; lat_deg = 129; lat_min = 30; - } - else if (num == 2) - { + } else if (num == 2) { lon_deg = 33; lon_min = 0; lat_deg = 131; lat_min = 0; - } - else if (num == 3) - { + } else if (num == 3) { lon_deg = 36; lon_min = 0; lat_deg = 132; lat_min = 10; - } - else if (num == 4) - { + } else if (num == 4) { lon_deg = 33; lon_min = 0; lat_deg = 133; lat_min = 30; - } - else if (num == 5) - { + } else if (num == 5) { lon_deg = 36; lon_min = 0; lat_deg = 134; lat_min = 20; - } - else if (num == 6) - { + } else if (num == 6) { lon_deg = 36; lon_min = 0; lat_deg = 136; lat_min = 0; - } - else if (num == 7) - { + } else if (num == 7) { lon_deg = 36; lon_min = 0; lat_deg = 137; lat_min = 10; - } - else if (num == 8) - { + } else if (num == 8) { lon_deg = 36; lon_min = 0; lat_deg = 138; lat_min = 30; - } - else if (num == 9) - { + } else if (num == 9) { lon_deg = 36; lon_min = 0; lat_deg = 139; lat_min = 50; - } - else if (num == 10) - { + } else if (num == 10) { lon_deg = 40; lon_min = 0; lat_deg = 140; lat_min = 50; - } - else if (num == 11) - { + } else if (num == 11) { lon_deg = 44; lon_min = 0; lat_deg = 140; lat_min = 15; - } - else if (num == 12) - { + } else if (num == 12) { lon_deg = 44; lon_min = 0; lat_deg = 142; lat_min = 15; - } - else if (num == 13) - { + } else if (num == 13) { lon_deg = 44; lon_min = 0; lat_deg = 144; lat_min = 15; - } - else if (num == 14) - { + } else if (num == 14) { lon_deg = 26; lon_min = 0; lat_deg = 142; lat_min = 0; - } - else if (num == 15) - { + } else if (num == 15) { lon_deg = 26; lon_min = 0; lat_deg = 127; lat_min = 30; - } - else if (num == 16) - { + } else if (num == 16) { lon_deg = 26; lon_min = 0; lat_deg = 124; lat_min = 0; - } - else if (num == 17) - { + } else if (num == 17) { lon_deg = 26; lon_min = 0; lat_deg = 131; lat_min = 0; - } - else if (num == 18) - { + } else if (num == 18) { lon_deg = 20; lon_min = 0; lat_deg = 136; lat_min = 0; - } - else if (num == 19) - { + } else if (num == 19) { lon_deg = 26; lon_min = 0; lat_deg = 154; lat_min = 0; - } - else - { + } else { std::cerr << "\033[31;1mError: Plane numver is invalid. " << std::endl; exit(4); } @@ -190,11 +150,11 @@ void ll2xy(int num, double llh[3], double xyz[3]) double Pnn; // double AW, FW, Pmo; - double m_lat,m_lon,m_h,m_x,m_y,m_z; + double m_lat, m_lon, m_h, m_x, m_y, m_z; m_lat = llh[0]; m_lon = llh[1]; - m_h = llh[2]; + m_h = llh[2]; Pmo = 0.9999; @@ -205,24 +165,28 @@ void ll2xy(int num, double llh[3], double xyz[3]) Pe = (double)sqrt(2.0 * FW - pow(FW, 2)); Pet = (double)sqrt(pow(Pe, 2) / (1.0 - pow(Pe, 2))); - PA = (double)1.0 + 3.0 / 4.0 * pow(Pe, 2) + 45.0 / 64.0 * pow(Pe, 4) + 175.0 / 256.0 * pow(Pe, 6) + - 11025.0 / 16384.0 * pow(Pe, 8) + 43659.0 / 65536.0 * pow(Pe, 10) + 693693.0 / 1048576.0 * pow(Pe, 12) + + PA = (double)1.0 + 3.0 / 4.0 * pow(Pe, 2) + 45.0 / 64.0 * pow(Pe, 4) + + 175.0 / 256.0 * pow(Pe, 6) + 11025.0 / 16384.0 * pow(Pe, 8) + + 43659.0 / 65536.0 * pow(Pe, 10) + 693693.0 / 1048576.0 * pow(Pe, 12) + 19324305.0 / 29360128.0 * pow(Pe, 14) + 4927697775.0 / 7516192768.0 * pow(Pe, 16); PB = (double)3.0 / 4.0 * pow(Pe, 2) + 15.0 / 16.0 * pow(Pe, 4) + 525.0 / 512.0 * pow(Pe, 6) + - 2205.0 / 2048.0 * pow(Pe, 8) + 72765.0 / 65536.0 * pow(Pe, 10) + 297297.0 / 262144.0 * pow(Pe, 12) + - 135270135.0 / 117440512.0 * pow(Pe, 14) + 547521975.0 / 469762048.0 * pow(Pe, 16); + 2205.0 / 2048.0 * pow(Pe, 8) + 72765.0 / 65536.0 * pow(Pe, 10) + + 297297.0 / 262144.0 * pow(Pe, 12) + 135270135.0 / 117440512.0 * pow(Pe, 14) + + 547521975.0 / 469762048.0 * pow(Pe, 16); - PC = (double)15.0 / 64.0 * pow(Pe, 4) + 105.0 / 256.0 * pow(Pe, 6) + 2205.0 / 4096.0 * pow(Pe, 8) + - 10395.0 / 16384.0 * pow(Pe, 10) + 1486485.0 / 2097152.0 * pow(Pe, 12) + 45090045.0 / 58720256.0 * pow(Pe, 14) + + PC = (double)15.0 / 64.0 * pow(Pe, 4) + 105.0 / 256.0 * pow(Pe, 6) + + 2205.0 / 4096.0 * pow(Pe, 8) + 10395.0 / 16384.0 * pow(Pe, 10) + + 1486485.0 / 2097152.0 * pow(Pe, 12) + 45090045.0 / 58720256.0 * pow(Pe, 14) + 766530765.0 / 939524096.0 * pow(Pe, 16); - PD = (double)35.0 / 512.0 * pow(Pe, 6) + 315.0 / 2048.0 * pow(Pe, 8) + 31185.0 / 131072.0 * pow(Pe, 10) + - 165165.0 / 524288.0 * pow(Pe, 12) + 45090045.0 / 117440512.0 * pow(Pe, 14) + - 209053845.0 / 469762048.0 * pow(Pe, 16); + PD = (double)35.0 / 512.0 * pow(Pe, 6) + 315.0 / 2048.0 * pow(Pe, 8) + + 31185.0 / 131072.0 * pow(Pe, 10) + 165165.0 / 524288.0 * pow(Pe, 12) + + 45090045.0 / 117440512.0 * pow(Pe, 14) + 209053845.0 / 469762048.0 * pow(Pe, 16); - PE = (double)315.0 / 16384.0 * pow(Pe, 8) + 3465.0 / 65536.0 * pow(Pe, 10) + 99099.0 / 1048576.0 * pow(Pe, 12) + - 4099095.0 / 29360128.0 * pow(Pe, 14) + 348423075.0 / 1879048192.0 * pow(Pe, 16); + PE = (double)315.0 / 16384.0 * pow(Pe, 8) + 3465.0 / 65536.0 * pow(Pe, 10) + + 99099.0 / 1048576.0 * pow(Pe, 12) + 4099095.0 / 29360128.0 * pow(Pe, 14) + + 348423075.0 / 1879048192.0 * pow(Pe, 16); PF = (double)693.0 / 131072.0 * pow(Pe, 10) + 9009.0 / 524288.0 * pow(Pe, 12) + 4099095.0 / 117440512.0 * pow(Pe, 14) + 26801775.0 / 469762048.0 * pow(Pe, 16); @@ -244,13 +208,13 @@ void ll2xy(int num, double llh[3], double xyz[3]) PB8 = (double)AW * (1.0 - pow(Pe, 2)) * PH / -14.0; PB9 = (double)AW * (1.0 - pow(Pe, 2)) * PI / 16.0; - PS = (double)PB1 * m_lat + PB2 * sin(2.0 * m_lat) + PB3 * sin(4.0 * m_lat) + PB4 * sin(6.0 * m_lat) + - PB5 * sin(8.0 * m_lat) + PB6 * sin(10.0 * m_lat) + PB7 * sin(12.0 * m_lat) + PB8 * sin(14.0 * m_lat) + - PB9 * sin(16.0 * m_lat); + PS = (double)PB1 * m_lat + PB2 * sin(2.0 * m_lat) + PB3 * sin(4.0 * m_lat) + + PB4 * sin(6.0 * m_lat) + PB5 * sin(8.0 * m_lat) + PB6 * sin(10.0 * m_lat) + + PB7 * sin(12.0 * m_lat) + PB8 * sin(14.0 * m_lat) + PB9 * sin(16.0 * m_lat); - PSo = (double)PB1 * m_PLato + PB2 * sin(2.0 * m_PLato) + PB3 * sin(4.0 * m_PLato) + PB4 * sin(6.0 * m_PLato) + - PB5 * sin(8.0 * m_PLato) + PB6 * sin(10.0 * m_PLato) + PB7 * sin(12.0 * m_PLato) + PB8 * sin(14.0 * m_PLato) + - PB9 * sin(16.0 * m_PLato); + PSo = (double)PB1 * m_PLato + PB2 * sin(2.0 * m_PLato) + PB3 * sin(4.0 * m_PLato) + + PB4 * sin(6.0 * m_PLato) + PB5 * sin(8.0 * m_PLato) + PB6 * sin(10.0 * m_PLato) + + PB7 * sin(12.0 * m_PLato) + PB8 * sin(14.0 * m_PLato) + PB9 * sin(16.0 * m_PLato); PDL = (double)m_lon - m_PLo; Pt = (double)tan(m_lat); @@ -260,27 +224,29 @@ void ll2xy(int num, double llh[3], double xyz[3]) m_x = (double)((PS - PSo) + (1.0 / 2.0) * PN * pow(cos(m_lat), 2.0) * Pt * pow(PDL, 2.0) + (1.0 / 24.0) * PN * pow(cos(m_lat), 4) * Pt * - (5.0 - pow(Pt, 2) + 9.0 * pow(Pnn, 2) + 4.0 * pow(Pnn, 4)) * pow(PDL, 4) - + (5.0 - pow(Pt, 2) + 9.0 * pow(Pnn, 2) + 4.0 * pow(Pnn, 4)) * pow(PDL, 4) - (1.0 / 720.0) * PN * pow(cos(m_lat), 6) * Pt * - (-61.0 + 58.0 * pow(Pt, 2) - pow(Pt, 4) - 270.0 * pow(Pnn, 2) + 330.0 * pow(Pt, 2) * pow(Pnn, 2)) * - pow(PDL, 6) - + (-61.0 + 58.0 * pow(Pt, 2) - pow(Pt, 4) - 270.0 * pow(Pnn, 2) + + 330.0 * pow(Pt, 2) * pow(Pnn, 2)) * + pow(PDL, 6) - (1.0 / 40320.0) * PN * pow(cos(m_lat), 8) * Pt * - (-1385.0 + 3111 * pow(Pt, 2) - 543 * pow(Pt, 4) + pow(Pt, 6)) * pow(PDL, 8)) * + (-1385.0 + 3111 * pow(Pt, 2) - 543 * pow(Pt, 4) + pow(Pt, 6)) * pow(PDL, 8)) * Pmo; - m_y = (double)(PN * cos(m_lat) * PDL - - 1.0 / 6.0 * PN * pow(cos(m_lat), 3) * (-1 + pow(Pt, 2) - pow(Pnn, 2)) * pow(PDL, 3) - - 1.0 / 120.0 * PN * pow(cos(m_lat), 5) * - (-5.0 + 18.0 * pow(Pt, 2) - pow(Pt, 4) - 14.0 * pow(Pnn, 2) + 58.0 * pow(Pt, 2) * pow(Pnn, 2)) * - pow(PDL, 5) - - 1.0 / 5040.0 * PN * pow(cos(m_lat), 7) * - (-61.0 + 479.0 * pow(Pt, 2) - 179.0 * pow(Pt, 4) + pow(Pt, 6)) * pow(PDL, 7)) * - Pmo; + m_y = + (double)(PN * cos(m_lat) * PDL - + 1.0 / 6.0 * PN * pow(cos(m_lat), 3) * (-1 + pow(Pt, 2) - pow(Pnn, 2)) * pow(PDL, 3) - + 1.0 / 120.0 * PN * pow(cos(m_lat), 5) * + (-5.0 + 18.0 * pow(Pt, 2) - pow(Pt, 4) - 14.0 * pow(Pnn, 2) + + 58.0 * pow(Pt, 2) * pow(Pnn, 2)) * + pow(PDL, 5) - + 1.0 / 5040.0 * PN * pow(cos(m_lat), 7) * + (-61.0 + 479.0 * pow(Pt, 2) - 179.0 * pow(Pt, 4) + pow(Pt, 6)) * pow(PDL, 7)) * + Pmo; m_z = m_h; -xyz[0] = m_x; -xyz[1] = m_y; -xyz[2] = m_z; - + xyz[0] = m_x; + xyz[1] = m_y; + xyz[2] = m_z; } diff --git a/eagleye_core/coordinate/src/ll2xy_mgrs.cpp b/eagleye_core/coordinate/src/ll2xy_mgrs.cpp index 37f01c91..3e218729 100644 --- a/eagleye_core/coordinate/src/ll2xy_mgrs.cpp +++ b/eagleye_core/coordinate/src/ll2xy_mgrs.cpp @@ -30,58 +30,38 @@ #include #include - - -int checkCrossBoader(std::string code_origin, std::string code_current, bool is_x) -{ - std::map mgrs_alphabet{ { "A", 0 }, { "B", 1 }, { "C", 2 }, { "D", 3 }, { "E", 4 }, - { "F", 5 }, { "G", 6 }, { "H", 7 }, { "J", 8 }, { "K", 9 }, - { "L", 10 }, { "M", 11 }, { "N", 12 }, { "P", 13 }, { "Q", 14 }, - { "R", 15 }, { "S", 16 }, { "T", 17 }, { "U", 18 }, { "V", 19 }, +int checkCrossBoader(std::string code_origin, std::string code_current, bool is_x) { + std::map mgrs_alphabet{ { "A", 0 }, { "B", 1 }, { "C", 2 }, { "D", 3 }, + { "E", 4 }, { "F", 5 }, { "G", 6 }, { "H", 7 }, + { "J", 8 }, { "K", 9 }, { "L", 10 }, { "M", 11 }, + { "N", 12 }, { "P", 13 }, { "Q", 14 }, { "R", 15 }, + { "S", 16 }, { "T", 17 }, { "U", 18 }, { "V", 19 }, { "W", 20 }, { "X", 21 }, { "Y", 22 }, { "Z", 23 } }; int diff = mgrs_alphabet[code_current] - mgrs_alphabet[code_origin]; //std::cout << "Straddling over 2 grids is not supported." << std::endl; - - if (is_x) - { - if (diff == -23 || diff == 1) - { + if (is_x) { + if (diff == -23 || diff == 1) { return 1; - } - else if (diff == 23 || diff == -1) - { + } else if (diff == 23 || diff == -1) { return -1; - } - else if (diff == 0) - { + } else if (diff == 0) { return 0; - } - else - { + } else { std::cerr << "Straddling over 2 grids is not supported." << std::endl; std::cerr << "Straddling: " << diff << std::endl; exit(4); } - } - else - { - if (diff == -19 || diff == 1) - { + } else { + if (diff == -19 || diff == 1) { return 1; - } - else if (diff == 19 || diff == -1) - { + } else if (diff == 19 || diff == -1) { return -1; - } - else if (diff == 0) - { + } else if (diff == 0) { return 0; - } - else - { + } else { std::cerr << "Straddling over 2 grids is not supported." << std::endl; std::cerr << "Straddling: " << diff << std::endl; exit(4); @@ -89,18 +69,16 @@ int checkCrossBoader(std::string code_origin, std::string code_current, bool is_ } } -void ll2xy_mgrs(double llh[3], double xyz[3]) -{ +void ll2xy_mgrs(double llh[3], double xyz[3]) { // north/south pole is not supported in MGRS - if (llh[0] >= 84 || llh[0] <= -80) - { + if (llh[0] >= 84 || llh[0] <= -80) { std::cerr << "Error: north and south pole is not supported in MGRS" << std::endl; exit(4); } geographic_msgs::msg::GeoPoint wgs_point; - wgs_point.latitude = llh[0]*180/M_PI; - wgs_point.longitude = llh[1]*180/M_PI; + wgs_point.latitude = llh[0] * 180 / M_PI; + wgs_point.longitude = llh[1] * 180 / M_PI; //wgs_point.latitude = llh[0]; //wgs_point.longitude = llh[1]; wgs_point.altitude = llh[2]; @@ -108,7 +86,6 @@ void ll2xy_mgrs(double llh[3], double xyz[3]) // std::cout << wgs_point.latitude << std::endl; // std::cout << wgs_point.longitude << std::endl; - geodesy::UTMPoint utm_point; geodesy::fromMsg(wgs_point, utm_point); @@ -119,8 +96,7 @@ void ll2xy_mgrs(double llh[3], double xyz[3]) int group = utm_point.zone % 6; int easting_letter_offset = 0; int northing_letter_offset = 0; - switch (group) - { + switch (group) { case 1: easting_letter_offset = 0; // A northing_letter_offset = 0; // A @@ -147,15 +123,15 @@ void ll2xy_mgrs(double llh[3], double xyz[3]) break; } - int easting_idx = - (int)(utm_point.easting / 1e5) + easting_letter_offset - 1; // subtract -1 so that letter starts from A + int easting_idx = (int)(utm_point.easting / 1e5) + easting_letter_offset - + 1; // subtract -1 so that letter starts from A char easting_letter = easting_letters.at(easting_idx); int northing_idx = (int)(fmod(utm_point.northing, 2e6)) / 1e5 + northing_letter_offset; northing_idx = northing_idx % northing_letters.size(); char northing_letter = northing_letters.at(northing_idx); - double m_x,m_y,m_z; + double m_x, m_y, m_z; m_x = fmod(utm_point.easting, 1e5); m_y = fmod(utm_point.northing, 1e5); @@ -167,22 +143,16 @@ void ll2xy_mgrs(double llh[3], double xyz[3]) bool use_origin_zone = false; bool is_first = true; - - std::stringstream ss; ss << (int)utm_point.zone << utm_point.band << easting_letter << northing_letter; m_mgrs_zone = ss.str(); - if (use_origin_zone) - { - if (is_first) - { + if (use_origin_zone) { + if (is_first) { origin_x_zone = m_mgrs_zone.substr(3, 1); origin_y_zone = m_mgrs_zone.substr(4, 1); is_first = false; - } - else - { + } else { std::string mgrs_x_zone = m_mgrs_zone.substr(3, 1); std::string mgrs_y_zone = m_mgrs_zone.substr(4, 1); @@ -194,6 +164,4 @@ void ll2xy_mgrs(double llh[3], double xyz[3]) xyz[1] = m_x; xyz[0] = m_y; xyz[2] = m_z; - - } diff --git a/eagleye_core/coordinate/src/llh2xyz.cpp b/eagleye_core/coordinate/src/llh2xyz.cpp index 6d57faf9..98efb604 100644 --- a/eagleye_core/coordinate/src/llh2xyz.cpp +++ b/eagleye_core/coordinate/src/llh2xyz.cpp @@ -26,8 +26,7 @@ #include "eagleye_coordinate/eagleye_coordinate.hpp" #include -void llh2xyz(double llh_pos[3], double ecef_pos[3]) -{ +void llh2xyz(double llh_pos[3], double ecef_pos[3]) { double semi_major_axis = 6378137.0000; double semi_minor_axis = 6356752.3142; double a1 = sqrt(1 - pow((semi_minor_axis / semi_major_axis), 2.0)); diff --git a/eagleye_core/coordinate/src/xyz2enu.cpp b/eagleye_core/coordinate/src/xyz2enu.cpp index b4bedb95..305c37fa 100644 --- a/eagleye_core/coordinate/src/xyz2enu.cpp +++ b/eagleye_core/coordinate/src/xyz2enu.cpp @@ -26,12 +26,18 @@ #include "eagleye_coordinate/eagleye_coordinate.hpp" #include - -void xyz2enu(double ecef_pos[3], double ecef_base_pos[3], double enu_pos[3]) -{ +void xyz2enu(double ecef_pos[3], double ecef_base_pos[3], double enu_pos[3]) { double llh_base_pos[3]; - ecef2llh(ecef_base_pos,llh_base_pos); - enu_pos[0] = ((-(sin(llh_base_pos[1])) * (ecef_pos[0] - ecef_base_pos[0])) + ((cos(llh_base_pos[1])) * (ecef_pos[1] - ecef_base_pos[1])) + (0 * (ecef_pos[2] - ecef_base_pos[2]))); - enu_pos[1] = ((-(sin(llh_base_pos[0])) * (cos(llh_base_pos[1])) * (ecef_pos[0] - ecef_base_pos[0])) + (-(sin(llh_base_pos[0])) * (sin(llh_base_pos[1])) * (ecef_pos[1] - ecef_base_pos[1])) + ((cos(llh_base_pos[0])) * (ecef_pos[2] - ecef_base_pos[2]))); - enu_pos[2] = (((cos(llh_base_pos[0])) * (cos(llh_base_pos[1])) * (ecef_pos[0] - ecef_base_pos[0])) + ((cos(llh_base_pos[0])) * (sin(llh_base_pos[1])) * (ecef_pos[1] - ecef_base_pos[1])) + ((sin(llh_base_pos[0])) * (ecef_pos[2] - ecef_base_pos[2]))); + ecef2llh(ecef_base_pos, llh_base_pos); + enu_pos[0] = ((-(sin(llh_base_pos[1])) * (ecef_pos[0] - ecef_base_pos[0])) + + ((cos(llh_base_pos[1])) * (ecef_pos[1] - ecef_base_pos[1])) + + (0 * (ecef_pos[2] - ecef_base_pos[2]))); + enu_pos[1] = + ((-(sin(llh_base_pos[0])) * (cos(llh_base_pos[1])) * (ecef_pos[0] - ecef_base_pos[0])) + + (-(sin(llh_base_pos[0])) * (sin(llh_base_pos[1])) * (ecef_pos[1] - ecef_base_pos[1])) + + ((cos(llh_base_pos[0])) * (ecef_pos[2] - ecef_base_pos[2]))); + enu_pos[2] = + (((cos(llh_base_pos[0])) * (cos(llh_base_pos[1])) * (ecef_pos[0] - ecef_base_pos[0])) + + ((cos(llh_base_pos[0])) * (sin(llh_base_pos[1])) * (ecef_pos[1] - ecef_base_pos[1])) + + ((sin(llh_base_pos[0])) * (ecef_pos[2] - ecef_base_pos[2]))); } diff --git a/eagleye_core/coordinate/src/xyz2enu_vel.cpp b/eagleye_core/coordinate/src/xyz2enu_vel.cpp index f2347670..56f2516d 100644 --- a/eagleye_core/coordinate/src/xyz2enu_vel.cpp +++ b/eagleye_core/coordinate/src/xyz2enu_vel.cpp @@ -26,12 +26,14 @@ #include "eagleye_coordinate/eagleye_coordinate.hpp" #include - -void xyz2enu_vel(double ecef_vel[3], double ecef_base_pos[3], double enu_vel[3]) -{ +void xyz2enu_vel(double ecef_vel[3], double ecef_base_pos[3], double enu_vel[3]) { double llh_base_pos[3]; ecef2llh(ecef_base_pos, llh_base_pos); enu_vel[0] = (-ecef_vel[0] * (sin(llh_base_pos[1]))) + (ecef_vel[1] * (cos(llh_base_pos[1]))); - enu_vel[1] = (-ecef_vel[0] * (cos(llh_base_pos[1])) * (sin(llh_base_pos[0]))) - (ecef_vel[1] * (sin(llh_base_pos[1])) * (sin(llh_base_pos[0]))) + (ecef_vel[2] * (cos(llh_base_pos[0]))); - enu_vel[2] = (ecef_vel[0] * (cos(llh_base_pos[1])) * (cos(llh_base_pos[0]))) + (ecef_vel[1] * (sin(llh_base_pos[1])) * (cos(llh_base_pos[0]))) + (ecef_vel[2] * (sin(llh_base_pos[0]))); + enu_vel[1] = (-ecef_vel[0] * (cos(llh_base_pos[1])) * (sin(llh_base_pos[0]))) - + (ecef_vel[1] * (sin(llh_base_pos[1])) * (sin(llh_base_pos[0]))) + + (ecef_vel[2] * (cos(llh_base_pos[0]))); + enu_vel[2] = (ecef_vel[0] * (cos(llh_base_pos[1])) * (cos(llh_base_pos[0]))) + + (ecef_vel[1] * (sin(llh_base_pos[1])) * (cos(llh_base_pos[0]))) + + (ecef_vel[2] * (sin(llh_base_pos[0]))); } diff --git a/eagleye_core/navigation/include/eagleye_navigation/eagleye_navigation.hpp b/eagleye_core/navigation/include/eagleye_navigation/eagleye_navigation.hpp index 9c198e66..16cfc4e2 100644 --- a/eagleye_core/navigation/include/eagleye_navigation/eagleye_navigation.hpp +++ b/eagleye_core/navigation/include/eagleye_navigation/eagleye_navigation.hpp @@ -68,19 +68,17 @@ #ifndef NAVIGATION_H #define NAVIGATION_H -struct VelocityScaleFactorParameter -{ +struct VelocityScaleFactorParameter { double imu_rate; double gnss_rate; double moving_judgment_threshold; double estimated_minimum_interval; double estimated_maximum_interval; double gnss_receiving_threshold; - bool save_velocity_scale_factor{false}; + bool save_velocity_scale_factor{ false }; }; -struct VelocityScaleFactorStatus -{ +struct VelocityScaleFactorStatus { std::vector gnss_status_buffer; std::vector doppler_velocity_buffer; std::vector velocity_buffer; @@ -90,29 +88,25 @@ struct VelocityScaleFactorStatus bool estimate_start_status; }; -struct DistanceStatus -{ +struct DistanceStatus { double time_last; }; -struct YawrateOffsetStopParameter -{ +struct YawrateOffsetStopParameter { double imu_rate; double estimated_interval; double stop_judgment_threshold; double outlier_threshold; }; -struct YawrateOffsetStopStatus -{ +struct YawrateOffsetStopStatus { int stop_count; double yaw_rate_offset_stop_last; bool estimate_start_status; std::vector yaw_rate_buffer; }; -struct YawrateOffsetParameter -{ +struct YawrateOffsetParameter { double imu_rate; double gnss_rate; double moving_judgment_threshold; @@ -122,9 +116,7 @@ struct YawrateOffsetParameter double outlier_threshold; }; - -struct YawrateOffsetStatus -{ +struct YawrateOffsetStatus { bool estimate_start_status; int estimated_preparation_conditions; int heading_estimate_status_count; @@ -137,8 +129,7 @@ struct YawrateOffsetStatus std::vector yaw_rate_offset_stop_buffer; }; -struct HeadingParameter -{ +struct HeadingParameter { double imu_rate; double gnss_rate; double stop_judgment_threshold; @@ -152,8 +143,7 @@ struct HeadingParameter double init_STD; }; -struct HeadingStatus -{ +struct HeadingStatus { int tow_last; double rmc_time_last; double ros_time_last; @@ -168,8 +158,7 @@ struct HeadingStatus std::vector gnss_status_buffer; }; -struct RtkHeadingParameter -{ +struct RtkHeadingParameter { double imu_rate; double gnss_rate; double stop_judgment_threshold; @@ -183,8 +172,7 @@ struct RtkHeadingParameter double curve_judgment_threshold; }; -struct RtkHeadingStatus -{ +struct RtkHeadingStatus { int tow_last; double rmc_time_last; int estimated_number; @@ -204,16 +192,14 @@ struct RtkHeadingStatus std::vector gga_status_buffer; }; -struct HeadingInterpolateParameter -{ +struct HeadingInterpolateParameter { double imu_rate; double stop_judgment_threshold; double sync_search_period; double proc_noise; }; -struct HeadingInterpolateStatus -{ +struct HeadingInterpolateStatus { int number_buffer; int heading_estimate_status_count; bool heading_estimate_start_status; @@ -225,8 +211,7 @@ struct HeadingInterpolateStatus double heading_variance_last; }; -struct PositionParameter -{ +struct PositionParameter { double ecef_base_pos_x; double ecef_base_pos_y; double ecef_base_pos_z; @@ -251,8 +236,7 @@ struct PositionParameter double gnss_error_covariance; }; -struct PositionStatus -{ +struct PositionStatus { int estimated_number; int tow_last; int heading_estimate_status_count; @@ -262,27 +246,25 @@ struct PositionStatus double distance_last; double enu_pos[3]; bool gnss_update_failure; - std::vector enu_pos_x_buffer, enu_pos_y_buffer, enu_pos_z_buffer; - std::vector enu_relative_pos_x_buffer, enu_relative_pos_y_buffer, enu_relative_pos_z_buffer; + std::vector enu_pos_x_buffer, enu_pos_y_buffer, enu_pos_z_buffer; + std::vector enu_relative_pos_x_buffer, enu_relative_pos_y_buffer, + enu_relative_pos_z_buffer; std::vector correction_velocity_buffer; std::vector distance_buffer; }; -struct PositionInterpolateParameter -{ +struct PositionInterpolateParameter { double imu_rate; double stop_judgment_threshold; double sync_search_period; double proc_noise; }; - -struct PositionInterpolateStatus -{ +struct PositionInterpolateStatus { int position_estimate_status_count; int number_buffer; bool position_estimate_start_status; - bool is_estimate_start{false}; + bool is_estimate_start{ false }; double position_stamp_last; double time_last; double provisional_enu_pos_x; @@ -295,14 +277,12 @@ struct PositionInterpolateStatus Eigen::MatrixXd position_covariance_last; }; -struct SlipangleParameter -{ +struct SlipangleParameter { double manual_coefficient; double stop_judgment_threshold; }; -struct SlipCoefficientParameter -{ +struct SlipCoefficientParameter { double imu_rate; double estimated_minimum_interval; double estimated_maximum_interval; @@ -312,15 +292,13 @@ struct SlipCoefficientParameter double lever_arm; }; -struct SlipCoefficientStatus -{ +struct SlipCoefficientStatus { double heading_estimate_status_count; std::vector doppler_slip_buffer; std::vector acceleration_y_buffer; }; -struct SmoothingParameter -{ +struct SmoothingParameter { double gnss_rate; double moving_judgment_threshold; double moving_average_time; @@ -330,17 +308,15 @@ struct SmoothingParameter double ecef_base_pos_z; }; -struct SmoothingStatus -{ +struct SmoothingStatus { int estimated_number; double last_pos[3]; std::vector time_buffer; - std::vector enu_pos_x_buffer, enu_pos_y_buffer, enu_pos_z_buffer; + std::vector enu_pos_x_buffer, enu_pos_y_buffer, enu_pos_z_buffer; std::vector correction_velocity_buffer; }; -struct TrajectoryParameter -{ +struct TrajectoryParameter { double stop_judgment_threshold; double curve_judgment_threshold; double sensor_noise_velocity; @@ -349,15 +325,13 @@ struct TrajectoryParameter double sensor_bias_noise_yaw_rate; }; -struct TrajectoryStatus -{ +struct TrajectoryStatus { int estimate_status_count; double heading_last; double time_last; }; -struct HeightParameter -{ +struct HeightParameter { double imu_rate; double gnss_rate; double moving_judgment_threshold; @@ -370,8 +344,7 @@ struct HeightParameter double moving_average_time; }; -struct HeightStatus -{ +struct HeightStatus { double relative_height_G; double relative_height_diffvel; double relative_height_offset; @@ -400,16 +373,14 @@ struct HeightStatus std::vector acc_buffer; }; -struct AngularVelocityOffsetStopParameter -{ +struct AngularVelocityOffsetStopParameter { double imu_rate; double estimated_interval; double stop_judgment_threshold; double outlier_threshold; }; -struct AngularVelocityOffsetStopStatus -{ +struct AngularVelocityOffsetStopStatus { int stop_count; double rollrate_offset_stop_last; double pitch_rate_offset_stop_last; @@ -420,8 +391,7 @@ struct AngularVelocityOffsetStopStatus std::vector yaw_rate_buffer; }; -struct RtkDeadreckoningParameter -{ +struct RtkDeadreckoningParameter { double stop_judgment_threshold; double ecef_base_pos_x; double ecef_base_pos_y; @@ -440,8 +410,7 @@ struct RtkDeadreckoningParameter double proc_noise; }; -struct RtkDeadreckoningStatus -{ +struct RtkDeadreckoningStatus { int position_estimate_status_count; int number_buffer; bool position_estimate_start_status; @@ -458,8 +427,7 @@ struct RtkDeadreckoningStatus Eigen::MatrixXd position_covariance_last; }; -struct EnableAdditionalRollingParameter -{ +struct EnableAdditionalRollingParameter { double imu_rate; double stop_judgment_threshold; double update_distance; @@ -468,8 +436,7 @@ struct EnableAdditionalRollingParameter double sync_search_period; }; -struct EnableAdditionalRollingStatus -{ +struct EnableAdditionalRollingStatus { double distance_last; double acc_offset_sum; double yaw_rate; @@ -489,275 +456,339 @@ struct EnableAdditionalRollingStatus std::vector distance_buffer; }; -struct RollingParameter -{ +struct RollingParameter { double stop_judgment_threshold; double filter_process_noise; double filter_observation_noise; }; -struct RollingStatus -{ +struct RollingStatus { double acceleration_y_last; double acceleration_y_variance_last; double rolling_last; bool data_status; }; -extern void velocity_scale_factor_estimate(const rtklib_msgs::msg::RtklibNav, const geometry_msgs::msg::TwistStamped, const VelocityScaleFactorParameter, - VelocityScaleFactorStatus*, geometry_msgs::msg::TwistStamped*, eagleye_msgs::msg::VelocityScaleFactor*); -extern void velocity_scale_factor_estimate(const nmea_msgs::msg::Gprmc, const geometry_msgs::msg::TwistStamped, const VelocityScaleFactorParameter, - VelocityScaleFactorStatus*, geometry_msgs::msg::TwistStamped*, eagleye_msgs::msg::VelocityScaleFactor*); -extern void distance_estimate(const geometry_msgs::msg::TwistStamped, DistanceStatus*, eagleye_msgs::msg::Distance*); -extern void yaw_rate_offset_stop_estimate(const geometry_msgs::msg::TwistStamped, const sensor_msgs::msg::Imu, const YawrateOffsetStopParameter, - YawrateOffsetStopStatus*, eagleye_msgs::msg::YawrateOffset*); -extern void yaw_rate_offset_estimate(const geometry_msgs::msg::TwistStamped, const eagleye_msgs::msg::YawrateOffset,const eagleye_msgs::msg::Heading, - const sensor_msgs::msg::Imu, const YawrateOffsetParameter, YawrateOffsetStatus*, eagleye_msgs::msg::YawrateOffset*); -extern void heading_estimate(const rtklib_msgs::msg::RtklibNav, const sensor_msgs::msg::Imu, const geometry_msgs::msg::TwistStamped, - const eagleye_msgs::msg::YawrateOffset, const eagleye_msgs::msg::YawrateOffset, const eagleye_msgs::msg::SlipAngle, const eagleye_msgs::msg::Heading, - const HeadingParameter, HeadingStatus*,eagleye_msgs::msg::Heading*); -extern void heading_estimate(const nmea_msgs::msg::Gprmc, const sensor_msgs::msg::Imu, const geometry_msgs::msg::TwistStamped, - const eagleye_msgs::msg::YawrateOffset, const eagleye_msgs::msg::YawrateOffset, const eagleye_msgs::msg::SlipAngle, const eagleye_msgs::msg::Heading, - const HeadingParameter, HeadingStatus*,eagleye_msgs::msg::Heading*); -extern void heading_estimate(const eagleye_msgs::msg::Heading, const sensor_msgs::msg::Imu, const geometry_msgs::msg::TwistStamped, const eagleye_msgs::msg::YawrateOffset, - const eagleye_msgs::msg::YawrateOffset, const eagleye_msgs::msg::SlipAngle, const eagleye_msgs::msg::Heading, const HeadingParameter, HeadingStatus*,eagleye_msgs::msg::Heading*); -extern void position_estimate(const rtklib_msgs::msg::RtklibNav, const geometry_msgs::msg::TwistStamped, const eagleye_msgs::msg::StatusStamped, - const eagleye_msgs::msg::Distance, const eagleye_msgs::msg::Heading, const geometry_msgs::msg::Vector3Stamped, const PositionParameter, PositionStatus*, - eagleye_msgs::msg::Position*); -extern void position_estimate(const nmea_msgs::msg::Gpgga, const geometry_msgs::msg::TwistStamped, const eagleye_msgs::msg::StatusStamped, const eagleye_msgs::msg::Distance, - const eagleye_msgs::msg::Heading, const geometry_msgs::msg::Vector3Stamped, const PositionParameter, PositionStatus*, eagleye_msgs::msg::Position*); -extern void slip_angle_estimate(const sensor_msgs::msg::Imu, const geometry_msgs::msg::TwistStamped, const eagleye_msgs::msg::StatusStamped, - const eagleye_msgs::msg::YawrateOffset, const eagleye_msgs::msg::YawrateOffset,const SlipangleParameter,eagleye_msgs::msg::SlipAngle*); -extern void slip_coefficient_estimate(const sensor_msgs::msg::Imu, const rtklib_msgs::msg::RtklibNav,const geometry_msgs::msg::TwistStamped, - const eagleye_msgs::msg::YawrateOffset,const eagleye_msgs::msg::YawrateOffset,const eagleye_msgs::msg::Heading,const SlipCoefficientParameter, - SlipCoefficientStatus*,double*); -extern void smoothing_estimate(const rtklib_msgs::msg::RtklibNav,const geometry_msgs::msg::TwistStamped,const SmoothingParameter,SmoothingStatus*, - eagleye_msgs::msg::Position*); -extern void trajectory_estimate(const sensor_msgs::msg::Imu, const geometry_msgs::msg::TwistStamped, const eagleye_msgs::msg::StatusStamped, - const eagleye_msgs::msg::Heading, const eagleye_msgs::msg::YawrateOffset,const eagleye_msgs::msg::YawrateOffset,const TrajectoryParameter,TrajectoryStatus*, - geometry_msgs::msg::Vector3Stamped*,eagleye_msgs::msg::Position*,geometry_msgs::msg::TwistStamped*,geometry_msgs::msg::TwistWithCovarianceStamped*); -extern void heading_interpolate_estimate(const sensor_msgs::msg::Imu, const geometry_msgs::msg::TwistStamped, - const eagleye_msgs::msg::YawrateOffset,const eagleye_msgs::msg::YawrateOffset, const eagleye_msgs::msg::Heading, const eagleye_msgs::msg::SlipAngle, - const HeadingInterpolateParameter,HeadingInterpolateStatus*, eagleye_msgs::msg::Heading*); -extern void position_interpolate_estimate(const eagleye_msgs::msg::Position, const geometry_msgs::msg::Vector3Stamped, const eagleye_msgs::msg::Position, - const eagleye_msgs::msg::Height,const eagleye_msgs::msg::Heading, const PositionInterpolateParameter, PositionInterpolateStatus*,eagleye_msgs::msg::Position*,sensor_msgs::msg::NavSatFix*); -extern void pitching_estimate(const sensor_msgs::msg::Imu, const nmea_msgs::msg::Gpgga, const geometry_msgs::msg::TwistStamped, - const eagleye_msgs::msg::Distance,const HeightParameter,HeightStatus*,eagleye_msgs::msg::Height*,eagleye_msgs::msg::Pitching*,eagleye_msgs::msg::AccXOffset*, - eagleye_msgs::msg::AccXScaleFactor*); -extern void trajectory3d_estimate(const sensor_msgs::msg::Imu, const geometry_msgs::msg::TwistStamped, const eagleye_msgs::msg::StatusStamped, const eagleye_msgs::msg::Heading, - const eagleye_msgs::msg::YawrateOffset,const eagleye_msgs::msg::YawrateOffset,const eagleye_msgs::msg::Pitching,const TrajectoryParameter,TrajectoryStatus*, - geometry_msgs::msg::Vector3Stamped*,eagleye_msgs::msg::Position*,geometry_msgs::msg::TwistStamped*,geometry_msgs::msg::TwistWithCovarianceStamped*); -extern void angular_velocity_offset_stop_estimate(const geometry_msgs::msg::TwistStamped, const sensor_msgs::msg::Imu, - const AngularVelocityOffsetStopParameter, AngularVelocityOffsetStopStatus*, eagleye_msgs::msg::AngularVelocityOffset*); -extern void rtk_dead_reckoning_estimate(const rtklib_msgs::msg::RtklibNav,const geometry_msgs::msg::Vector3Stamped,const nmea_msgs::msg::Gpgga, - const eagleye_msgs::msg::Heading,const RtkDeadreckoningParameter,RtkDeadreckoningStatus*,eagleye_msgs::msg::Position*,sensor_msgs::msg::NavSatFix*); -extern void rtk_dead_reckoning_estimate(const geometry_msgs::msg::Vector3Stamped,const nmea_msgs::msg::Gpgga, const eagleye_msgs::msg::Heading, - const RtkDeadreckoningParameter,RtkDeadreckoningStatus*,eagleye_msgs::msg::Position*,sensor_msgs::msg::NavSatFix*); -extern void rtk_heading_estimate(const nmea_msgs::msg::Gpgga, const sensor_msgs::msg::Imu, const geometry_msgs::msg::TwistStamped, - const eagleye_msgs::msg::Distance,const eagleye_msgs::msg::YawrateOffset, const eagleye_msgs::msg::YawrateOffset, const eagleye_msgs::msg::SlipAngle, - const eagleye_msgs::msg::Heading, const RtkHeadingParameter, RtkHeadingStatus*,eagleye_msgs::msg::Heading*); -extern void enable_additional_rolling_estimate(const geometry_msgs::msg::TwistStamped, const eagleye_msgs::msg::StatusStamped, - const eagleye_msgs::msg::YawrateOffset ,const eagleye_msgs::msg::YawrateOffset, const eagleye_msgs::msg::Distance, - const sensor_msgs::msg::Imu,const geometry_msgs::msg::PoseStamped,const eagleye_msgs::msg::AngularVelocityOffset, - const EnableAdditionalRollingParameter,EnableAdditionalRollingStatus*,eagleye_msgs::msg::Rolling*,eagleye_msgs::msg::AccYOffset*); -extern void rolling_estimate(const sensor_msgs::msg::Imu,const geometry_msgs::msg::TwistStamped,const eagleye_msgs::msg::YawrateOffset ,const eagleye_msgs::msg::YawrateOffset, - const RollingParameter,RollingStatus*,eagleye_msgs::msg::Rolling*); - -class VelocityEstimator -{ +extern void velocity_scale_factor_estimate(const rtklib_msgs::msg::RtklibNav, + const geometry_msgs::msg::TwistStamped, + const VelocityScaleFactorParameter, + VelocityScaleFactorStatus*, + geometry_msgs::msg::TwistStamped*, + eagleye_msgs::msg::VelocityScaleFactor*); +extern void velocity_scale_factor_estimate(const nmea_msgs::msg::Gprmc, + const geometry_msgs::msg::TwistStamped, + const VelocityScaleFactorParameter, + VelocityScaleFactorStatus*, + geometry_msgs::msg::TwistStamped*, + eagleye_msgs::msg::VelocityScaleFactor*); +extern void distance_estimate(const geometry_msgs::msg::TwistStamped, DistanceStatus*, + eagleye_msgs::msg::Distance*); +extern void yaw_rate_offset_stop_estimate(const geometry_msgs::msg::TwistStamped, + const sensor_msgs::msg::Imu, + const YawrateOffsetStopParameter, + YawrateOffsetStopStatus*, + eagleye_msgs::msg::YawrateOffset*); +extern void yaw_rate_offset_estimate(const geometry_msgs::msg::TwistStamped, + const eagleye_msgs::msg::YawrateOffset, + const eagleye_msgs::msg::Heading, const sensor_msgs::msg::Imu, + const YawrateOffsetParameter, YawrateOffsetStatus*, + eagleye_msgs::msg::YawrateOffset*); +extern void heading_estimate(const rtklib_msgs::msg::RtklibNav, const sensor_msgs::msg::Imu, + const geometry_msgs::msg::TwistStamped, + const eagleye_msgs::msg::YawrateOffset, + const eagleye_msgs::msg::YawrateOffset, + const eagleye_msgs::msg::SlipAngle, const eagleye_msgs::msg::Heading, + const HeadingParameter, HeadingStatus*, eagleye_msgs::msg::Heading*); +extern void heading_estimate(const nmea_msgs::msg::Gprmc, const sensor_msgs::msg::Imu, + const geometry_msgs::msg::TwistStamped, + const eagleye_msgs::msg::YawrateOffset, + const eagleye_msgs::msg::YawrateOffset, + const eagleye_msgs::msg::SlipAngle, const eagleye_msgs::msg::Heading, + const HeadingParameter, HeadingStatus*, eagleye_msgs::msg::Heading*); +extern void heading_estimate(const eagleye_msgs::msg::Heading, const sensor_msgs::msg::Imu, + const geometry_msgs::msg::TwistStamped, + const eagleye_msgs::msg::YawrateOffset, + const eagleye_msgs::msg::YawrateOffset, + const eagleye_msgs::msg::SlipAngle, const eagleye_msgs::msg::Heading, + const HeadingParameter, HeadingStatus*, eagleye_msgs::msg::Heading*); +extern void position_estimate(const rtklib_msgs::msg::RtklibNav, + const geometry_msgs::msg::TwistStamped, + const eagleye_msgs::msg::StatusStamped, + const eagleye_msgs::msg::Distance, const eagleye_msgs::msg::Heading, + const geometry_msgs::msg::Vector3Stamped, const PositionParameter, + PositionStatus*, eagleye_msgs::msg::Position*); +extern void position_estimate(const nmea_msgs::msg::Gpgga, const geometry_msgs::msg::TwistStamped, + const eagleye_msgs::msg::StatusStamped, + const eagleye_msgs::msg::Distance, const eagleye_msgs::msg::Heading, + const geometry_msgs::msg::Vector3Stamped, const PositionParameter, + PositionStatus*, eagleye_msgs::msg::Position*); +extern void slip_angle_estimate(const sensor_msgs::msg::Imu, const geometry_msgs::msg::TwistStamped, + const eagleye_msgs::msg::StatusStamped, + const eagleye_msgs::msg::YawrateOffset, + const eagleye_msgs::msg::YawrateOffset, const SlipangleParameter, + eagleye_msgs::msg::SlipAngle*); +extern void slip_coefficient_estimate( + const sensor_msgs::msg::Imu, const rtklib_msgs::msg::RtklibNav, + const geometry_msgs::msg::TwistStamped, const eagleye_msgs::msg::YawrateOffset, + const eagleye_msgs::msg::YawrateOffset, const eagleye_msgs::msg::Heading, + const SlipCoefficientParameter, SlipCoefficientStatus*, double*); +extern void smoothing_estimate(const rtklib_msgs::msg::RtklibNav, + const geometry_msgs::msg::TwistStamped, const SmoothingParameter, + SmoothingStatus*, eagleye_msgs::msg::Position*); +extern void trajectory_estimate(const sensor_msgs::msg::Imu, const geometry_msgs::msg::TwistStamped, + const eagleye_msgs::msg::StatusStamped, + const eagleye_msgs::msg::Heading, + const eagleye_msgs::msg::YawrateOffset, + const eagleye_msgs::msg::YawrateOffset, const TrajectoryParameter, + TrajectoryStatus*, geometry_msgs::msg::Vector3Stamped*, + eagleye_msgs::msg::Position*, geometry_msgs::msg::TwistStamped*, + geometry_msgs::msg::TwistWithCovarianceStamped*); +extern void heading_interpolate_estimate( + const sensor_msgs::msg::Imu, const geometry_msgs::msg::TwistStamped, + const eagleye_msgs::msg::YawrateOffset, const eagleye_msgs::msg::YawrateOffset, + const eagleye_msgs::msg::Heading, const eagleye_msgs::msg::SlipAngle, + const HeadingInterpolateParameter, HeadingInterpolateStatus*, eagleye_msgs::msg::Heading*); +extern void position_interpolate_estimate( + const eagleye_msgs::msg::Position, const geometry_msgs::msg::Vector3Stamped, + const eagleye_msgs::msg::Position, const eagleye_msgs::msg::Height, + const eagleye_msgs::msg::Heading, const PositionInterpolateParameter, PositionInterpolateStatus*, + eagleye_msgs::msg::Position*, sensor_msgs::msg::NavSatFix*); +extern void pitching_estimate(const sensor_msgs::msg::Imu, const nmea_msgs::msg::Gpgga, + const geometry_msgs::msg::TwistStamped, + const eagleye_msgs::msg::Distance, const HeightParameter, + HeightStatus*, eagleye_msgs::msg::Height*, + eagleye_msgs::msg::Pitching*, eagleye_msgs::msg::AccXOffset*, + eagleye_msgs::msg::AccXScaleFactor*); +extern void trajectory3d_estimate( + const sensor_msgs::msg::Imu, const geometry_msgs::msg::TwistStamped, + const eagleye_msgs::msg::StatusStamped, const eagleye_msgs::msg::Heading, + const eagleye_msgs::msg::YawrateOffset, const eagleye_msgs::msg::YawrateOffset, + const eagleye_msgs::msg::Pitching, const TrajectoryParameter, TrajectoryStatus*, + geometry_msgs::msg::Vector3Stamped*, eagleye_msgs::msg::Position*, + geometry_msgs::msg::TwistStamped*, geometry_msgs::msg::TwistWithCovarianceStamped*); +extern void angular_velocity_offset_stop_estimate(const geometry_msgs::msg::TwistStamped, + const sensor_msgs::msg::Imu, + const AngularVelocityOffsetStopParameter, + AngularVelocityOffsetStopStatus*, + eagleye_msgs::msg::AngularVelocityOffset*); +extern void rtk_dead_reckoning_estimate(const rtklib_msgs::msg::RtklibNav, + const geometry_msgs::msg::Vector3Stamped, + const nmea_msgs::msg::Gpgga, + const eagleye_msgs::msg::Heading, + const RtkDeadreckoningParameter, RtkDeadreckoningStatus*, + eagleye_msgs::msg::Position*, sensor_msgs::msg::NavSatFix*); +extern void rtk_dead_reckoning_estimate(const geometry_msgs::msg::Vector3Stamped, + const nmea_msgs::msg::Gpgga, + const eagleye_msgs::msg::Heading, + const RtkDeadreckoningParameter, RtkDeadreckoningStatus*, + eagleye_msgs::msg::Position*, sensor_msgs::msg::NavSatFix*); +extern void rtk_heading_estimate(const nmea_msgs::msg::Gpgga, const sensor_msgs::msg::Imu, + const geometry_msgs::msg::TwistStamped, + const eagleye_msgs::msg::Distance, + const eagleye_msgs::msg::YawrateOffset, + const eagleye_msgs::msg::YawrateOffset, + const eagleye_msgs::msg::SlipAngle, + const eagleye_msgs::msg::Heading, const RtkHeadingParameter, + RtkHeadingStatus*, eagleye_msgs::msg::Heading*); +extern void enable_additional_rolling_estimate( + const geometry_msgs::msg::TwistStamped, const eagleye_msgs::msg::StatusStamped, + const eagleye_msgs::msg::YawrateOffset, const eagleye_msgs::msg::YawrateOffset, + const eagleye_msgs::msg::Distance, const sensor_msgs::msg::Imu, + const geometry_msgs::msg::PoseStamped, const eagleye_msgs::msg::AngularVelocityOffset, + const EnableAdditionalRollingParameter, EnableAdditionalRollingStatus*, + eagleye_msgs::msg::Rolling*, eagleye_msgs::msg::AccYOffset*); +extern void rolling_estimate(const sensor_msgs::msg::Imu, const geometry_msgs::msg::TwistStamped, + const eagleye_msgs::msg::YawrateOffset, + const eagleye_msgs::msg::YawrateOffset, const RollingParameter, + RollingStatus*, eagleye_msgs::msg::Rolling*); + +class VelocityEstimator { +public: + VelocityEstimator(); + + // Parameter setting + void setParam(std::string yaml_file); + + // Main estimate function + void VelocityEstimate(const sensor_msgs::msg::Imu, const rtklib_msgs::msg::RtklibNav, + const nmea_msgs::msg::Gpgga, geometry_msgs::msg::TwistStamped*); + + eagleye_msgs::msg::Status getStatus(); + +private: + class PitchrateOffsetStopEstimator { public: - VelocityEstimator(); + PitchrateOffsetStopEstimator(); - // Parameter setting void setParam(std::string yaml_file); + bool PitchrateOffsetStopEstimate(double pitch_rate, double stop_status); - // Main estimate function - void VelocityEstimate(const sensor_msgs::msg::Imu, const rtklib_msgs::msg::RtklibNav, const nmea_msgs::msg::Gpgga, geometry_msgs::msg::TwistStamped*); - - eagleye_msgs::msg::Status getStatus(); + double pitch_rate_offset; + eagleye_msgs::msg::Status pitch_rate_offset_status; private: - - class PitchrateOffsetStopEstimator - { - public: - PitchrateOffsetStopEstimator(); - - void setParam(std::string yaml_file); - bool PitchrateOffsetStopEstimate(double pitch_rate, double stop_status); - - double pitch_rate_offset; - eagleye_msgs::msg::Status pitch_rate_offset_status; - - private: - struct Param - { - int imu_rate; - int estimated_interval; - int buffer_count_max; - }; - PitchrateOffsetStopEstimator::Param param; - - int stop_count; - std::vector pitch_rate_buffer; + struct Param { + int imu_rate; + int estimated_interval; + int buffer_count_max; }; + PitchrateOffsetStopEstimator::Param param; - class PitchingEstimator - { - public: - PitchingEstimator(); - - void setParam(std::string yaml_file); - bool PitchingEstimate(double imu_time_last, double doppler_velocity, double rtkfix_velocity, - double pitch_rate, double pitch_rate_offset, double rtkfix_pitching, - bool navsat_update_status, bool stop_status); - - double pitching; - eagleye_msgs::msg::Status pitching_status; - - private: - struct Param - { - double imu_rate; - double gnss_rate; - double estimated_interval; - double buffer_max; - double outlier_threshold; - double estimated_velocity_threshold; - double slow_judgment_threshold; - double gnss_receiving_threshold; - double estimated_gnss_coefficient; - double outlier_ratio_threshold; - double estimated_coefficient; - }; - PitchingEstimator::Param param; - - std::vector time_buffer; - std::vector corrected_pitch_rate_buffer; - std::vector rtkfix_pitching_buffer; - std::vector use_gnss_status_buffer; - std::vector navsat_update_status_buffer; - }; + int stop_count; + std::vector pitch_rate_buffer; + }; - class AccelerationOffsetEstimator - { - public: - AccelerationOffsetEstimator(); - - void setParam(std::string yaml_file); - bool AccelerationOffsetEstimate(double imu_time_last, double rtkfix_velocity, double pitching, - double acceleration, bool navsat_update_status); - - double filtered_acceleration; - double acceleration_offset; - eagleye_msgs::msg::Status acceleration_offset_status; - - private: - struct Param - { - double imu_rate; - double gnss_rate; - double estimated_minimum_interval; - double estimated_maximum_interval; - double buffer_min; - double buffer_max; - double filter_process_noise; - double filter_observation_noise; - }; - AccelerationOffsetEstimator::Param param; - - double acceleration_last; - double acceleration_variance_last; - std::vector time_buffer; - std::vector pitching_buffer; - std::vector filtered_acceleration_buffer; - std::vector rtkfix_velocity_buffer; - std::vector navsat_update_status_buffer; - }; + class PitchingEstimator { + public: + PitchingEstimator(); + + void setParam(std::string yaml_file); + bool PitchingEstimate(double imu_time_last, double doppler_velocity, double rtkfix_velocity, + double pitch_rate, double pitch_rate_offset, double rtkfix_pitching, + bool navsat_update_status, bool stop_status); - // Parameter - struct Param - { - double ecef_base_pos_x; - double ecef_base_pos_y; - double ecef_base_pos_z; - bool use_ecef_base_position; + double pitching; + eagleye_msgs::msg::Status pitching_status; + private: + struct Param { double imu_rate; double gnss_rate; - - double gga_downsample_time; - double stop_judgment_interval; - double stop_judgment_velocity_threshold; - double stop_judgment_buffer_maxnum; - double variance_threshold; - - // doppler fusion parameter double estimated_interval; double buffer_max; + double outlier_threshold; + double estimated_velocity_threshold; + double slow_judgment_threshold; double gnss_receiving_threshold; double estimated_gnss_coefficient; double outlier_ratio_threshold; double estimated_coefficient; - double outlier_threshold; }; - VelocityEstimator::Param param; - - // imu variables - double acceleration; - double pitch_rate; - double imu_time_last; - - // rtklib_nav variables - double doppler_velocity; - double rtklib_nav_time_last; - bool rtklib_update_status; - - // gga variables - double ecef_base_position[3]; - bool ecef_base_position_status; - double gga_time_last; - double gga_position_enu_last[3]; - int gga_status_last; - double rtkfix_velocity; - double rtkfix_pitching; - bool navsat_update_status; - - // stop judgment variables - bool stop_status; - std::vector angular_velocity_x_buffer; - std::vector angular_velocity_y_buffer; - std::vector angular_velocity_z_buffer; - - // // PitchrateOffsetStopEstimator variables - PitchrateOffsetStopEstimator pitch_rate_offset_stop_estimator; - double pitch_rate_offset; - eagleye_msgs::msg::Status pitch_rate_offset_status; + PitchingEstimator::Param param; - // PitchingEstimator variables - PitchingEstimator pitching_estimator; - double pitching; - eagleye_msgs::msg::Status pitching_status; + std::vector time_buffer; + std::vector corrected_pitch_rate_buffer; + std::vector rtkfix_pitching_buffer; + std::vector use_gnss_status_buffer; + std::vector navsat_update_status_buffer; + }; + + class AccelerationOffsetEstimator { + public: + AccelerationOffsetEstimator(); + + void setParam(std::string yaml_file); + bool AccelerationOffsetEstimate(double imu_time_last, double rtkfix_velocity, double pitching, + double acceleration, bool navsat_update_status); - // AccelerationOffsetEstimator - AccelerationOffsetEstimator acceleration_offset_estimator; double filtered_acceleration; double acceleration_offset; eagleye_msgs::msg::Status acceleration_offset_status; - //DopplerFusion - double velocity; + private: + struct Param { + double imu_rate; + double gnss_rate; + double estimated_minimum_interval; + double estimated_maximum_interval; + double buffer_min; + double buffer_max; + double filter_process_noise; + double filter_observation_noise; + }; + AccelerationOffsetEstimator::Param param; + + double acceleration_last; + double acceleration_variance_last; std::vector time_buffer; - std::vector doppler_velocity_buffer; - std::vector corrected_acceleration_buffer; - std::vector rtklib_update_status_buffer; - eagleye_msgs::msg::Status velocity_status; - - bool updateImu(const sensor_msgs::msg::Imu); - bool updateRtklibNav(const rtklib_msgs::msg::RtklibNav); - bool updateGGA(const nmea_msgs::msg::Gpgga); - bool StopJudgment(const sensor_msgs::msg::Imu); - bool DopplerFusion(); + std::vector pitching_buffer; + std::vector filtered_acceleration_buffer; + std::vector rtkfix_velocity_buffer; + std::vector navsat_update_status_buffer; + }; + + // Parameter + struct Param { + double ecef_base_pos_x; + double ecef_base_pos_y; + double ecef_base_pos_z; + bool use_ecef_base_position; + + double imu_rate; + double gnss_rate; + + double gga_downsample_time; + double stop_judgment_interval; + double stop_judgment_velocity_threshold; + double stop_judgment_buffer_maxnum; + double variance_threshold; + + // doppler fusion parameter + double estimated_interval; + double buffer_max; + double gnss_receiving_threshold; + double estimated_gnss_coefficient; + double outlier_ratio_threshold; + double estimated_coefficient; + double outlier_threshold; + }; + VelocityEstimator::Param param; + + // imu variables + double acceleration; + double pitch_rate; + double imu_time_last; + + // rtklib_nav variables + double doppler_velocity; + double rtklib_nav_time_last; + bool rtklib_update_status; + + // gga variables + double ecef_base_position[3]; + bool ecef_base_position_status; + double gga_time_last; + double gga_position_enu_last[3]; + int gga_status_last; + double rtkfix_velocity; + double rtkfix_pitching; + bool navsat_update_status; + + // stop judgment variables + bool stop_status; + std::vector angular_velocity_x_buffer; + std::vector angular_velocity_y_buffer; + std::vector angular_velocity_z_buffer; + + // // PitchrateOffsetStopEstimator variables + PitchrateOffsetStopEstimator pitch_rate_offset_stop_estimator; + double pitch_rate_offset; + eagleye_msgs::msg::Status pitch_rate_offset_status; + + // PitchingEstimator variables + PitchingEstimator pitching_estimator; + double pitching; + eagleye_msgs::msg::Status pitching_status; + + // AccelerationOffsetEstimator + AccelerationOffsetEstimator acceleration_offset_estimator; + double filtered_acceleration; + double acceleration_offset; + eagleye_msgs::msg::Status acceleration_offset_status; + + //DopplerFusion + double velocity; + std::vector time_buffer; + std::vector doppler_velocity_buffer; + std::vector corrected_acceleration_buffer; + std::vector rtklib_update_status_buffer; + eagleye_msgs::msg::Status velocity_status; + + bool updateImu(const sensor_msgs::msg::Imu); + bool updateRtklibNav(const rtklib_msgs::msg::RtklibNav); + bool updateGGA(const nmea_msgs::msg::Gpgga); + bool StopJudgment(const sensor_msgs::msg::Imu); + bool DopplerFusion(); }; #endif /*NAVIGATION_H */ diff --git a/eagleye_core/navigation/src/angular_velocity_offset_stop.cpp b/eagleye_core/navigation/src/angular_velocity_offset_stop.cpp old mode 100755 new mode 100644 index 81f3d7f7..d126116c --- a/eagleye_core/navigation/src/angular_velocity_offset_stop.cpp +++ b/eagleye_core/navigation/src/angular_velocity_offset_stop.cpp @@ -31,9 +31,11 @@ #include "eagleye_coordinate/eagleye_coordinate.hpp" #include "eagleye_navigation/eagleye_navigation.hpp" -void angular_velocity_offset_stop_estimate(const geometry_msgs::msg::TwistStamped velocity, const sensor_msgs::msg::Imu imu, const AngularVelocityOffsetStopParameter angular_velocity_stop_parameter, AngularVelocityOffsetStopStatus* angular_velocity_stop_status, eagleye_msgs::msg::AngularVelocityOffset* angular_velocity_offset_stop) -{ - +void angular_velocity_offset_stop_estimate( + const geometry_msgs::msg::TwistStamped velocity, const sensor_msgs::msg::Imu imu, + const AngularVelocityOffsetStopParameter angular_velocity_stop_parameter, + AngularVelocityOffsetStopStatus* angular_velocity_stop_status, + eagleye_msgs::msg::AngularVelocityOffset* angular_velocity_offset_stop) { int i; double roll_tmp, pitch_tmp, yaw_tmp; double initial_angular_velocity_offset_stop = 0.0; @@ -41,79 +43,87 @@ void angular_velocity_offset_stop_estimate(const geometry_msgs::msg::TwistStampe std::size_t pitch_rate_buffer_length; std::size_t yaw_rate_buffer_length; - double estimated_buffer_number = angular_velocity_stop_parameter.imu_rate * angular_velocity_stop_parameter.estimated_interval; - double estimated_time_buffer_number = angular_velocity_stop_parameter.imu_rate * angular_velocity_stop_parameter.estimated_interval; + double estimated_buffer_number = + angular_velocity_stop_parameter.imu_rate * angular_velocity_stop_parameter.estimated_interval; + double estimated_time_buffer_number = + angular_velocity_stop_parameter.imu_rate * angular_velocity_stop_parameter.estimated_interval; // data buffer generate - if (angular_velocity_stop_status->estimate_start_status == false) - { + if (angular_velocity_stop_status->estimate_start_status == false) { angular_velocity_stop_status->rollrate_buffer.push_back(imu.angular_velocity.x); angular_velocity_stop_status->pitch_rate_buffer.push_back(imu.angular_velocity.y); angular_velocity_stop_status->yaw_rate_buffer.push_back(imu.angular_velocity.z); - } - else if ( std::fabs(std::fabs(angular_velocity_stop_status->yaw_rate_offset_stop_last) - std::fabs(imu.angular_velocity.z)) < - angular_velocity_stop_parameter.outlier_threshold && angular_velocity_stop_status->estimate_start_status == true) - { + } else if (std::fabs(std::fabs(angular_velocity_stop_status->yaw_rate_offset_stop_last) - + std::fabs(imu.angular_velocity.z)) < + angular_velocity_stop_parameter.outlier_threshold && + angular_velocity_stop_status->estimate_start_status == true) { angular_velocity_stop_status->rollrate_buffer.push_back(imu.angular_velocity.x); angular_velocity_stop_status->pitch_rate_buffer.push_back(imu.angular_velocity.y); angular_velocity_stop_status->yaw_rate_buffer.push_back(imu.angular_velocity.z); } - rollrate_buffer_length = std::distance(angular_velocity_stop_status->rollrate_buffer.begin(), angular_velocity_stop_status->rollrate_buffer.end()); - pitch_rate_buffer_length = std::distance(angular_velocity_stop_status->pitch_rate_buffer.begin(), angular_velocity_stop_status->pitch_rate_buffer.end()); - yaw_rate_buffer_length = std::distance(angular_velocity_stop_status->yaw_rate_buffer.begin(), angular_velocity_stop_status->yaw_rate_buffer.end()); + rollrate_buffer_length = std::distance(angular_velocity_stop_status->rollrate_buffer.begin(), + angular_velocity_stop_status->rollrate_buffer.end()); + pitch_rate_buffer_length = std::distance(angular_velocity_stop_status->pitch_rate_buffer.begin(), + angular_velocity_stop_status->pitch_rate_buffer.end()); + yaw_rate_buffer_length = std::distance(angular_velocity_stop_status->yaw_rate_buffer.begin(), + angular_velocity_stop_status->yaw_rate_buffer.end()); - if (yaw_rate_buffer_length > estimated_buffer_number + estimated_time_buffer_number) - { - angular_velocity_stop_status->rollrate_buffer.erase(angular_velocity_stop_status->rollrate_buffer.begin()); - angular_velocity_stop_status->pitch_rate_buffer.erase(angular_velocity_stop_status->pitch_rate_buffer.begin()); - angular_velocity_stop_status->yaw_rate_buffer.erase(angular_velocity_stop_status->yaw_rate_buffer.begin()); + if (yaw_rate_buffer_length > estimated_buffer_number + estimated_time_buffer_number) { + angular_velocity_stop_status->rollrate_buffer.erase( + angular_velocity_stop_status->rollrate_buffer.begin()); + angular_velocity_stop_status->pitch_rate_buffer.erase( + angular_velocity_stop_status->pitch_rate_buffer.begin()); + angular_velocity_stop_status->yaw_rate_buffer.erase( + angular_velocity_stop_status->yaw_rate_buffer.begin()); } - if (std::abs(velocity.twist.linear.x) < angular_velocity_stop_parameter.stop_judgment_threshold) - { + if (std::abs(velocity.twist.linear.x) < angular_velocity_stop_parameter.stop_judgment_threshold) { ++angular_velocity_stop_status->stop_count; - } - else - { + } else { angular_velocity_stop_status->stop_count = 0; } // mean - if (angular_velocity_stop_status->stop_count > estimated_buffer_number + estimated_time_buffer_number) - { + if (angular_velocity_stop_status->stop_count > + estimated_buffer_number + estimated_time_buffer_number) { roll_tmp = 0.0; pitch_tmp = 0.0; yaw_tmp = 0.0; - for (i = 0; i < estimated_buffer_number; i++) - { + for (i = 0; i < estimated_buffer_number; i++) { roll_tmp += angular_velocity_stop_status->rollrate_buffer[i]; pitch_tmp += angular_velocity_stop_status->pitch_rate_buffer[i]; yaw_tmp += angular_velocity_stop_status->yaw_rate_buffer[i]; } - angular_velocity_offset_stop->angular_velocity_offset.x = -1 * roll_tmp / estimated_buffer_number; - angular_velocity_offset_stop->angular_velocity_offset.y = -1 * pitch_tmp / estimated_buffer_number; - angular_velocity_offset_stop->angular_velocity_offset.z = -1 * yaw_tmp / estimated_buffer_number; + angular_velocity_offset_stop->angular_velocity_offset.x = + -1 * roll_tmp / estimated_buffer_number; + angular_velocity_offset_stop->angular_velocity_offset.y = + -1 * pitch_tmp / estimated_buffer_number; + angular_velocity_offset_stop->angular_velocity_offset.z = + -1 * yaw_tmp / estimated_buffer_number; angular_velocity_offset_stop->status.enabled_status = true; angular_velocity_offset_stop->status.estimate_status = true; angular_velocity_stop_status->estimate_start_status = true; - } - else - { - angular_velocity_offset_stop->angular_velocity_offset.x = angular_velocity_stop_status->rollrate_offset_stop_last; - angular_velocity_offset_stop->angular_velocity_offset.y = angular_velocity_stop_status->pitch_rate_offset_stop_last; - angular_velocity_offset_stop->angular_velocity_offset.z = angular_velocity_stop_status->yaw_rate_offset_stop_last; + } else { + angular_velocity_offset_stop->angular_velocity_offset.x = + angular_velocity_stop_status->rollrate_offset_stop_last; + angular_velocity_offset_stop->angular_velocity_offset.y = + angular_velocity_stop_status->pitch_rate_offset_stop_last; + angular_velocity_offset_stop->angular_velocity_offset.z = + angular_velocity_stop_status->yaw_rate_offset_stop_last; angular_velocity_offset_stop->status.estimate_status = false; } - if (angular_velocity_stop_status->estimate_start_status == false) - { + if (angular_velocity_stop_status->estimate_start_status == false) { angular_velocity_offset_stop->angular_velocity_offset.x = initial_angular_velocity_offset_stop; angular_velocity_offset_stop->angular_velocity_offset.y = initial_angular_velocity_offset_stop; angular_velocity_offset_stop->angular_velocity_offset.z = initial_angular_velocity_offset_stop; angular_velocity_offset_stop->status.estimate_status = false; angular_velocity_offset_stop->status.enabled_status = false; } - angular_velocity_stop_status->rollrate_offset_stop_last = angular_velocity_offset_stop->angular_velocity_offset.x; - angular_velocity_stop_status->pitch_rate_offset_stop_last = angular_velocity_offset_stop->angular_velocity_offset.y; - angular_velocity_stop_status->yaw_rate_offset_stop_last = angular_velocity_offset_stop->angular_velocity_offset.z; + angular_velocity_stop_status->rollrate_offset_stop_last = + angular_velocity_offset_stop->angular_velocity_offset.x; + angular_velocity_stop_status->pitch_rate_offset_stop_last = + angular_velocity_offset_stop->angular_velocity_offset.y; + angular_velocity_stop_status->yaw_rate_offset_stop_last = + angular_velocity_offset_stop->angular_velocity_offset.z; } diff --git a/eagleye_core/navigation/src/distance.cpp b/eagleye_core/navigation/src/distance.cpp old mode 100755 new mode 100644 index 7d6f497a..ba801471 --- a/eagleye_core/navigation/src/distance.cpp +++ b/eagleye_core/navigation/src/distance.cpp @@ -31,21 +31,18 @@ #include "eagleye_coordinate/eagleye_coordinate.hpp" #include "eagleye_navigation/eagleye_navigation.hpp" -void distance_estimate(const geometry_msgs::msg::TwistStamped velocity, DistanceStatus* distance_status,eagleye_msgs::msg::Distance* distance) -{ - +void distance_estimate(const geometry_msgs::msg::TwistStamped velocity, + DistanceStatus* distance_status, eagleye_msgs::msg::Distance* distance) { rclcpp::Time ros_clock(velocity.header.stamp); auto velocity_time = ros_clock.seconds(); - if(distance_status->time_last != 0) - { - distance->distance = distance->distance + velocity.twist.linear.x * std::abs((velocity_time - - distance_status->time_last)); + if (distance_status->time_last != 0) { + distance->distance = + distance->distance + + velocity.twist.linear.x * std::abs((velocity_time - distance_status->time_last)); distance->status.enabled_status = distance->status.estimate_status = true; distance_status->time_last = velocity_time; - } - else - { + } else { distance_status->time_last = velocity_time; } } diff --git a/eagleye_core/navigation/src/enable_additional_rolling.cpp b/eagleye_core/navigation/src/enable_additional_rolling.cpp index 0be48d1a..2f0ed2da 100644 --- a/eagleye_core/navigation/src/enable_additional_rolling.cpp +++ b/eagleye_core/navigation/src/enable_additional_rolling.cpp @@ -33,12 +33,17 @@ #define g 9.80665 -void enable_additional_rolling_estimate(const geometry_msgs::msg::TwistStamped velocity, const eagleye_msgs::msg::StatusStamped velocity_status, - const eagleye_msgs::msg::YawrateOffset yaw_rate_offset_2nd,const eagleye_msgs::msg::YawrateOffset yaw_rate_offset_stop, - const eagleye_msgs::msg::Distance distance, const sensor_msgs::msg::Imu imu, const geometry_msgs::msg::PoseStamped localization_pose, - const eagleye_msgs::msg::AngularVelocityOffset angular_velocity_offset_stop, const EnableAdditionalRollingParameter rolling_parameter, - EnableAdditionalRollingStatus* rolling_status, eagleye_msgs::msg::Rolling* rolling_angle, eagleye_msgs::msg::AccYOffset* acc_y_offset) -{ +void enable_additional_rolling_estimate( + const geometry_msgs::msg::TwistStamped velocity, + const eagleye_msgs::msg::StatusStamped velocity_status, + const eagleye_msgs::msg::YawrateOffset yaw_rate_offset_2nd, + const eagleye_msgs::msg::YawrateOffset yaw_rate_offset_stop, + const eagleye_msgs::msg::Distance distance, const sensor_msgs::msg::Imu imu, + const geometry_msgs::msg::PoseStamped localization_pose, + const eagleye_msgs::msg::AngularVelocityOffset angular_velocity_offset_stop, + const EnableAdditionalRollingParameter rolling_parameter, + EnableAdditionalRollingStatus* rolling_status, eagleye_msgs::msg::Rolling* rolling_angle, + eagleye_msgs::msg::AccYOffset* acc_y_offset) { bool acc_offset_status = false; bool rolling_buffer_status = false; bool rolling_estimated_buffer_status = false; @@ -50,9 +55,11 @@ void enable_additional_rolling_estimate(const geometry_msgs::msg::TwistStamped v double rolling_estimated_average = 0.0; double rolling_interpolate = 0.0; - double moving_average_buffer_number = rolling_parameter.moving_average_time * rolling_parameter.imu_rate; + double moving_average_buffer_number = + rolling_parameter.moving_average_time * rolling_parameter.imu_rate; double search_buffer_number = rolling_parameter.sync_search_period * rolling_parameter.imu_rate; - double rolling_delay_interpolation_buffer_num = search_buffer_number / 2; // Parameter to correct for time delay caused by moving average. + double rolling_delay_interpolation_buffer_num = + search_buffer_number / 2; // Parameter to correct for time delay caused by moving average. rclcpp::Time imu_clock(imu.header.stamp); double imu_time = imu_clock.seconds(); @@ -65,25 +72,23 @@ void enable_additional_rolling_estimate(const geometry_msgs::msg::TwistStamped v rolling_status->imu_acceleration_y = imu.linear_acceleration.y; - // data buffer - if (rolling_status->imu_time_buffer.size() < search_buffer_number && velocity_status.status.enabled_status) - { + // data buffer + if (rolling_status->imu_time_buffer.size() < search_buffer_number && + velocity_status.status.enabled_status) { rolling_status->imu_time_buffer.push_back(imu_time); rolling_status->yaw_rate_buffer.push_back(rolling_status->yaw_rate); rolling_status->velocity_buffer.push_back(velocity.twist.linear.x); rolling_status->yaw_rate_offset_buffer.push_back(yaw_rate_offset_2nd.yaw_rate_offset); rolling_status->acceleration_y_buffer.push_back(rolling_status->imu_acceleration_y); rolling_status->distance_buffer.push_back(distance.distance); - } - else if (velocity_status.status.enabled_status) - { + } else if (velocity_status.status.enabled_status) { rolling_status->imu_time_buffer.erase(rolling_status->imu_time_buffer.begin()); rolling_status->yaw_rate_buffer.erase(rolling_status->yaw_rate_buffer.begin()); rolling_status->velocity_buffer.erase(rolling_status->velocity_buffer.begin()); rolling_status->yaw_rate_offset_buffer.erase(rolling_status->yaw_rate_offset_buffer.begin()); rolling_status->acceleration_y_buffer.erase(rolling_status->acceleration_y_buffer.begin()); rolling_status->distance_buffer.erase(rolling_status->distance_buffer.begin()); - + rolling_status->imu_time_buffer.push_back(imu_time); rolling_status->yaw_rate_buffer.push_back(rolling_status->yaw_rate); rolling_status->velocity_buffer.push_back(velocity.twist.linear.x); @@ -94,119 +99,106 @@ void enable_additional_rolling_estimate(const geometry_msgs::msg::TwistStamped v } /// acc_y_offset /// - if (data_buffer_status && localization_pose_time != rolling_status->localization_time_last) - { - for ( int i = 0; i < search_buffer_number - 1; i++ ) - { - if (std::abs(rolling_status->imu_time_buffer[i] - localization_pose_time) < rolling_parameter.sync_judgment_threshold) - { - if (std::abs(rolling_status->distance_last - rolling_status->distance_buffer[i]) >= rolling_parameter.update_distance ) - { + if (data_buffer_status && localization_pose_time != rolling_status->localization_time_last) { + for (int i = 0; i < search_buffer_number - 1; i++) { + if (std::abs(rolling_status->imu_time_buffer[i] - localization_pose_time) < + rolling_parameter.sync_judgment_threshold) { + if (std::abs(rolling_status->distance_last - rolling_status->distance_buffer[i]) >= + rolling_parameter.update_distance) { acc_offset_status = true; rolling_status->distance_last = rolling_status->distance_buffer[i]; } } - if (acc_offset_status) - { - if (rolling_status->velocity_buffer[i] > rolling_parameter.stop_judgment_threshold) - { + if (acc_offset_status) { + if (rolling_status->velocity_buffer[i] > rolling_parameter.stop_judgment_threshold) { tf2::Quaternion localization_quat; tf2::fromMsg(localization_pose.pose.orientation, localization_quat); - tf2::Matrix3x3(localization_quat).getRPY(additional_angle[0], additional_angle[1], additional_angle[2]); + tf2::Matrix3x3(localization_quat) + .getRPY(additional_angle[0], additional_angle[1], additional_angle[2]); - acc_y_offset_tmp = -1*(rolling_status->velocity_buffer[i]*(rolling_status->yaw_rate_buffer[i]+rolling_status->yaw_rate_offset_buffer[i])- - rolling_status->acceleration_y_buffer[i]-g*std::sin(additional_angle[0])); + acc_y_offset_tmp = + -1 * (rolling_status->velocity_buffer[i] * (rolling_status->yaw_rate_buffer[i] + + rolling_status->yaw_rate_offset_buffer[i]) - + rolling_status->acceleration_y_buffer[i] - g * std::sin(additional_angle[0])); rolling_status->acc_offset_sum = rolling_status->acc_offset_sum + acc_y_offset_tmp; - rolling_status->acc_offset_data_count ++; - acc_y_offset->acc_y_offset = rolling_status->acc_offset_sum/rolling_status->acc_offset_data_count; + rolling_status->acc_offset_data_count++; + acc_y_offset->acc_y_offset = + rolling_status->acc_offset_sum / rolling_status->acc_offset_data_count; acc_offset_status = false; - acc_y_offset->status.enabled_status=true; - acc_y_offset->status.estimate_status=true; + acc_y_offset->status.enabled_status = true; + acc_y_offset->status.estimate_status = true; break; } + } else { + acc_y_offset->status.estimate_status = false; } - else - { - acc_y_offset->status.estimate_status=false; - } - } - }else - { - acc_y_offset->status.estimate_status=false; + } else { + acc_y_offset->status.estimate_status = false; } /// estimated rolling angle /// - if (acc_y_offset->status.enabled_status) - { - if (velocity.twist.linear.x > rolling_parameter.stop_judgment_threshold) - { - rolling_estimated_tmp = std::asin((velocity.twist.linear.x*(rolling_status->yaw_rate+yaw_rate_offset_2nd.yaw_rate_offset)/g)- - (rolling_status->imu_acceleration_y-acc_y_offset->acc_y_offset)/g); - } - else - { - rolling_estimated_tmp = std::asin((velocity.twist.linear.x*(rolling_status->yaw_rate+yaw_rate_offset_stop.yaw_rate_offset)/g)- - (rolling_status->imu_acceleration_y-acc_y_offset->acc_y_offset)/g); + if (acc_y_offset->status.enabled_status) { + if (velocity.twist.linear.x > rolling_parameter.stop_judgment_threshold) { + rolling_estimated_tmp = + std::asin((velocity.twist.linear.x * + (rolling_status->yaw_rate + yaw_rate_offset_2nd.yaw_rate_offset) / g) - + (rolling_status->imu_acceleration_y - acc_y_offset->acc_y_offset) / g); + } else { + rolling_estimated_tmp = + std::asin((velocity.twist.linear.x * + (rolling_status->yaw_rate + yaw_rate_offset_stop.yaw_rate_offset) / g) - + (rolling_status->imu_acceleration_y - acc_y_offset->acc_y_offset) / g); } } double diff_imu_time = imu_time - rolling_status->imu_time_last; - double rolling_interpolate_tmp = (rolling_status->rollrate - rolling_status->rollrate_offset_stop)*diff_imu_time; + double rolling_interpolate_tmp = + (rolling_status->rollrate - rolling_status->rollrate_offset_stop) * diff_imu_time; /// buffering estimated rolling angle offset /// - if (rolling_status->roll_rate_interpolate_buffer.size() < rolling_delay_interpolation_buffer_num) - { + if (rolling_status->roll_rate_interpolate_buffer.size() < + rolling_delay_interpolation_buffer_num) { rolling_status->roll_rate_interpolate_buffer.push_back(rolling_interpolate_tmp); - } - else - { - rolling_status->roll_rate_interpolate_buffer.erase(rolling_status->roll_rate_interpolate_buffer.begin()); + } else { + rolling_status->roll_rate_interpolate_buffer.erase( + rolling_status->roll_rate_interpolate_buffer.begin()); rolling_status->roll_rate_interpolate_buffer.push_back(rolling_interpolate_tmp); rolling_buffer_status = true; } /// buffering estimated roll angle /// - if (rolling_status->rolling_estimated_buffer.size() < moving_average_buffer_number && acc_y_offset->status.enabled_status) - { + if (rolling_status->rolling_estimated_buffer.size() < moving_average_buffer_number && + acc_y_offset->status.enabled_status) { rolling_status->rolling_estimated_buffer.push_back(rolling_estimated_tmp); - } - else if (velocity_status.status.enabled_status && acc_y_offset->status.enabled_status) - { - rolling_status->rolling_estimated_buffer.erase(rolling_status->rolling_estimated_buffer.begin()); + } else if (velocity_status.status.enabled_status && acc_y_offset->status.enabled_status) { + rolling_status->rolling_estimated_buffer.erase( + rolling_status->rolling_estimated_buffer.begin()); rolling_status->rolling_estimated_buffer.push_back(rolling_estimated_tmp); rolling_estimated_buffer_status = true; - } - else - { + } else { rolling_estimated_buffer_status = false; } /// buffering rolling offset /// - if (rolling_buffer_status) - { - for( int i = 0; i roll_rate_interpolate_buffer[i]; } } /// Moving average estimation of roll angle /// - if (rolling_estimated_buffer_status ) - { - for ( int i = 0; i rolling_estimated_buffer[i]; + if (rolling_estimated_buffer_status) { + for (int i = 0; i < moving_average_buffer_number - 1; i++) { + rolling_estimated_sum = rolling_estimated_sum + rolling_status->rolling_estimated_buffer[i]; } - rolling_estimated_average = rolling_estimated_sum/moving_average_buffer_number; + rolling_estimated_average = rolling_estimated_sum / moving_average_buffer_number; rolling_angle->rolling_angle = rolling_estimated_average + rolling_interpolate; - rolling_angle->status.enabled_status=true; - rolling_angle->status.estimate_status=true; - } - else - { - rolling_angle->status.estimate_status=false; + rolling_angle->status.enabled_status = true; + rolling_angle->status.estimate_status = true; + } else { + rolling_angle->status.estimate_status = false; } rolling_status->imu_time_last = imu_time; diff --git a/eagleye_core/navigation/src/heading.cpp b/eagleye_core/navigation/src/heading.cpp old mode 100755 new mode 100644 index 2d192642..2605c910 --- a/eagleye_core/navigation/src/heading.cpp +++ b/eagleye_core/navigation/src/heading.cpp @@ -31,115 +31,115 @@ #include "eagleye_coordinate/eagleye_coordinate.hpp" #include "eagleye_navigation/eagleye_navigation.hpp" -void heading_estimate_(sensor_msgs::msg::Imu imu, geometry_msgs::msg::TwistStamped velocity, eagleye_msgs::msg::YawrateOffset yaw_rate_offset_stop, - eagleye_msgs::msg::YawrateOffset yaw_rate_offset, eagleye_msgs::msg::SlipAngle slip_angle, eagleye_msgs::msg::Heading heading_interpolate, - HeadingParameter heading_parameter, HeadingStatus* heading_status, eagleye_msgs::msg::Heading* heading) -{ - int i,index_max; +void heading_estimate_(sensor_msgs::msg::Imu imu, geometry_msgs::msg::TwistStamped velocity, + eagleye_msgs::msg::YawrateOffset yaw_rate_offset_stop, + eagleye_msgs::msg::YawrateOffset yaw_rate_offset, + eagleye_msgs::msg::SlipAngle slip_angle, + eagleye_msgs::msg::Heading heading_interpolate, + HeadingParameter heading_parameter, HeadingStatus* heading_status, + eagleye_msgs::msg::Heading* heading) { + int i, index_max; double yaw_rate = 0.0; - double avg = 0.0,tmp_heading_angle; - bool gnss_status,gnss_update; + double avg = 0.0, tmp_heading_angle; + bool gnss_status, gnss_update; std::size_t index_length; std::size_t time_buffer_length; std::size_t inversion_up_index_length; std::size_t inversion_down_index_length; std::vector::iterator max; - double estimated_buffer_number_min = heading_parameter.estimated_minimum_interval * heading_parameter.imu_rate; - double estimated_buffer_number_max = heading_parameter.estimated_maximum_interval * heading_parameter.imu_rate; - double enabled_data_ratio = heading_parameter.gnss_rate / heading_parameter.imu_rate * heading_parameter.gnss_receiving_threshold; + double estimated_buffer_number_min = + heading_parameter.estimated_minimum_interval * heading_parameter.imu_rate; + double estimated_buffer_number_max = + heading_parameter.estimated_maximum_interval * heading_parameter.imu_rate; + double enabled_data_ratio = heading_parameter.gnss_rate / heading_parameter.imu_rate * + heading_parameter.gnss_receiving_threshold; double remain_data_ratio = enabled_data_ratio * heading_parameter.outlier_ratio_threshold; rclcpp::Time ros_clock(imu.header.stamp); auto imu_time = ros_clock.seconds(); - if (heading_status->estimated_number < estimated_buffer_number_max) - { - ++heading_status->estimated_number ; - } - else - { - heading_status->estimated_number = estimated_buffer_number_max; + if (heading_status->estimated_number < estimated_buffer_number_max) { + ++heading_status->estimated_number; + } else { + heading_status->estimated_number = estimated_buffer_number_max; } yaw_rate = imu.angular_velocity.z; // data buffer generate - heading_status->time_buffer .push_back(imu_time); - heading_status->yaw_rate_buffer .push_back(yaw_rate); - heading_status->correction_velocity_buffer .push_back(velocity.twist.linear.x); - heading_status->yaw_rate_offset_stop_buffer .push_back(yaw_rate_offset_stop.yaw_rate_offset); - heading_status->yaw_rate_offset_buffer .push_back(yaw_rate_offset.yaw_rate_offset); - heading_status->slip_angle_buffer .push_back(slip_angle.slip_angle); - - time_buffer_length = std::distance(heading_status->time_buffer .begin(), heading_status->time_buffer .end()); - - if (time_buffer_length > estimated_buffer_number_max) - { - heading_status->time_buffer .erase(heading_status->time_buffer .begin()); - heading_status->heading_angle_buffer .erase(heading_status->heading_angle_buffer .begin()); - heading_status->yaw_rate_buffer .erase(heading_status->yaw_rate_buffer .begin()); - heading_status->correction_velocity_buffer .erase(heading_status->correction_velocity_buffer .begin()); - heading_status->yaw_rate_offset_stop_buffer .erase(heading_status->yaw_rate_offset_stop_buffer .begin()); - heading_status->yaw_rate_offset_buffer .erase(heading_status->yaw_rate_offset_buffer .begin()); - heading_status->slip_angle_buffer .erase(heading_status->slip_angle_buffer .begin()); - heading_status->gnss_status_buffer .erase(heading_status->gnss_status_buffer .begin()); + heading_status->time_buffer.push_back(imu_time); + heading_status->yaw_rate_buffer.push_back(yaw_rate); + heading_status->correction_velocity_buffer.push_back(velocity.twist.linear.x); + heading_status->yaw_rate_offset_stop_buffer.push_back(yaw_rate_offset_stop.yaw_rate_offset); + heading_status->yaw_rate_offset_buffer.push_back(yaw_rate_offset.yaw_rate_offset); + heading_status->slip_angle_buffer.push_back(slip_angle.slip_angle); + + time_buffer_length = + std::distance(heading_status->time_buffer.begin(), heading_status->time_buffer.end()); + + if (time_buffer_length > estimated_buffer_number_max) { + heading_status->time_buffer.erase(heading_status->time_buffer.begin()); + heading_status->heading_angle_buffer.erase(heading_status->heading_angle_buffer.begin()); + heading_status->yaw_rate_buffer.erase(heading_status->yaw_rate_buffer.begin()); + heading_status->correction_velocity_buffer.erase( + heading_status->correction_velocity_buffer.begin()); + heading_status->yaw_rate_offset_stop_buffer.erase( + heading_status->yaw_rate_offset_stop_buffer.begin()); + heading_status->yaw_rate_offset_buffer.erase(heading_status->yaw_rate_offset_buffer.begin()); + heading_status->slip_angle_buffer.erase(heading_status->slip_angle_buffer.begin()); + heading_status->gnss_status_buffer.erase(heading_status->gnss_status_buffer.begin()); } std::vector gnss_index; std::vector velocity_index; std::vector index; - if (heading_status->estimated_number > estimated_buffer_number_min && - heading_status->gnss_status_buffer [heading_status->estimated_number -1] == true && - heading_status->correction_velocity_buffer [heading_status->estimated_number -1] > heading_parameter.moving_judgment_threshold && - fabsf(heading_status->yaw_rate_buffer [heading_status->estimated_number -1]) < heading_parameter.curve_judgment_threshold) - { + if (heading_status->estimated_number > estimated_buffer_number_min && + heading_status->gnss_status_buffer[heading_status->estimated_number - 1] == true && + heading_status->correction_velocity_buffer[heading_status->estimated_number - 1] > + heading_parameter.moving_judgment_threshold && + fabsf(heading_status->yaw_rate_buffer[heading_status->estimated_number - 1]) < + heading_parameter.curve_judgment_threshold) { heading->status.enabled_status = true; - } - else - { + } else { heading->status.enabled_status = false; } - if (heading->status.enabled_status == true) - { - for (i = 0; i < heading_status->estimated_number ; i++) - { - if (heading_status->gnss_status_buffer [i] == true) - { + if (heading->status.enabled_status == true) { + for (i = 0; i < heading_status->estimated_number; i++) { + if (heading_status->gnss_status_buffer[i] == true) { gnss_index.push_back(i); } - if (heading_status->correction_velocity_buffer [i] > heading_parameter.moving_judgment_threshold) - { + if (heading_status->correction_velocity_buffer[i] > + heading_parameter.moving_judgment_threshold) { velocity_index.push_back(i); } } - set_intersection(gnss_index.begin(), gnss_index.end(), velocity_index.begin(), velocity_index.end(), - inserter(index, index.end())); + set_intersection(gnss_index.begin(), gnss_index.end(), velocity_index.begin(), + velocity_index.end(), inserter(index, index.end())); index_length = std::distance(index.begin(), index.end()); - if (index_length > heading_status->estimated_number * enabled_data_ratio) - { - std::vector provisional_heading_angle_buffer(heading_status->estimated_number , 0); - - for (i = 0; i < heading_status->estimated_number ; i++) - { - if (i > 0) - { - if (std::abs(heading_status->correction_velocity_buffer [heading_status->estimated_number -1]) > heading_parameter.moving_judgment_threshold) - { - provisional_heading_angle_buffer[i] = provisional_heading_angle_buffer[i-1] + - ((heading_status->yaw_rate_buffer [i] + heading_status->yaw_rate_offset_buffer [i]) * - (heading_status->time_buffer [i] - heading_status->time_buffer [i-1])); - } - else - { - provisional_heading_angle_buffer[i] = provisional_heading_angle_buffer[i-1] + - ((heading_status->yaw_rate_buffer [i] + heading_status->yaw_rate_offset_stop_buffer [i]) * - (heading_status->time_buffer [i] - heading_status->time_buffer [i-1])); + if (index_length > heading_status->estimated_number * enabled_data_ratio) { + std::vector provisional_heading_angle_buffer(heading_status->estimated_number, 0); + + for (i = 0; i < heading_status->estimated_number; i++) { + if (i > 0) { + if (std::abs( + heading_status->correction_velocity_buffer[heading_status->estimated_number - 1]) > + heading_parameter.moving_judgment_threshold) { + provisional_heading_angle_buffer[i] = + provisional_heading_angle_buffer[i - 1] + + ((heading_status->yaw_rate_buffer[i] + heading_status->yaw_rate_offset_buffer[i]) * + (heading_status->time_buffer[i] - heading_status->time_buffer[i - 1])); + } else { + provisional_heading_angle_buffer[i] = + provisional_heading_angle_buffer[i - 1] + + ((heading_status->yaw_rate_buffer[i] + + heading_status->yaw_rate_offset_stop_buffer[i]) * + (heading_status->time_buffer[i] - heading_status->time_buffer[i - 1])); } } } @@ -150,112 +150,116 @@ void heading_estimate_(sensor_msgs::msg::Imu imu, geometry_msgs::msg::TwistStamp std::vector inversion_up_index; std::vector inversion_down_index; - if(heading_interpolate.status.enabled_status == false) - { - heading_interpolate.heading_angle = heading_status->heading_angle_buffer [index[index_length-1]]; + if (heading_interpolate.status.enabled_status == false) { + heading_interpolate.heading_angle = + heading_status->heading_angle_buffer[index[index_length - 1]]; } int ref_cnt; std::vector heading_angle_buffer2; - copy(heading_status->heading_angle_buffer .begin(), heading_status->heading_angle_buffer .end(), back_inserter(heading_angle_buffer2) ); + copy(heading_status->heading_angle_buffer.begin(), heading_status->heading_angle_buffer.end(), + back_inserter(heading_angle_buffer2)); - for (i = 0; i < heading_status->estimated_number ; i++) - { - base_heading_angle_buffer.push_back(heading_interpolate.heading_angle - provisional_heading_angle_buffer[index[index_length-1]] + + for (i = 0; i < heading_status->estimated_number; i++) { + base_heading_angle_buffer.push_back( + heading_interpolate.heading_angle - + provisional_heading_angle_buffer[index[index_length - 1]] + provisional_heading_angle_buffer[i]); } - for (i = 0; i < index_length; i++) - { - ref_cnt = (base_heading_angle_buffer[index[i]] - std::fmod(base_heading_angle_buffer[index[i]],2*M_PI))/(2*M_PI); - if(base_heading_angle_buffer[index[i]] < 0) ref_cnt = ref_cnt -1; - heading_angle_buffer2[index[i]] = heading_status->heading_angle_buffer [index[i]] + ref_cnt * 2*M_PI; + for (i = 0; i < index_length; i++) { + ref_cnt = (base_heading_angle_buffer[index[i]] - + std::fmod(base_heading_angle_buffer[index[i]], 2 * M_PI)) / + (2 * M_PI); + if (base_heading_angle_buffer[index[i]] < 0) + ref_cnt = ref_cnt - 1; + heading_angle_buffer2[index[i]] = + heading_status->heading_angle_buffer[index[i]] + ref_cnt * 2 * M_PI; } - while (1) - { + while (1) { index_length = std::distance(index.begin(), index.end()); base_heading_angle_buffer.clear(); - for (i = 0; i < heading_status->estimated_number ; i++) - { - base_heading_angle_buffer.push_back(heading_angle_buffer2[index[index_length-1]] - provisional_heading_angle_buffer[index[index_length-1]] + + for (i = 0; i < heading_status->estimated_number; i++) { + base_heading_angle_buffer.push_back( + heading_angle_buffer2[index[index_length - 1]] - + provisional_heading_angle_buffer[index[index_length - 1]] + provisional_heading_angle_buffer[i]); } diff_buffer.clear(); - for (i = 0; i < index_length; i++) - { - diff_buffer.push_back(base_heading_angle_buffer[index[i]] - heading_angle_buffer2[index[i]]); + for (i = 0; i < index_length; i++) { + diff_buffer.push_back(base_heading_angle_buffer[index[i]] - + heading_angle_buffer2[index[i]]); } avg = std::accumulate(diff_buffer.begin(), diff_buffer.end(), 0.0) / index_length; - tmp_heading_angle = heading_angle_buffer2[index[index_length-1]] - avg; + tmp_heading_angle = heading_angle_buffer2[index[index_length - 1]] - avg; base_heading_angle_buffer2.clear(); - for (i = 0; i < heading_status->estimated_number ; i++) - { - base_heading_angle_buffer2.push_back(tmp_heading_angle - provisional_heading_angle_buffer[index[index_length-1]] + + for (i = 0; i < heading_status->estimated_number; i++) { + base_heading_angle_buffer2.push_back( + tmp_heading_angle - provisional_heading_angle_buffer[index[index_length - 1]] + provisional_heading_angle_buffer[i]); } diff_buffer.clear(); - for (i = 0; i < index_length; i++) - { - diff_buffer.push_back(fabsf(base_heading_angle_buffer2[index[i]] - heading_angle_buffer2[index[i]])); + for (i = 0; i < index_length; i++) { + diff_buffer.push_back( + fabsf(base_heading_angle_buffer2[index[i]] - heading_angle_buffer2[index[i]])); } max = std::max_element(diff_buffer.begin(), diff_buffer.end()); index_max = std::distance(diff_buffer.begin(), max); - if (diff_buffer[index_max] > heading_parameter.outlier_threshold) - { + if (diff_buffer[index_max] > heading_parameter.outlier_threshold) { index.erase(index.begin() + index_max); - } - else - { + } else { break; } index_length = std::distance(index.begin(), index.end()); - if (index_length < heading_status->estimated_number * remain_data_ratio) - { + if (index_length < heading_status->estimated_number * remain_data_ratio) { break; } } - if (index_length == 0 || index_length > heading_status->estimated_number * remain_data_ratio) - { - if (index[index_length-1] == heading_status->estimated_number -1) - { + if (index_length == 0 || + index_length > heading_status->estimated_number * remain_data_ratio) { + if (index[index_length - 1] == heading_status->estimated_number - 1) { heading->heading_angle = tmp_heading_angle; - } - else - { - heading->heading_angle = tmp_heading_angle + (provisional_heading_angle_buffer[heading_status->estimated_number -1] - - provisional_heading_angle_buffer[index[index_length-1]]); + } else { + heading->heading_angle = + tmp_heading_angle + + (provisional_heading_angle_buffer[heading_status->estimated_number - 1] - + provisional_heading_angle_buffer[index[index_length - 1]]); } heading->status.estimate_status = true; double heading_STD = heading_parameter.init_STD; - heading->variance = heading_STD*heading_STD; + heading->variance = heading_STD * heading_STD; } } } } -void heading_estimate(rtklib_msgs::msg::RtklibNav rtklib_nav,sensor_msgs::msg::Imu imu, geometry_msgs::msg::TwistStamped velocity, - eagleye_msgs::msg::YawrateOffset yaw_rate_offset_stop,eagleye_msgs::msg::YawrateOffset yaw_rate_offset,eagleye_msgs::msg::SlipAngle slip_angle, - eagleye_msgs::msg::Heading heading_interpolate,HeadingParameter heading_parameter, HeadingStatus* heading_status,eagleye_msgs::msg::Heading* heading) -{ +void heading_estimate(rtklib_msgs::msg::RtklibNav rtklib_nav, sensor_msgs::msg::Imu imu, + geometry_msgs::msg::TwistStamped velocity, + eagleye_msgs::msg::YawrateOffset yaw_rate_offset_stop, + eagleye_msgs::msg::YawrateOffset yaw_rate_offset, + eagleye_msgs::msg::SlipAngle slip_angle, + eagleye_msgs::msg::Heading heading_interpolate, + HeadingParameter heading_parameter, HeadingStatus* heading_status, + eagleye_msgs::msg::Heading* heading) { double ecef_vel[3]; double ecef_pos[3]; double enu_vel[3]; double doppler_heading_angle = 0.0; - bool gnss_status,gnss_update; + bool gnss_status, gnss_update; ecef_vel[0] = rtklib_nav.ecef_vel.x; ecef_vel[1] = rtklib_nav.ecef_vel.y; @@ -266,96 +270,98 @@ void heading_estimate(rtklib_msgs::msg::RtklibNav rtklib_nav,sensor_msgs::msg::I xyz2enu_vel(ecef_vel, ecef_pos, enu_vel); - if (!std::isfinite(enu_vel[0])||!std::isfinite(enu_vel[1])||!std::isfinite(enu_vel[2])) - { + if (!std::isfinite(enu_vel[0]) || !std::isfinite(enu_vel[1]) || !std::isfinite(enu_vel[2])) { enu_vel[0] = 0; enu_vel[1] = 0; enu_vel[2] = 0; gnss_update = false; - } - else{ + } else { gnss_update = true; } doppler_heading_angle = std::atan2(enu_vel[0], enu_vel[1]); - if(doppler_heading_angle<0){ - doppler_heading_angle = doppler_heading_angle + 2*M_PI; + if (doppler_heading_angle < 0) { + doppler_heading_angle = doppler_heading_angle + 2 * M_PI; } - if (heading_status->tow_last == rtklib_nav.tow || rtklib_nav.tow == 0 || gnss_update == false) - { + if (heading_status->tow_last == rtklib_nav.tow || rtklib_nav.tow == 0 || gnss_update == false) { gnss_status = false; doppler_heading_angle = 0; - heading_status->tow_last = rtklib_nav.tow; - } - else - { + heading_status->tow_last = rtklib_nav.tow; + } else { gnss_status = true; doppler_heading_angle = doppler_heading_angle; - heading_status->tow_last = rtklib_nav.tow; + heading_status->tow_last = rtklib_nav.tow; } - heading_status->heading_angle_buffer .push_back(doppler_heading_angle); - heading_status->gnss_status_buffer .push_back(gnss_status); + heading_status->heading_angle_buffer.push_back(doppler_heading_angle); + heading_status->gnss_status_buffer.push_back(gnss_status); - heading_estimate_(imu, velocity, yaw_rate_offset_stop, yaw_rate_offset, slip_angle, heading_interpolate, heading_parameter, heading_status, heading); + heading_estimate_(imu, velocity, yaw_rate_offset_stop, yaw_rate_offset, slip_angle, + heading_interpolate, heading_parameter, heading_status, heading); } -void heading_estimate(const nmea_msgs::msg::Gprmc nmea_rmc,sensor_msgs::msg::Imu imu, geometry_msgs::msg::TwistStamped velocity, - eagleye_msgs::msg::YawrateOffset yaw_rate_offset_stop,eagleye_msgs::msg::YawrateOffset yaw_rate_offset,eagleye_msgs::msg::SlipAngle slip_angle, - eagleye_msgs::msg::Heading heading_interpolate,HeadingParameter heading_parameter, HeadingStatus* heading_status,eagleye_msgs::msg::Heading* heading) -{ +void heading_estimate(const nmea_msgs::msg::Gprmc nmea_rmc, sensor_msgs::msg::Imu imu, + geometry_msgs::msg::TwistStamped velocity, + eagleye_msgs::msg::YawrateOffset yaw_rate_offset_stop, + eagleye_msgs::msg::YawrateOffset yaw_rate_offset, + eagleye_msgs::msg::SlipAngle slip_angle, + eagleye_msgs::msg::Heading heading_interpolate, + HeadingParameter heading_parameter, HeadingStatus* heading_status, + eagleye_msgs::msg::Heading* heading) { bool gnss_status; double doppler_heading_angle = 0.0; - if (heading_status->rmc_time_last == nmea_rmc.utc_seconds || nmea_rmc.utc_seconds == 0 || nmea_rmc.track == 0) - { + if (heading_status->rmc_time_last == nmea_rmc.utc_seconds || nmea_rmc.utc_seconds == 0 || + nmea_rmc.track == 0) { gnss_status = false; doppler_heading_angle = 0; heading_status->rmc_time_last = nmea_rmc.utc_seconds; - } - else - { + } else { gnss_status = true; - doppler_heading_angle = nmea_rmc.track * M_PI/180; + doppler_heading_angle = nmea_rmc.track * M_PI / 180; heading_status->rmc_time_last = nmea_rmc.utc_seconds; } heading_status->heading_angle_buffer.push_back(doppler_heading_angle); heading_status->gnss_status_buffer.push_back(gnss_status); - heading_estimate_(imu, velocity, yaw_rate_offset_stop, yaw_rate_offset, slip_angle, heading_interpolate, heading_parameter, heading_status, heading); + heading_estimate_(imu, velocity, yaw_rate_offset_stop, yaw_rate_offset, slip_angle, + heading_interpolate, heading_parameter, heading_status, heading); } -void heading_estimate(const eagleye_msgs::msg::Heading multi_antenna_heading,sensor_msgs::msg::Imu imu,geometry_msgs::msg::TwistStamped velocity, - eagleye_msgs::msg::YawrateOffset yaw_rate_offset_stop,eagleye_msgs::msg::YawrateOffset yaw_rate_offset,eagleye_msgs::msg::SlipAngle slip_angle, - eagleye_msgs::msg::Heading heading_interpolate,HeadingParameter heading_parameter, HeadingStatus* heading_status,eagleye_msgs::msg::Heading* heading) -{ +void heading_estimate(const eagleye_msgs::msg::Heading multi_antenna_heading, + sensor_msgs::msg::Imu imu, geometry_msgs::msg::TwistStamped velocity, + eagleye_msgs::msg::YawrateOffset yaw_rate_offset_stop, + eagleye_msgs::msg::YawrateOffset yaw_rate_offset, + eagleye_msgs::msg::SlipAngle slip_angle, + eagleye_msgs::msg::Heading heading_interpolate, + HeadingParameter heading_parameter, HeadingStatus* heading_status, + eagleye_msgs::msg::Heading* heading) { bool gnss_status; double heading_angle = 0.0; rclcpp::Time multi_anttena_clock(multi_antenna_heading.header.stamp); double multi_anttena_time = multi_anttena_clock.seconds(); - if (heading_status->ros_time_last == multi_anttena_time || multi_anttena_time == 0) - { + if (heading_status->ros_time_last == multi_anttena_time || multi_anttena_time == 0) { gnss_status = false; heading_angle = 0; heading_status->ros_time_last = multi_anttena_time; - } - else - { + } else { gnss_status = true; heading_angle = multi_antenna_heading.heading_angle; heading_status->ros_time_last = multi_anttena_time; } - heading_status->heading_angle_buffer .push_back(heading_angle); - heading_status->gnss_status_buffer .push_back(gnss_status); - - heading_estimate_(imu,velocity,yaw_rate_offset_stop,yaw_rate_offset,slip_angle,heading_interpolate,heading_parameter,heading_status,heading); + heading_status->heading_angle_buffer.push_back(heading_angle); + heading_status->gnss_status_buffer.push_back(gnss_status); - if(!heading->status.estimate_status) heading->heading_angle = heading_angle; - if(gnss_status) heading->status.estimate_status = true; + heading_estimate_(imu, velocity, yaw_rate_offset_stop, yaw_rate_offset, slip_angle, + heading_interpolate, heading_parameter, heading_status, heading); + if (!heading->status.estimate_status) + heading->heading_angle = heading_angle; + if (gnss_status) + heading->status.estimate_status = true; } \ No newline at end of file diff --git a/eagleye_core/navigation/src/heading_interpolate.cpp b/eagleye_core/navigation/src/heading_interpolate.cpp old mode 100755 new mode 100644 index 193ea89c..ef1bc5d6 --- a/eagleye_core/navigation/src/heading_interpolate.cpp +++ b/eagleye_core/navigation/src/heading_interpolate.cpp @@ -31,11 +31,15 @@ #include "eagleye_coordinate/eagleye_coordinate.hpp" #include "eagleye_navigation/eagleye_navigation.hpp" -void heading_interpolate_estimate(const sensor_msgs::msg::Imu imu, const geometry_msgs::msg::TwistStamped velocity, - const eagleye_msgs::msg::YawrateOffset yaw_rate_offset_stop, const eagleye_msgs::msg::YawrateOffset yaw_rate_offset, const eagleye_msgs::msg::Heading heading, - const eagleye_msgs::msg::SlipAngle slip_angle,const HeadingInterpolateParameter heading_interpolate_parameter, HeadingInterpolateStatus* heading_interpolate_status, - eagleye_msgs::msg::Heading* heading_interpolate) -{ +void heading_interpolate_estimate(const sensor_msgs::msg::Imu imu, + const geometry_msgs::msg::TwistStamped velocity, + const eagleye_msgs::msg::YawrateOffset yaw_rate_offset_stop, + const eagleye_msgs::msg::YawrateOffset yaw_rate_offset, + const eagleye_msgs::msg::Heading heading, + const eagleye_msgs::msg::SlipAngle slip_angle, + const HeadingInterpolateParameter heading_interpolate_parameter, + HeadingInterpolateStatus* heading_interpolate_status, + eagleye_msgs::msg::Heading* heading_interpolate) { int i; int estimate_index = 0; double yaw_rate = 0.0; @@ -45,7 +49,8 @@ void heading_interpolate_estimate(const sensor_msgs::msg::Imu imu, const geometr double proc_noise = heading_interpolate_parameter.proc_noise; - double search_buffer_number = heading_interpolate_parameter.sync_search_period * heading_interpolate_parameter.imu_rate; + double search_buffer_number = + heading_interpolate_parameter.sync_search_period * heading_interpolate_parameter.imu_rate; rclcpp::Time ros_clock(heading.header.stamp); rclcpp::Time ros_clock2(imu.header.stamp); @@ -54,104 +59,94 @@ void heading_interpolate_estimate(const sensor_msgs::msg::Imu imu, const geometr yaw_rate = imu.angular_velocity.z; - if (std::abs(velocity.twist.linear.x) > heading_interpolate_parameter.stop_judgment_threshold) - { + if (std::abs(velocity.twist.linear.x) > heading_interpolate_parameter.stop_judgment_threshold) { yaw_rate = yaw_rate + yaw_rate_offset.yaw_rate_offset; - } - else - { + } else { yaw_rate = yaw_rate + yaw_rate_offset_stop.yaw_rate_offset; } - if (heading_interpolate_status->number_buffer < search_buffer_number) - { + if (heading_interpolate_status->number_buffer < search_buffer_number) { ++heading_interpolate_status->number_buffer; - } - else - { + } else { heading_interpolate_status->number_buffer = search_buffer_number; } - if (heading_interpolate_status->heading_stamp_last != heading_time && heading.status.estimate_status == true) - { + if (heading_interpolate_status->heading_stamp_last != heading_time && + heading.status.estimate_status == true) { heading_estimate_status = true; heading_interpolate_status->heading_estimate_start_status = true; ++heading_interpolate_status->heading_estimate_status_count; - } - else - { + } else { heading_estimate_status = false; } - if(heading_interpolate_status->time_last != 0 && std::abs(velocity.twist.linear.x) > - heading_interpolate_parameter.stop_judgment_threshold) - { - heading_interpolate_status->provisional_heading_angle = heading_interpolate_status->provisional_heading_angle + (yaw_rate * (imu_time - heading_interpolate_status->time_last)); - heading_interpolate_status->heading_variance_last += proc_noise*proc_noise; + if (heading_interpolate_status->time_last != 0 && + std::abs(velocity.twist.linear.x) > heading_interpolate_parameter.stop_judgment_threshold) { + heading_interpolate_status->provisional_heading_angle = + heading_interpolate_status->provisional_heading_angle + + (yaw_rate * (imu_time - heading_interpolate_status->time_last)); + heading_interpolate_status->heading_variance_last += proc_noise * proc_noise; } // data buffer generate - heading_interpolate_status->provisional_heading_angle_buffer.push_back(heading_interpolate_status->provisional_heading_angle); + heading_interpolate_status->provisional_heading_angle_buffer.push_back( + heading_interpolate_status->provisional_heading_angle); heading_interpolate_status->imu_stamp_buffer.push_back(imu_time); - imu_stamp_buffer_length = std::distance(heading_interpolate_status->imu_stamp_buffer.begin(), heading_interpolate_status->imu_stamp_buffer.end()); - - if (imu_stamp_buffer_length > search_buffer_number) - { - heading_interpolate_status->provisional_heading_angle_buffer.erase(heading_interpolate_status->provisional_heading_angle_buffer .begin()); - heading_interpolate_status->imu_stamp_buffer.erase(heading_interpolate_status->imu_stamp_buffer .begin()); + imu_stamp_buffer_length = std::distance(heading_interpolate_status->imu_stamp_buffer.begin(), + heading_interpolate_status->imu_stamp_buffer.end()); + + if (imu_stamp_buffer_length > search_buffer_number) { + heading_interpolate_status->provisional_heading_angle_buffer.erase( + heading_interpolate_status->provisional_heading_angle_buffer.begin()); + heading_interpolate_status->imu_stamp_buffer.erase( + heading_interpolate_status->imu_stamp_buffer.begin()); } - if (heading_interpolate_status->heading_estimate_start_status == true) - { - if (heading_estimate_status == true) - { - for (estimate_index = heading_interpolate_status->number_buffer; estimate_index > 0; estimate_index--) - { - if (heading_interpolate_status->imu_stamp_buffer[estimate_index-1] == heading_time) - { + if (heading_interpolate_status->heading_estimate_start_status == true) { + if (heading_estimate_status == true) { + for (estimate_index = heading_interpolate_status->number_buffer; estimate_index > 0; + estimate_index--) { + if (heading_interpolate_status->imu_stamp_buffer[estimate_index - 1] == heading_time) { break; } } } - if (heading_estimate_status == true && estimate_index > 0 && heading_interpolate_status->number_buffer >= estimate_index && - heading_interpolate_status->heading_estimate_status_count > 1) - { + if (heading_estimate_status == true && estimate_index > 0 && + heading_interpolate_status->number_buffer >= estimate_index && + heading_interpolate_status->heading_estimate_status_count > 1) { double heading_variance = heading.variance; - diff_estimate_heading_angle = (heading_interpolate_status->provisional_heading_angle_buffer[estimate_index-1] - heading.heading_angle); - for (i = estimate_index; i <= heading_interpolate_status->number_buffer; i++) - { - heading_interpolate_status->provisional_heading_angle_buffer[i-1] = heading_interpolate_status->provisional_heading_angle_buffer[i-1] - + diff_estimate_heading_angle = + (heading_interpolate_status->provisional_heading_angle_buffer[estimate_index - 1] - + heading.heading_angle); + for (i = estimate_index; i <= heading_interpolate_status->number_buffer; i++) { + heading_interpolate_status->provisional_heading_angle_buffer[i - 1] = + heading_interpolate_status->provisional_heading_angle_buffer[i - 1] - diff_estimate_heading_angle; - heading_variance += proc_noise*proc_noise; + heading_variance += proc_noise * proc_noise; } heading_interpolate_status->provisional_heading_angle = - heading_interpolate_status->provisional_heading_angle_buffer[heading_interpolate_status->number_buffer-1]; + heading_interpolate_status + ->provisional_heading_angle_buffer[heading_interpolate_status->number_buffer - 1]; heading_interpolate->status.enabled_status = true; heading_interpolate->status.estimate_status = true; heading_interpolate_status->heading_variance_last = heading_variance; - } - else if (heading_interpolate_status->heading_estimate_status_count == 1) - { + } else if (heading_interpolate_status->heading_estimate_status_count == 1) { heading_interpolate_status->provisional_heading_angle = heading.heading_angle; heading_interpolate->status.enabled_status = true; heading_interpolate->status.estimate_status = false; heading_interpolate_status->heading_variance_last = heading.variance; - } - else - { + } else { heading_interpolate->status.estimate_status = false; } } - if (heading_interpolate_status->heading_estimate_start_status == true) - { - heading_interpolate->heading_angle = heading_interpolate_status->provisional_heading_angle + slip_angle.slip_angle; + if (heading_interpolate_status->heading_estimate_start_status == true) { + heading_interpolate->heading_angle = + heading_interpolate_status->provisional_heading_angle + slip_angle.slip_angle; heading_interpolate->variance = heading_interpolate_status->heading_variance_last; - } - else - { + } else { heading_interpolate->heading_angle = 0.0; heading_interpolate->status.enabled_status = false; heading_interpolate->status.estimate_status = false; @@ -159,5 +154,4 @@ void heading_interpolate_estimate(const sensor_msgs::msg::Imu imu, const geometr heading_interpolate_status->time_last = imu_time; heading_interpolate_status->heading_stamp_last = heading_time; - } diff --git a/eagleye_core/navigation/src/height.cpp b/eagleye_core/navigation/src/height.cpp old mode 100755 new mode 100644 index f6dffb79..50523393 --- a/eagleye_core/navigation/src/height.cpp +++ b/eagleye_core/navigation/src/height.cpp @@ -33,10 +33,13 @@ #define g 9.80665 -void pitching_estimate(const sensor_msgs::msg::Imu imu, const nmea_msgs::msg::Gpgga gga, const geometry_msgs::msg::TwistStamped velocity, - const eagleye_msgs::msg::Distance distance,const HeightParameter height_parameter,HeightStatus* height_status,eagleye_msgs::msg::Height* height, - eagleye_msgs::msg::Pitching* pitching,eagleye_msgs::msg::AccXOffset* acc_x_offset,eagleye_msgs::msg::AccXScaleFactor* acc_x_scale_factor) -{ +void pitching_estimate(const sensor_msgs::msg::Imu imu, const nmea_msgs::msg::Gpgga gga, + const geometry_msgs::msg::TwistStamped velocity, + const eagleye_msgs::msg::Distance distance, + const HeightParameter height_parameter, HeightStatus* height_status, + eagleye_msgs::msg::Height* height, eagleye_msgs::msg::Pitching* pitching, + eagleye_msgs::msg::AccXOffset* acc_x_offset, + eagleye_msgs::msg::AccXScaleFactor* acc_x_scale_factor) { int gps_quality = 0; double gnss_height = 0.0; double diff_height = 0.0; @@ -66,8 +69,10 @@ void pitching_estimate(const sensor_msgs::msg::Imu imu, const nmea_msgs::msg::Gp int buffer_erase_count = 0; - double moving_average_buffer_number = height_parameter.moving_average_time * height_parameter.imu_rate; - double enabled_data_ratio = height_parameter.gnss_rate / height_parameter.imu_rate * height_parameter.gnss_receiving_threshold; + double moving_average_buffer_number = + height_parameter.moving_average_time * height_parameter.imu_rate; + double enabled_data_ratio = height_parameter.gnss_rate / height_parameter.imu_rate * + height_parameter.gnss_receiving_threshold; double remain_data_ratio = enabled_data_ratio * height_parameter.outlier_ratio_threshold; rclcpp::Time ros_clock(gga.header.stamp); @@ -75,16 +80,13 @@ void pitching_estimate(const sensor_msgs::msg::Imu imu, const nmea_msgs::msg::Gp auto gga_time = ros_clock.seconds(); auto imu_time = ros_clock2.seconds(); -/// GNSS FLAG /// - if (height_status->gga_time_last == gga_time) - { + /// GNSS FLAG /// + if (height_status->gga_time_last == gga_time) { gnss_status = false; gnss_height = 0.0; gps_quality = 0; height_status->gga_time_last = gga_time; - } - else - { + } else { gnss_status = true; gnss_height = gga.alt + gga.undulation; gps_quality = gga.gps_qual; @@ -93,18 +95,23 @@ void pitching_estimate(const sensor_msgs::msg::Imu imu, const nmea_msgs::msg::Gp height_status->flag_reliability = false; -/// relative_height /// - if (velocity.twist.linear.x > 0 && height_status->time_last != 0) - { - height_status->relative_height_G += imu.linear_acceleration.x * velocity.twist.linear.x*(imu_time-height_status->time_last)/g; - height_status->relative_height_diffvel += - (velocity.twist.linear.x-height_status->correction_velocity_x_last) * velocity.twist.linear.x/g; - height_status->relative_height_offset += velocity.twist.linear.x*(imu_time-height_status->time_last)/g; - correction_relative_height = height_status->relative_height_G + height_status->relative_height_offset + height_status->relative_height_diffvel; + /// relative_height /// + if (velocity.twist.linear.x > 0 && height_status->time_last != 0) { + height_status->relative_height_G += imu.linear_acceleration.x * velocity.twist.linear.x * + (imu_time - height_status->time_last) / g; + height_status->relative_height_diffvel += + -(velocity.twist.linear.x - height_status->correction_velocity_x_last) * + velocity.twist.linear.x / g; + height_status->relative_height_offset += + velocity.twist.linear.x * (imu_time - height_status->time_last) / g; + correction_relative_height = height_status->relative_height_G + + height_status->relative_height_offset + + height_status->relative_height_diffvel; } -/// buffering /// - if (distance.distance-height_status->distance_last >= height_parameter.update_distance && gnss_status == true && gps_quality == 4) - { + /// buffering /// + if (distance.distance - height_status->distance_last >= height_parameter.update_distance && + gnss_status == true && gps_quality == 4) { height_status->height_buffer.push_back(gnss_height); height_status->relative_height_G_buffer.push_back(height_status->relative_height_G); height_status->relative_height_diffvel_buffer.push_back(height_status->relative_height_diffvel); @@ -114,40 +121,42 @@ void pitching_estimate(const sensor_msgs::msg::Imu imu, const nmea_msgs::msg::Gp height_status->distance_buffer.push_back(distance.distance); data_status = true; - if (height_status->distance_buffer[height_status->data_number-1] - height_status->distance_buffer[0] > height_parameter.estimated_maximum_interval) - { + if (height_status->distance_buffer[height_status->data_number - 1] - + height_status->distance_buffer[0] > + height_parameter.estimated_maximum_interval) { height_status->height_buffer.erase(height_status->height_buffer.begin()); - height_status->relative_height_G_buffer.erase(height_status->relative_height_G_buffer.begin()); - height_status->relative_height_diffvel_buffer.erase(height_status->relative_height_diffvel_buffer.begin()); - height_status->relative_height_offset_buffer.erase(height_status->relative_height_offset_buffer.begin()); - height_status->correction_relative_height_buffer.erase(height_status->correction_relative_height_buffer.begin()); - height_status->correction_velocity_buffer.erase(height_status->correction_velocity_buffer.begin()); + height_status->relative_height_G_buffer.erase( + height_status->relative_height_G_buffer.begin()); + height_status->relative_height_diffvel_buffer.erase( + height_status->relative_height_diffvel_buffer.begin()); + height_status->relative_height_offset_buffer.erase( + height_status->relative_height_offset_buffer.begin()); + height_status->correction_relative_height_buffer.erase( + height_status->correction_relative_height_buffer.begin()); + height_status->correction_velocity_buffer.erase( + height_status->correction_velocity_buffer.begin()); height_status->distance_buffer.erase(height_status->distance_buffer.begin()); height_status->acceleration_SF_estimate_status = true; } height_status->data_number = height_status->distance_buffer.size(); - if (height_status->distance_buffer[height_status->data_number-1]- height_status->distance_buffer[0] > height_parameter.estimated_minimum_interval) - { + if (height_status->distance_buffer[height_status->data_number - 1] - + height_status->distance_buffer[0] > + height_parameter.estimated_minimum_interval) { height_status->estimate_start_status = true; - } - else - { + } else { height_status->estimate_start_status = false; } height_status->distance_last = distance.distance; - } height_status->data_number = height_status->distance_buffer.size(); -/// acc_x error estimate /// - if (height_status->estimate_start_status == true && gnss_status == true && data_status == true) - { - -/// Explanation /// + /// acc_x error estimate /// + if (height_status->estimate_start_status == true && gnss_status == true && data_status == true) { + /// Explanation /// A = 0.0; B = 0.0; @@ -155,39 +164,41 @@ void pitching_estimate(const sensor_msgs::msg::Imu imu, const nmea_msgs::msg::Gp D = 0.0; E = 0.0; - if (height_status->acceleration_SF_estimate_status == true) - { - for (i = 0; i < height_status->data_number; i++) - { + if (height_status->acceleration_SF_estimate_status == true) { + for (i = 0; i < height_status->data_number; i++) { diff_height = height_status->height_buffer[i] - height_status->height_buffer[0]; - diff_relative_height_G = height_status->relative_height_G_buffer[i] - height_status->relative_height_G_buffer[0]; - diff_relative_height_diffvel = height_status->relative_height_diffvel_buffer[i] - height_status->relative_height_diffvel_buffer[0]; - diff_relative_height_offset = height_status->relative_height_offset_buffer[i] - height_status->relative_height_offset_buffer[0]; + diff_relative_height_G = + height_status->relative_height_G_buffer[i] - height_status->relative_height_G_buffer[0]; + diff_relative_height_diffvel = height_status->relative_height_diffvel_buffer[i] - + height_status->relative_height_diffvel_buffer[0]; + diff_relative_height_offset = height_status->relative_height_offset_buffer[i] - + height_status->relative_height_offset_buffer[0]; A += diff_relative_height_G * diff_relative_height_G; B += 2 * diff_relative_height_G * (diff_relative_height_diffvel - diff_height); C += 2 * diff_relative_height_G * diff_relative_height_offset; D += 2 * diff_relative_height_offset * (diff_relative_height_diffvel - diff_height); E += diff_relative_height_offset * diff_relative_height_offset; } - height_status->acceleration_offset_linear_x_last = (2*A*D - C*B)/(C*C - 4*A*E); - height_status->acceleration_SF_linear_x_last = (2*E*B - C*D)/(C*C - 4*A*E); + height_status->acceleration_offset_linear_x_last = (2 * A * D - C * B) / (C * C - 4 * A * E); + height_status->acceleration_SF_linear_x_last = (2 * E * B - C * D) / (C * C - 4 * A * E); acc_x_offset->status.enabled_status = true; acc_x_offset->status.estimate_status = true; acc_x_scale_factor->status.enabled_status = true; acc_x_scale_factor->status.estimate_status = true; - } - else - { - for (i = 0; i < height_status->data_number; i++) - { + } else { + for (i = 0; i < height_status->data_number; i++) { diff_height = height_status->height_buffer[i] - height_status->height_buffer[0]; - diff_relative_height = (height_status->relative_height_G_buffer[i] + height_status->relative_height_diffvel_buffer[i])- (height_status->relative_height_G_buffer[0] + height_status->relative_height_diffvel_buffer[0]); - diff_relative_height_offset = height_status->relative_height_offset_buffer[i] - height_status->relative_height_offset_buffer[0]; + diff_relative_height = (height_status->relative_height_G_buffer[i] + + height_status->relative_height_diffvel_buffer[i]) - + (height_status->relative_height_G_buffer[0] + + height_status->relative_height_diffvel_buffer[0]); + diff_relative_height_offset = height_status->relative_height_offset_buffer[i] - + height_status->relative_height_offset_buffer[0]; A += diff_relative_height_offset * diff_relative_height_offset; B += 2 * diff_relative_height_offset * (diff_height - diff_relative_height); } - height_status->acceleration_offset_linear_x_last = B/A/2; + height_status->acceleration_offset_linear_x_last = B / A / 2; height_status->acceleration_SF_linear_x_last = 1; acc_x_offset->status.enabled_status = true; acc_x_offset->status.estimate_status = true; @@ -195,23 +206,25 @@ void pitching_estimate(const sensor_msgs::msg::Imu imu, const nmea_msgs::msg::Gp acc_x_scale_factor->status.estimate_status = false; } - for (i = 0; i < height_status->data_number; i++) - { - height_status->correction_relative_height_buffer[i] = height_status->acceleration_SF_linear_x_last * height_status->relative_height_G_buffer[i] + height_status->relative_height_diffvel_buffer[i] + height_status->acceleration_offset_linear_x_last * height_status->relative_height_offset_buffer[i]; + for (i = 0; i < height_status->data_number; i++) { + height_status->correction_relative_height_buffer[i] = + height_status->acceleration_SF_linear_x_last * height_status->relative_height_G_buffer[i] + + height_status->relative_height_diffvel_buffer[i] + + height_status->acceleration_offset_linear_x_last * + height_status->relative_height_offset_buffer[i]; } } -/// height estimate /// - if (height_status->estimate_start_status == true) - { - if (distance.distance > height_parameter.estimated_minimum_interval && gnss_status == true && gps_quality ==4 && data_status == true && - velocity.twist.linear.x > height_parameter.moving_judgment_threshold ) - { + /// height estimate /// + if (height_status->estimate_start_status == true) { + if (distance.distance > height_parameter.estimated_minimum_interval && gnss_status == true && + gps_quality == 4 && data_status == true && + velocity.twist.linear.x > height_parameter.moving_judgment_threshold) { height_status->correction_relative_height_buffer2.clear(); height_status->height_buffer2.clear(); - for (i = 0; i < height_status->data_number; i++) - { - height_status->correction_relative_height_buffer2.push_back(height_status->correction_relative_height_buffer[i]); + for (i = 0; i < height_status->data_number; i++) { + height_status->correction_relative_height_buffer2.push_back( + height_status->correction_relative_height_buffer[i]); height_status->height_buffer2.push_back(height_status->height_buffer[i]); } @@ -219,21 +232,21 @@ void pitching_estimate(const sensor_msgs::msg::Imu imu, const nmea_msgs::msg::Gp std::vector velocity_index; std::vector index; - for (i = 0; i < height_status->data_number; i++) - { - if (height_status->distance_buffer[height_status->data_number-1] - height_status->distance_buffer[i] <= height_parameter.estimated_minimum_interval) - { + for (i = 0; i < height_status->data_number; i++) { + if (height_status->distance_buffer[height_status->data_number - 1] - + height_status->distance_buffer[i] <= + height_parameter.estimated_minimum_interval) { distance_index.push_back(i); - if (height_status->correction_velocity_buffer[i] > height_parameter.moving_judgment_threshold) - { + if (height_status->correction_velocity_buffer[i] > + height_parameter.moving_judgment_threshold) { velocity_index.push_back(i); } } } - set_intersection(velocity_index.begin(), velocity_index.end(), distance_index.begin(), distance_index.end(), - inserter(index, index.end())); + set_intersection(velocity_index.begin(), velocity_index.end(), distance_index.begin(), + distance_index.end(), inserter(index, index.end())); index_length = std::distance(index.begin(), index.end()); velocity_index_length = std::distance(velocity_index.begin(), velocity_index.end()); @@ -244,170 +257,170 @@ void pitching_estimate(const sensor_msgs::msg::Imu imu, const nmea_msgs::msg::Gp std::vector diff_height_buffer2; std::vector erase_number; - if (index_length > velocity_index_length * enabled_data_ratio) - { - - while (1) - { + if (index_length > velocity_index_length * enabled_data_ratio) { + while (1) { index_length = std::distance(index.begin(), index.end()); base_height_buffer.clear(); - for (i = 0; i < height_status->data_number; i++) - { - base_height_buffer.push_back(height_status->height_buffer2[index[index_length-1]] - height_status->correction_relative_height_buffer2[index[index_length-1]] + - height_status->correction_relative_height_buffer2[i]); + for (i = 0; i < height_status->data_number; i++) { + base_height_buffer.push_back( + height_status->height_buffer2[index[index_length - 1]] - + height_status->correction_relative_height_buffer2[index[index_length - 1]] + + height_status->correction_relative_height_buffer2[i]); } diff_height_buffer2.clear(); - for (i = 0; i < index_length; i++) - { - diff_height_buffer2.push_back(base_height_buffer[index[i]] - height_status->height_buffer2[index[i]]); + for (i = 0; i < index_length; i++) { + diff_height_buffer2.push_back(base_height_buffer[index[i]] - + height_status->height_buffer2[index[i]]); } - avg_height = std::accumulate(diff_height_buffer2.begin(), diff_height_buffer2.end(), 0.0) / index_length; + avg_height = + std::accumulate(diff_height_buffer2.begin(), diff_height_buffer2.end(), 0.0) / + index_length; tmp_height = height_status->height_buffer2[index[index_length - 1]] - avg_height; base_height_buffer2.clear(); - for (i = 0; i < height_status->data_number; i++) - { - base_height_buffer2.push_back(tmp_height - height_status->correction_relative_height_buffer2[index[index_length - 1]] + height_status->correction_relative_height_buffer2[i]); + for (i = 0; i < height_status->data_number; i++) { + base_height_buffer2.push_back( + tmp_height - + height_status->correction_relative_height_buffer2[index[index_length - 1]] + + height_status->correction_relative_height_buffer2[i]); } diff_height_buffer.clear(); - for (i = 0; i < index_length; i++) - { - diff_height_buffer.push_back(std::fabs(base_height_buffer2[index[i]] - height_status->height_buffer2[index[i]])); + for (i = 0; i < index_length; i++) { + diff_height_buffer.push_back( + std::fabs(base_height_buffer2[index[i]] - height_status->height_buffer2[index[i]])); } max_height = std::max_element(diff_height_buffer.begin(), diff_height_buffer.end()); max_height_index = std::distance(diff_height_buffer.begin(), max_height); - if (diff_height_buffer[max_height_index] > height_parameter.outlier_threshold) - { - if (height_status->height_estimate_start_status != true) - { + if (diff_height_buffer[max_height_index] > height_parameter.outlier_threshold) { + if (height_status->height_estimate_start_status != true) { erase_number.push_back(index[max_height_index]); - buffer_erase_count = buffer_erase_count + 1; - } - else if (index[max_height_index] == height_status->data_number-1) - { - height_status->height_buffer.erase(height_status->height_buffer.begin() + index[max_height_index]); - height_status->relative_height_G_buffer.erase(height_status->relative_height_G_buffer.begin() + index[max_height_index]); - height_status->relative_height_diffvel_buffer.erase(height_status->relative_height_diffvel_buffer.begin() + index[max_height_index]); - height_status->relative_height_offset_buffer.erase(height_status->relative_height_offset_buffer.begin() + index[max_height_index]); - height_status->correction_relative_height_buffer.erase(height_status->correction_relative_height_buffer.begin() + index[max_height_index]); - height_status->correction_velocity_buffer.erase(height_status->correction_velocity_buffer.begin() + index[max_height_index]); - height_status->distance_buffer.erase(height_status->distance_buffer.begin() + index[max_height_index]); + buffer_erase_count = buffer_erase_count + 1; + } else if (index[max_height_index] == height_status->data_number - 1) { + height_status->height_buffer.erase(height_status->height_buffer.begin() + + index[max_height_index]); + height_status->relative_height_G_buffer.erase( + height_status->relative_height_G_buffer.begin() + index[max_height_index]); + height_status->relative_height_diffvel_buffer.erase( + height_status->relative_height_diffvel_buffer.begin() + index[max_height_index]); + height_status->relative_height_offset_buffer.erase( + height_status->relative_height_offset_buffer.begin() + index[max_height_index]); + height_status->correction_relative_height_buffer.erase( + height_status->correction_relative_height_buffer.begin() + index[max_height_index]); + height_status->correction_velocity_buffer.erase( + height_status->correction_velocity_buffer.begin() + index[max_height_index]); + height_status->distance_buffer.erase(height_status->distance_buffer.begin() + + index[max_height_index]); } index.erase(index.begin() + max_height_index); - } - else - { + } else { break; } - - index_length = std::distance(index.begin(), index.end()); velocity_index_length = std::distance(velocity_index.begin(), velocity_index.end()); - if (index_length < velocity_index_length * remain_data_ratio) - { + if (index_length < velocity_index_length * remain_data_ratio) { break; } } - if(height_status->height_estimate_start_status != true) - { - std::sort(erase_number.begin(), erase_number.end(), std::greater() ); - for(i=0;iheight_buffer.erase(height_status->height_buffer.begin() + erase_number[i]); - height_status->relative_height_G_buffer.erase(height_status->relative_height_G_buffer.begin() + erase_number[i]); - height_status->relative_height_diffvel_buffer.erase(height_status->relative_height_diffvel_buffer.begin() + erase_number[i]); - height_status->relative_height_offset_buffer.erase(height_status->relative_height_offset_buffer.begin() + erase_number[i]); - height_status->correction_relative_height_buffer.erase(height_status->correction_relative_height_buffer.begin() + erase_number[i]); - height_status->correction_velocity_buffer.erase(height_status->correction_velocity_buffer.begin() + erase_number[i]); - height_status->distance_buffer.erase(height_status->distance_buffer.begin() + erase_number[i]); + if (height_status->height_estimate_start_status != true) { + std::sort(erase_number.begin(), erase_number.end(), std::greater()); + for (i = 0; i < buffer_erase_count; i++) { + height_status->height_buffer.erase(height_status->height_buffer.begin() + + erase_number[i]); + height_status->relative_height_G_buffer.erase( + height_status->relative_height_G_buffer.begin() + erase_number[i]); + height_status->relative_height_diffvel_buffer.erase( + height_status->relative_height_diffvel_buffer.begin() + erase_number[i]); + height_status->relative_height_offset_buffer.erase( + height_status->relative_height_offset_buffer.begin() + erase_number[i]); + height_status->correction_relative_height_buffer.erase( + height_status->correction_relative_height_buffer.begin() + erase_number[i]); + height_status->correction_velocity_buffer.erase( + height_status->correction_velocity_buffer.begin() + erase_number[i]); + height_status->distance_buffer.erase(height_status->distance_buffer.begin() + + erase_number[i]); } } - - height_status->height_estimate_start_status = true; index_length = std::distance(index.begin(), index.end()); velocity_index_length = std::distance(velocity_index.begin(), velocity_index.end()); - if (index_length >= velocity_index_length * remain_data_ratio) - { - if (index[index_length - 1] == height_status->data_number-1) - { + if (index_length >= velocity_index_length * remain_data_ratio) { + if (index[index_length - 1] == height_status->data_number - 1) { height_status->height_last = tmp_height; height->status.enabled_status = true; height->status.estimate_status = true; height_status->flag_reliability = true; - } - else - { - height_status->height_last = tmp_height + (height_status->correction_relative_height_buffer2[height_status->data_number - 1] - - height_status->correction_relative_height_buffer2[index[index_length - 1]]); + } else { + height_status->height_last = + tmp_height + + (height_status->correction_relative_height_buffer2[height_status->data_number - 1] - + height_status->correction_relative_height_buffer2[index[index_length - 1]]); height->status.enabled_status = true; height->status.estimate_status = true; height_status->flag_reliability = false; } } } - } - else - { - height_status->height_last += ((imu.linear_acceleration.x * height_status->acceleration_SF_linear_x_last + height_status->acceleration_offset_linear_x_last) - - (velocity.twist.linear.x-height_status->correction_velocity_x_last)/(imu_time-height_status->time_last)) - * velocity.twist.linear.x*(imu_time-height_status->time_last)/g; + } else { + height_status->height_last += + ((imu.linear_acceleration.x * height_status->acceleration_SF_linear_x_last + + height_status->acceleration_offset_linear_x_last) - + (velocity.twist.linear.x - height_status->correction_velocity_x_last) / + (imu_time - height_status->time_last)) * + velocity.twist.linear.x * (imu_time - height_status->time_last) / g; height->status.enabled_status = true; height->status.estimate_status = false; } } -/// pitch /// - correction_acceleration_linear_x = imu.linear_acceleration.x * height_status->acceleration_SF_linear_x_last + height_status->acceleration_offset_linear_x_last; - height_status->acc_buffer.push_back((correction_acceleration_linear_x - (velocity.twist.linear.x-height_status->correction_velocity_x_last)/(imu_time-height_status->time_last))); + /// pitch /// + correction_acceleration_linear_x = + imu.linear_acceleration.x * height_status->acceleration_SF_linear_x_last + + height_status->acceleration_offset_linear_x_last; + height_status->acc_buffer.push_back( + (correction_acceleration_linear_x - + (velocity.twist.linear.x - height_status->correction_velocity_x_last) / + (imu_time - height_status->time_last))); data_num_acc = height_status->acc_buffer.size(); - if (data_num_acc > moving_average_buffer_number) - { + if (data_num_acc > moving_average_buffer_number) { height_status->acc_buffer.erase(height_status->acc_buffer.begin()); data_num_acc--; } - if (data_num_acc >= moving_average_buffer_number && height_status->estimate_start_status == true) - { + if (data_num_acc >= moving_average_buffer_number && + height_status->estimate_start_status == true) { sum_acc = 0; - for (i = 0; i < data_num_acc; i++) - { + for (i = 0; i < data_num_acc; i++) { sum_acc += height_status->acc_buffer[i]; } mean_acc = sum_acc / data_num_acc; - if (std::abs(mean_acc/g) < 1) - { - tmp_pitch = std::asin(mean_acc/g); + if (std::abs(mean_acc / g) < 1) { + tmp_pitch = std::asin(mean_acc / g); pitching->status.enabled_status = true; pitching->status.estimate_status = true; - } - else - { + } else { tmp_pitch = height_status->pitching_angle_last; pitching->status.enabled_status = false; pitching->status.estimate_status = true; } - } - else - { + } else { tmp_pitch = 0; pitching->status.enabled_status = false; pitching->status.estimate_status = false; diff --git a/eagleye_core/navigation/src/position.cpp b/eagleye_core/navigation/src/position.cpp old mode 100755 new mode 100644 index 9e672719..f681b4bb --- a/eagleye_core/navigation/src/position.cpp +++ b/eagleye_core/navigation/src/position.cpp @@ -31,12 +31,16 @@ #include "eagleye_coordinate/eagleye_coordinate.hpp" #include "eagleye_navigation/eagleye_navigation.hpp" -void position_estimate_(geometry_msgs::msg::TwistStamped velocity,eagleye_msgs::msg::StatusStamped velocity_status,eagleye_msgs::msg::Distance distance, - eagleye_msgs::msg::Heading heading_interpolate_3rd,geometry_msgs::msg::Vector3Stamped enu_vel,PositionParameter position_parameter, - PositionStatus* position_status, eagleye_msgs::msg::Position* enu_absolute_pos) -{ +void position_estimate_(geometry_msgs::msg::TwistStamped velocity, + eagleye_msgs::msg::StatusStamped velocity_status, + eagleye_msgs::msg::Distance distance, + eagleye_msgs::msg::Heading heading_interpolate_3rd, + geometry_msgs::msg::Vector3Stamped enu_vel, + PositionParameter position_parameter, PositionStatus* position_status, + eagleye_msgs::msg::Position* enu_absolute_pos) { int i; - int estimated_number_max = position_parameter.estimated_interval/position_parameter.update_distance; + int estimated_number_max = + position_parameter.estimated_interval / position_parameter.update_distance; int max_x_index, max_y_index; double enu_pos[3]; double avg_x, avg_y, avg_z; @@ -46,11 +50,12 @@ void position_estimate_(geometry_msgs::msg::TwistStamped velocity,eagleye_msgs:: std::size_t velocity_index_length; std::vector base_enu_pos_x_buffer, base_enu_pos_y_buffer, base_enu_pos_z_buffer; std::vector diff_x_buffer2, diff_y_buffer2, diff_z_buffer2; - std::vector base_enu_pos_x_buffer2, base_enu_pos_y_buffer2, base_enu_pos_z_buffer2; + std::vector base_enu_pos_x_buffer2, base_enu_pos_y_buffer2, base_enu_pos_z_buffer2; std::vector diff_x_buffer, diff_y_buffer, diff_z_buffer; std::vector::iterator max_x, max_y; - double enabled_data_ratio = position_parameter.gnss_rate / position_parameter.imu_rate * position_parameter.gnss_receiving_threshold; + double enabled_data_ratio = position_parameter.gnss_rate / position_parameter.imu_rate * + position_parameter.gnss_receiving_threshold; double remain_data_ratio = enabled_data_ratio * position_parameter.outlier_ratio_threshold; rclcpp::Time ros_clock(enu_vel.header.stamp); @@ -62,29 +67,30 @@ void position_estimate_(geometry_msgs::msg::TwistStamped velocity,eagleye_msgs:: gnss_status = !position_status->gnss_update_failure; - if (heading_interpolate_3rd.status.estimate_status == true && velocity_status.status.enabled_status == true) - { - heading_interpolate_3rd.status.estimate_status = false; //in order to prevent being judged many times + if (heading_interpolate_3rd.status.estimate_status == true && + velocity_status.status.enabled_status == true) { + heading_interpolate_3rd.status.estimate_status = + false; //in order to prevent being judged many times ++position_status->heading_estimate_status_count; } - if(position_status->time_last != 0) - { - position_status->enu_relative_pos_x = position_status->enu_relative_pos_x + enu_vel.vector.x * (enu_vel_time - position_status->time_last); - position_status->enu_relative_pos_y = position_status->enu_relative_pos_y + enu_vel.vector.y * (enu_vel_time - position_status->time_last); - position_status->enu_relative_pos_z = position_status->enu_relative_pos_z + enu_vel.vector.z * (enu_vel_time - position_status->time_last); + if (position_status->time_last != 0) { + position_status->enu_relative_pos_x = + position_status->enu_relative_pos_x + + enu_vel.vector.x * (enu_vel_time - position_status->time_last); + position_status->enu_relative_pos_y = + position_status->enu_relative_pos_y + + enu_vel.vector.y * (enu_vel_time - position_status->time_last); + position_status->enu_relative_pos_z = + position_status->enu_relative_pos_z + + enu_vel.vector.z * (enu_vel_time - position_status->time_last); } - if (distance.distance-position_status->distance_last >= position_parameter.update_distance && gnss_status == true && - position_status->heading_estimate_status_count > 0) - { - - if (position_status->estimated_number < estimated_number_max) - { + if (distance.distance - position_status->distance_last >= position_parameter.update_distance && + gnss_status == true && position_status->heading_estimate_status_count > 0) { + if (position_status->estimated_number < estimated_number_max) { ++position_status->estimated_number; - } - else - { + } else { position_status->estimated_number = estimated_number_max; } @@ -99,73 +105,73 @@ void position_estimate_(geometry_msgs::msg::TwistStamped velocity,eagleye_msgs:: position_status->enu_relative_pos_z_buffer.push_back(0); position_status->distance_buffer.push_back(distance.distance); - data_status = true; //judgment that refreshed data + data_status = true; //judgment that refreshed data - if (position_status->distance_buffer.end() - position_status->distance_buffer.begin() > estimated_number_max) - { + if (position_status->distance_buffer.end() - position_status->distance_buffer.begin() > + estimated_number_max) { position_status->enu_pos_x_buffer.erase(position_status->enu_pos_x_buffer.begin()); position_status->enu_pos_y_buffer.erase(position_status->enu_pos_y_buffer.begin()); position_status->enu_pos_z_buffer.erase(position_status->enu_pos_z_buffer.begin()); - position_status->correction_velocity_buffer.erase(position_status->correction_velocity_buffer.begin()); - position_status->enu_relative_pos_x_buffer.erase(position_status->enu_relative_pos_x_buffer.begin()); - position_status->enu_relative_pos_y_buffer.erase(position_status->enu_relative_pos_y_buffer.begin()); - position_status->enu_relative_pos_z_buffer.erase(position_status->enu_relative_pos_z_buffer.begin()); + position_status->correction_velocity_buffer.erase( + position_status->correction_velocity_buffer.begin()); + position_status->enu_relative_pos_x_buffer.erase( + position_status->enu_relative_pos_x_buffer.begin()); + position_status->enu_relative_pos_y_buffer.erase( + position_status->enu_relative_pos_y_buffer.begin()); + position_status->enu_relative_pos_z_buffer.erase( + position_status->enu_relative_pos_z_buffer.begin()); position_status->distance_buffer.erase(position_status->distance_buffer.begin()); } position_status->distance_last = distance.distance; } - if (data_status) - { - + if (data_status) { if (distance.distance > position_parameter.estimated_interval && gnss_status && - velocity.twist.linear.x > position_parameter.moving_judgment_threshold && position_status->heading_estimate_status_count > 0) - { + velocity.twist.linear.x > position_parameter.moving_judgment_threshold && + position_status->heading_estimate_status_count > 0) { std::vector distance_index; std::vector velocity_index; std::vector index; - for (i = 0; i < position_status->estimated_number; i++) - { - if (position_status->distance_buffer[position_status->estimated_number-1] - position_status->distance_buffer[i] <= position_parameter.estimated_interval) - { + for (i = 0; i < position_status->estimated_number; i++) { + if (position_status->distance_buffer[position_status->estimated_number - 1] - + position_status->distance_buffer[i] <= + position_parameter.estimated_interval) { distance_index.push_back(i); - if (position_status->correction_velocity_buffer[i] > position_parameter.moving_judgment_threshold) - { + if (position_status->correction_velocity_buffer[i] > + position_parameter.moving_judgment_threshold) { velocity_index.push_back(i); } - } } - set_intersection(velocity_index.begin(), velocity_index.end(), distance_index.begin(), distance_index.end(), - inserter(index, index.end())); + set_intersection(velocity_index.begin(), velocity_index.end(), distance_index.begin(), + distance_index.end(), inserter(index, index.end())); index_length = std::distance(index.begin(), index.end()); velocity_index_length = std::distance(velocity_index.begin(), velocity_index.end()); - if (index_length > velocity_index_length * enabled_data_ratio) - { - - while (1) - { + if (index_length > velocity_index_length * enabled_data_ratio) { + while (1) { index_length = std::distance(index.begin(), index.end()); base_enu_pos_x_buffer.clear(); base_enu_pos_y_buffer.clear(); base_enu_pos_z_buffer.clear(); - for (i = 0; i < position_status->estimated_number; i++) - { - base_enu_pos_x_buffer.push_back(position_status->enu_pos_x_buffer[index[index_length-1]]- - position_status->enu_relative_pos_x_buffer[index[index_length-1]] + + for (i = 0; i < position_status->estimated_number; i++) { + base_enu_pos_x_buffer.push_back( + position_status->enu_pos_x_buffer[index[index_length - 1]] - + position_status->enu_relative_pos_x_buffer[index[index_length - 1]] + position_status->enu_relative_pos_x_buffer[i]); - base_enu_pos_y_buffer.push_back(position_status->enu_pos_y_buffer[index[index_length-1]] - - position_status->enu_relative_pos_y_buffer[index[index_length-1]] + + base_enu_pos_y_buffer.push_back( + position_status->enu_pos_y_buffer[index[index_length - 1]] - + position_status->enu_relative_pos_y_buffer[index[index_length - 1]] + position_status->enu_relative_pos_y_buffer[i]); - base_enu_pos_z_buffer.push_back(position_status->enu_pos_z_buffer[index[index_length-1]] - - position_status->enu_relative_pos_z_buffer[index[index_length-1]] + + base_enu_pos_z_buffer.push_back( + position_status->enu_pos_z_buffer[index[index_length - 1]] - + position_status->enu_relative_pos_z_buffer[index[index_length - 1]] + position_status->enu_relative_pos_z_buffer[i]); } @@ -173,11 +179,13 @@ void position_estimate_(geometry_msgs::msg::TwistStamped velocity,eagleye_msgs:: diff_y_buffer2.clear(); diff_z_buffer2.clear(); - for (i = 0; i < index_length; i++) - { - diff_x_buffer2.push_back(base_enu_pos_x_buffer[index[i]] - position_status->enu_pos_x_buffer[index[i]]); - diff_y_buffer2.push_back(base_enu_pos_y_buffer[index[i]] - position_status->enu_pos_y_buffer[index[i]]); - diff_z_buffer2.push_back(base_enu_pos_z_buffer[index[i]] - position_status->enu_pos_z_buffer[index[i]]); + for (i = 0; i < index_length; i++) { + diff_x_buffer2.push_back(base_enu_pos_x_buffer[index[i]] - + position_status->enu_pos_x_buffer[index[i]]); + diff_y_buffer2.push_back(base_enu_pos_y_buffer[index[i]] - + position_status->enu_pos_y_buffer[index[i]]); + diff_z_buffer2.push_back(base_enu_pos_z_buffer[index[i]] - + position_status->enu_pos_z_buffer[index[i]]); } avg_x = std::accumulate(diff_x_buffer2.begin(), diff_x_buffer2.end(), 0.0) / index_length; @@ -192,13 +200,15 @@ void position_estimate_(geometry_msgs::msg::TwistStamped velocity,eagleye_msgs:: base_enu_pos_y_buffer2.clear(); base_enu_pos_z_buffer2.clear(); - for (i = 0; i < position_status->estimated_number; i++) - { - base_enu_pos_x_buffer2.push_back(tmp_enu_pos_x - position_status->enu_relative_pos_x_buffer[index[index_length - 1]] + + for (i = 0; i < position_status->estimated_number; i++) { + base_enu_pos_x_buffer2.push_back( + tmp_enu_pos_x - position_status->enu_relative_pos_x_buffer[index[index_length - 1]] + position_status->enu_relative_pos_x_buffer[i]); - base_enu_pos_y_buffer2.push_back(tmp_enu_pos_y - position_status->enu_relative_pos_y_buffer[index[index_length - 1]] + + base_enu_pos_y_buffer2.push_back( + tmp_enu_pos_y - position_status->enu_relative_pos_y_buffer[index[index_length - 1]] + position_status->enu_relative_pos_y_buffer[i]); - base_enu_pos_z_buffer2.push_back(tmp_enu_pos_z - position_status->enu_relative_pos_z_buffer[index[index_length - 1]] + + base_enu_pos_z_buffer2.push_back( + tmp_enu_pos_z - position_status->enu_relative_pos_z_buffer[index[index_length - 1]] + position_status->enu_relative_pos_z_buffer[i]); } @@ -206,11 +216,13 @@ void position_estimate_(geometry_msgs::msg::TwistStamped velocity,eagleye_msgs:: diff_y_buffer.clear(); diff_z_buffer.clear(); - for (i = 0; i < index_length; i++) - { - diff_x_buffer.push_back(fabsf(base_enu_pos_x_buffer2[index[i]] - position_status->enu_pos_x_buffer[index[i]])); - diff_y_buffer.push_back(fabsf(base_enu_pos_y_buffer2[index[i]] - position_status->enu_pos_y_buffer[index[i]])); - diff_z_buffer.push_back(fabsf(base_enu_pos_z_buffer2[index[i]] - position_status->enu_pos_z_buffer[index[i]])); + for (i = 0; i < index_length; i++) { + diff_x_buffer.push_back(fabsf(base_enu_pos_x_buffer2[index[i]] - + position_status->enu_pos_x_buffer[index[i]])); + diff_y_buffer.push_back(fabsf(base_enu_pos_y_buffer2[index[i]] - + position_status->enu_pos_y_buffer[index[i]])); + diff_z_buffer.push_back(fabsf(base_enu_pos_z_buffer2[index[i]] - + position_status->enu_pos_z_buffer[index[i]])); } max_x = std::max_element(diff_x_buffer.begin(), diff_x_buffer.end()); @@ -219,25 +231,16 @@ void position_estimate_(geometry_msgs::msg::TwistStamped velocity,eagleye_msgs:: max_x_index = std::distance(diff_x_buffer.begin(), max_x); max_y_index = std::distance(diff_y_buffer.begin(), max_y); - if(diff_x_buffer[max_x_index] < diff_y_buffer[max_y_index]) - { - if (diff_x_buffer[max_x_index] > position_parameter.outlier_threshold) - { + if (diff_x_buffer[max_x_index] < diff_y_buffer[max_y_index]) { + if (diff_x_buffer[max_x_index] > position_parameter.outlier_threshold) { index.erase(index.begin() + max_x_index); - } - else - { + } else { break; } - } - else - { - if (diff_y_buffer[max_y_index] > position_parameter.outlier_threshold) - { + } else { + if (diff_y_buffer[max_y_index] > position_parameter.outlier_threshold) { index.erase(index.begin() + max_y_index); - } - else - { + } else { break; } } @@ -245,51 +248,60 @@ void position_estimate_(geometry_msgs::msg::TwistStamped velocity,eagleye_msgs:: index_length = std::distance(index.begin(), index.end()); velocity_index_length = std::distance(velocity_index.begin(), velocity_index.end()); - if (index_length < velocity_index_length * remain_data_ratio) - { + if (index_length < velocity_index_length * remain_data_ratio) { break; } - } index_length = std::distance(index.begin(), index.end()); velocity_index_length = std::distance(velocity_index.begin(), velocity_index.end()); - if (index_length >= velocity_index_length * remain_data_ratio) - { - - std::vector diff_x_buffer_for_covariance, diff_y_buffer_for_covariance, diff_z_buffer_for_covariance; - for (i = 0; i < index_length; i++) - { - diff_x_buffer_for_covariance.push_back(base_enu_pos_x_buffer2[index[i]] - position_status->enu_pos_x_buffer[index[i]]); - diff_y_buffer_for_covariance.push_back(base_enu_pos_y_buffer2[index[i]] - position_status->enu_pos_y_buffer[index[i]]); - diff_z_buffer_for_covariance.push_back(base_enu_pos_z_buffer2[index[i]] - position_status->enu_pos_z_buffer[index[i]]); + if (index_length >= velocity_index_length * remain_data_ratio) { + std::vector diff_x_buffer_for_covariance, diff_y_buffer_for_covariance, + diff_z_buffer_for_covariance; + for (i = 0; i < index_length; i++) { + diff_x_buffer_for_covariance.push_back(base_enu_pos_x_buffer2[index[i]] - + position_status->enu_pos_x_buffer[index[i]]); + diff_y_buffer_for_covariance.push_back(base_enu_pos_y_buffer2[index[i]] - + position_status->enu_pos_y_buffer[index[i]]); + diff_z_buffer_for_covariance.push_back(base_enu_pos_z_buffer2[index[i]] - + position_status->enu_pos_z_buffer[index[i]]); } - avg_x = std::accumulate(diff_x_buffer_for_covariance.begin(), diff_x_buffer_for_covariance.end(), 0.0) / index_length; - avg_y = std::accumulate(diff_y_buffer_for_covariance.begin(), diff_y_buffer_for_covariance.end(), 0.0) / index_length; - avg_z = std::accumulate(diff_z_buffer_for_covariance.begin(), diff_z_buffer_for_covariance.end(), 0.0) / index_length; + avg_x = std::accumulate(diff_x_buffer_for_covariance.begin(), + diff_x_buffer_for_covariance.end(), 0.0) / + index_length; + avg_y = std::accumulate(diff_y_buffer_for_covariance.begin(), + diff_y_buffer_for_covariance.end(), 0.0) / + index_length; + avg_z = std::accumulate(diff_z_buffer_for_covariance.begin(), + diff_z_buffer_for_covariance.end(), 0.0) / + index_length; double cov_x, cov_y, cov_z; double square_sum_x = 0, square_sum_y = 0, square_sum_z = 0; - for (i = 0; i < index_length; i++) - { - square_sum_x += (diff_x_buffer_for_covariance[i] - avg_x) * (diff_x_buffer_for_covariance[i] - avg_x); - square_sum_y += (diff_y_buffer_for_covariance[i] - avg_y) * (diff_y_buffer_for_covariance[i] - avg_y); - square_sum_z += (diff_z_buffer_for_covariance[i] - avg_z) * (diff_z_buffer_for_covariance[i] - avg_z); + for (i = 0; i < index_length; i++) { + square_sum_x += + (diff_x_buffer_for_covariance[i] - avg_x) * (diff_x_buffer_for_covariance[i] - avg_x); + square_sum_y += + (diff_y_buffer_for_covariance[i] - avg_y) * (diff_y_buffer_for_covariance[i] - avg_y); + square_sum_z += + (diff_z_buffer_for_covariance[i] - avg_z) * (diff_z_buffer_for_covariance[i] - avg_z); } - cov_x = square_sum_x/index_length; - cov_y = square_sum_y/index_length; - cov_z = square_sum_z/index_length; + cov_x = square_sum_x / index_length; + cov_y = square_sum_y / index_length; + cov_z = square_sum_z / index_length; - if (index[index_length - 1] == position_status->estimated_number-1) - { + if (index[index_length - 1] == position_status->estimated_number - 1) { enu_absolute_pos->enu_pos.x = tmp_enu_pos_x; enu_absolute_pos->enu_pos.y = tmp_enu_pos_y; enu_absolute_pos->enu_pos.z = tmp_enu_pos_z; - enu_absolute_pos->covariance[0] = cov_x + position_parameter.gnss_error_covariance; // [m^2] - enu_absolute_pos->covariance[4] = cov_y + position_parameter.gnss_error_covariance; // [m^2] - enu_absolute_pos->covariance[8] = cov_z + position_parameter.gnss_error_covariance; // [m^2] + enu_absolute_pos->covariance[0] = + cov_x + position_parameter.gnss_error_covariance; // [m^2] + enu_absolute_pos->covariance[4] = + cov_y + position_parameter.gnss_error_covariance; // [m^2] + enu_absolute_pos->covariance[8] = + cov_z + position_parameter.gnss_error_covariance; // [m^2] enu_absolute_pos->status.enabled_status = true; enu_absolute_pos->status.estimate_status = true; } @@ -301,35 +313,35 @@ void position_estimate_(geometry_msgs::msg::TwistStamped velocity,eagleye_msgs:: data_status = false; } -void position_estimate(rtklib_msgs::msg::RtklibNav rtklib_nav, geometry_msgs::msg::TwistStamped velocity,eagleye_msgs::msg::StatusStamped velocity_status, - eagleye_msgs::msg::Distance distance,eagleye_msgs::msg::Heading heading_interpolate_3rd,geometry_msgs::msg::Vector3Stamped enu_vel, - PositionParameter position_parameter, PositionStatus* position_status, eagleye_msgs::msg::Position* enu_absolute_pos) -{ +void position_estimate(rtklib_msgs::msg::RtklibNav rtklib_nav, + geometry_msgs::msg::TwistStamped velocity, + eagleye_msgs::msg::StatusStamped velocity_status, + eagleye_msgs::msg::Distance distance, + eagleye_msgs::msg::Heading heading_interpolate_3rd, + geometry_msgs::msg::Vector3Stamped enu_vel, + PositionParameter position_parameter, PositionStatus* position_status, + eagleye_msgs::msg::Position* enu_absolute_pos) { double enu_pos[3]; double ecef_pos[3]; double ecef_base_pos[3]; bool gnss_update_failure; - if(enu_absolute_pos->ecef_base_pos.x == 0 && enu_absolute_pos->ecef_base_pos.y == 0 && enu_absolute_pos->ecef_base_pos.z == 0) - { - if (rtklib_nav.tow != 0) - { + if (enu_absolute_pos->ecef_base_pos.x == 0 && enu_absolute_pos->ecef_base_pos.y == 0 && + enu_absolute_pos->ecef_base_pos.z == 0) { + if (rtklib_nav.tow != 0) { enu_absolute_pos->ecef_base_pos.x = rtklib_nav.ecef_pos.x; enu_absolute_pos->ecef_base_pos.y = rtklib_nav.ecef_pos.y; enu_absolute_pos->ecef_base_pos.z = rtklib_nav.ecef_pos.z; - if(position_parameter.ecef_base_pos_x != 0 && position_parameter.ecef_base_pos_y != 0 && position_parameter.ecef_base_pos_z != 0) - { + if (position_parameter.ecef_base_pos_x != 0 && position_parameter.ecef_base_pos_y != 0 && + position_parameter.ecef_base_pos_z != 0) { enu_absolute_pos->ecef_base_pos.x = position_parameter.ecef_base_pos_x; enu_absolute_pos->ecef_base_pos.y = position_parameter.ecef_base_pos_y; enu_absolute_pos->ecef_base_pos.z = position_parameter.ecef_base_pos_z; } - } - else - { + } else { return; } - } ecef_pos[0] = rtklib_nav.ecef_pos.x; @@ -341,27 +353,21 @@ void position_estimate(rtklib_msgs::msg::RtklibNav rtklib_nav, geometry_msgs::ms xyz2enu(ecef_pos, ecef_base_pos, enu_pos); - if (!std::isfinite(enu_pos[0])||!std::isfinite(enu_pos[1])||!std::isfinite(enu_pos[2])) - { + if (!std::isfinite(enu_pos[0]) || !std::isfinite(enu_pos[1]) || !std::isfinite(enu_pos[2])) { enu_pos[0] = 0.0; enu_pos[1] = 0.0; enu_pos[2] = 0.0; gnss_update_failure = true; - } - else - { + } else { gnss_update_failure = false; } - if (position_status->tow_last == rtklib_nav.tow || rtklib_nav.tow == 0) - { + if (position_status->tow_last == rtklib_nav.tow || rtklib_nav.tow == 0) { enu_pos[0] = 0.0; enu_pos[1] = 0.0; enu_pos[2] = 0.0; gnss_update_failure = true; - } - else - { + } else { gnss_update_failure = false; } @@ -371,13 +377,17 @@ void position_estimate(rtklib_msgs::msg::RtklibNav rtklib_nav, geometry_msgs::ms position_status->gnss_update_failure = gnss_update_failure; position_status->tow_last = rtklib_nav.tow; - position_estimate_(velocity, velocity_status, distance, heading_interpolate_3rd, enu_vel, position_parameter, position_status, enu_absolute_pos); + position_estimate_(velocity, velocity_status, distance, heading_interpolate_3rd, enu_vel, + position_parameter, position_status, enu_absolute_pos); } -void position_estimate(nmea_msgs::msg::Gpgga gga,geometry_msgs::msg::TwistStamped velocity, eagleye_msgs::msg::StatusStamped velocity_status, - eagleye_msgs::msg::Distance distance,eagleye_msgs::msg::Heading heading_interpolate_3rd,geometry_msgs::msg::Vector3Stamped enu_vel, - PositionParameter position_parameter, PositionStatus* position_status, eagleye_msgs::msg::Position* enu_absolute_pos) -{ +void position_estimate(nmea_msgs::msg::Gpgga gga, geometry_msgs::msg::TwistStamped velocity, + eagleye_msgs::msg::StatusStamped velocity_status, + eagleye_msgs::msg::Distance distance, + eagleye_msgs::msg::Heading heading_interpolate_3rd, + geometry_msgs::msg::Vector3Stamped enu_vel, + PositionParameter position_parameter, PositionStatus* position_status, + eagleye_msgs::msg::Position* enu_absolute_pos) { double llh_pos[3]; double enu_pos[3]; double ecef_pos[3]; @@ -390,32 +400,28 @@ void position_estimate(nmea_msgs::msg::Gpgga gga,geometry_msgs::msg::TwistStampe rclcpp::Time enu_vel_clock(enu_vel.header.stamp); double enu_vel_time = enu_vel_clock.seconds(); - llh_pos[0] = gga.lat *M_PI/180; - llh_pos[1] = gga.lon *M_PI/180; + llh_pos[0] = gga.lat * M_PI / 180; + llh_pos[1] = gga.lon * M_PI / 180; llh_pos[2] = gga.alt + gga.undulation; - llh2xyz(llh_pos,ecef_pos); + llh2xyz(llh_pos, ecef_pos); - if(enu_absolute_pos->ecef_base_pos.x == 0 && enu_absolute_pos->ecef_base_pos.y == 0 && enu_absolute_pos->ecef_base_pos.z == 0) - { - if (gga_time != 0) - { + if (enu_absolute_pos->ecef_base_pos.x == 0 && enu_absolute_pos->ecef_base_pos.y == 0 && + enu_absolute_pos->ecef_base_pos.z == 0) { + if (gga_time != 0) { enu_absolute_pos->ecef_base_pos.x = ecef_pos[0]; enu_absolute_pos->ecef_base_pos.y = ecef_pos[1]; enu_absolute_pos->ecef_base_pos.z = ecef_pos[2]; - if(position_parameter.ecef_base_pos_x != 0 && position_parameter.ecef_base_pos_y != 0 && position_parameter.ecef_base_pos_z != 0) - { + if (position_parameter.ecef_base_pos_x != 0 && position_parameter.ecef_base_pos_y != 0 && + position_parameter.ecef_base_pos_z != 0) { enu_absolute_pos->ecef_base_pos.x = position_parameter.ecef_base_pos_x; enu_absolute_pos->ecef_base_pos.y = position_parameter.ecef_base_pos_y; enu_absolute_pos->ecef_base_pos.z = position_parameter.ecef_base_pos_z; } - } - else - { + } else { return; } - } ecef_base_pos[0] = enu_absolute_pos->ecef_base_pos.x; @@ -424,27 +430,21 @@ void position_estimate(nmea_msgs::msg::Gpgga gga,geometry_msgs::msg::TwistStampe xyz2enu(ecef_pos, ecef_base_pos, enu_pos); - if (!std::isfinite(enu_pos[0])||!std::isfinite(enu_pos[1])||!std::isfinite(enu_pos[2])) - { + if (!std::isfinite(enu_pos[0]) || !std::isfinite(enu_pos[1]) || !std::isfinite(enu_pos[2])) { enu_pos[0] = 0.0; enu_pos[1] = 0.0; enu_pos[2] = 0.0; gnss_update_failure = true; - } - else - { + } else { gnss_update_failure = false; } - if (position_status->nmea_time_last == gga_time || enu_vel_time == 0) - { + if (position_status->nmea_time_last == gga_time || enu_vel_time == 0) { enu_pos[0] = 0.0; enu_pos[1] = 0.0; enu_pos[2] = 0.0; gnss_update_failure = true; - } - else - { + } else { gnss_update_failure = false; } @@ -454,5 +454,6 @@ void position_estimate(nmea_msgs::msg::Gpgga gga,geometry_msgs::msg::TwistStampe position_status->gnss_update_failure = gnss_update_failure; position_status->nmea_time_last = gga_time; - position_estimate_(velocity, velocity_status, distance, heading_interpolate_3rd, enu_vel, position_parameter, position_status, enu_absolute_pos); + position_estimate_(velocity, velocity_status, distance, heading_interpolate_3rd, enu_vel, + position_parameter, position_status, enu_absolute_pos); } diff --git a/eagleye_core/navigation/src/position_interpolate.cpp b/eagleye_core/navigation/src/position_interpolate.cpp old mode 100755 new mode 100644 index 28eff9bc..06c69423 --- a/eagleye_core/navigation/src/position_interpolate.cpp +++ b/eagleye_core/navigation/src/position_interpolate.cpp @@ -31,22 +31,29 @@ #include "eagleye_coordinate/eagleye_coordinate.hpp" #include "eagleye_navigation/eagleye_navigation.hpp" -void position_interpolate_estimate(eagleye_msgs::msg::Position enu_absolute_pos, geometry_msgs::msg::Vector3Stamped enu_vel, eagleye_msgs::msg::Position gnss_smooth_pos, eagleye_msgs::msg::Height height, eagleye_msgs::msg::Heading heading, PositionInterpolateParameter position_interpolate_parameter, PositionInterpolateStatus* position_interpolate_status, eagleye_msgs::msg::Position* enu_absolute_pos_interpolate,sensor_msgs::msg::NavSatFix* eagleye_fix) -{ - +void position_interpolate_estimate(eagleye_msgs::msg::Position enu_absolute_pos, + geometry_msgs::msg::Vector3Stamped enu_vel, + eagleye_msgs::msg::Position gnss_smooth_pos, + eagleye_msgs::msg::Height height, + eagleye_msgs::msg::Heading heading, + PositionInterpolateParameter position_interpolate_parameter, + PositionInterpolateStatus* position_interpolate_status, + eagleye_msgs::msg::Position* enu_absolute_pos_interpolate, + sensor_msgs::msg::NavSatFix* eagleye_fix) { int i; int estimate_index = 0; - double enu_pos[3],tmp_enu[3]; + double enu_pos[3], tmp_enu[3]; double ecef_base_pos[3]; double ecef_pos[3]; - double llh_pos[3],_llh[3]; + double llh_pos[3], _llh[3]; double diff_estimate_enu_pos_x = 0.0; double diff_estimate_enu_pos_y = 0.0; double diff_estimate_enu_pos_z = 0.0; bool position_estimate_status; std::size_t imu_stamp_buffer_length; - double search_buffer_number = position_interpolate_parameter.sync_search_period * position_interpolate_parameter.imu_rate; + double search_buffer_number = + position_interpolate_parameter.sync_search_period * position_interpolate_parameter.imu_rate; rclcpp::Time ros_clock(enu_absolute_pos.header.stamp); rclcpp::Time ros_clock2(enu_vel.header.stamp); @@ -55,96 +62,118 @@ void position_interpolate_estimate(eagleye_msgs::msg::Position enu_absolute_pos, enu_absolute_pos_interpolate->ecef_base_pos = enu_absolute_pos.ecef_base_pos; - if (position_interpolate_status->number_buffer < search_buffer_number) - { + if (position_interpolate_status->number_buffer < search_buffer_number) { ++position_interpolate_status->number_buffer; - } - else - { + } else { position_interpolate_status->number_buffer = search_buffer_number; } - if (position_interpolate_status->position_stamp_last != enu_absolute_time && enu_absolute_pos.status.estimate_status == true) - { + if (position_interpolate_status->position_stamp_last != enu_absolute_time && + enu_absolute_pos.status.estimate_status == true) { position_estimate_status = true; position_interpolate_status->position_estimate_start_status = true; ++position_interpolate_status->position_estimate_status_count; - } - else - { + } else { position_estimate_status = false; } - if(position_interpolate_status->time_last != 0 && std::sqrt((enu_vel.vector.x * enu_vel.vector.x) + (enu_vel.vector.y * enu_vel.vector.y) + (enu_vel.vector.z * enu_vel.vector.z)) > position_interpolate_parameter.stop_judgment_threshold) - { - position_interpolate_status->provisional_enu_pos_x = enu_absolute_pos_interpolate->enu_pos.x + enu_vel.vector.x * (enu_vel_time - position_interpolate_status->time_last); - position_interpolate_status->provisional_enu_pos_y = enu_absolute_pos_interpolate->enu_pos.y + enu_vel.vector.y * (enu_vel_time - position_interpolate_status->time_last); - position_interpolate_status->provisional_enu_pos_z = enu_absolute_pos_interpolate->enu_pos.z + enu_vel.vector.z * (enu_vel_time - position_interpolate_status->time_last); + if (position_interpolate_status->time_last != 0 && + std::sqrt((enu_vel.vector.x * enu_vel.vector.x) + (enu_vel.vector.y * enu_vel.vector.y) + + (enu_vel.vector.z * enu_vel.vector.z)) > + position_interpolate_parameter.stop_judgment_threshold) { + position_interpolate_status->provisional_enu_pos_x = + enu_absolute_pos_interpolate->enu_pos.x + + enu_vel.vector.x * (enu_vel_time - position_interpolate_status->time_last); + position_interpolate_status->provisional_enu_pos_y = + enu_absolute_pos_interpolate->enu_pos.y + + enu_vel.vector.y * (enu_vel_time - position_interpolate_status->time_last); + position_interpolate_status->provisional_enu_pos_z = + enu_absolute_pos_interpolate->enu_pos.z + + enu_vel.vector.z * (enu_vel_time - position_interpolate_status->time_last); } // data buffer generate - position_interpolate_status->provisional_enu_pos_x_buffer.push_back(position_interpolate_status->provisional_enu_pos_x); - position_interpolate_status->provisional_enu_pos_y_buffer.push_back(position_interpolate_status->provisional_enu_pos_y); - position_interpolate_status->provisional_enu_pos_z_buffer.push_back(position_interpolate_status->provisional_enu_pos_z); + position_interpolate_status->provisional_enu_pos_x_buffer.push_back( + position_interpolate_status->provisional_enu_pos_x); + position_interpolate_status->provisional_enu_pos_y_buffer.push_back( + position_interpolate_status->provisional_enu_pos_y); + position_interpolate_status->provisional_enu_pos_z_buffer.push_back( + position_interpolate_status->provisional_enu_pos_z); position_interpolate_status->imu_stamp_buffer.push_back(enu_vel_time); - imu_stamp_buffer_length = std::distance(position_interpolate_status->imu_stamp_buffer.begin(), position_interpolate_status->imu_stamp_buffer.end()); - - if (imu_stamp_buffer_length > search_buffer_number) - { - position_interpolate_status->provisional_enu_pos_x_buffer.erase(position_interpolate_status->provisional_enu_pos_x_buffer .begin()); - position_interpolate_status->provisional_enu_pos_y_buffer.erase(position_interpolate_status->provisional_enu_pos_y_buffer .begin()); - position_interpolate_status->provisional_enu_pos_z_buffer.erase(position_interpolate_status->provisional_enu_pos_z_buffer .begin()); - position_interpolate_status->imu_stamp_buffer.erase(position_interpolate_status->imu_stamp_buffer .begin()); + imu_stamp_buffer_length = std::distance(position_interpolate_status->imu_stamp_buffer.begin(), + position_interpolate_status->imu_stamp_buffer.end()); + + if (imu_stamp_buffer_length > search_buffer_number) { + position_interpolate_status->provisional_enu_pos_x_buffer.erase( + position_interpolate_status->provisional_enu_pos_x_buffer.begin()); + position_interpolate_status->provisional_enu_pos_y_buffer.erase( + position_interpolate_status->provisional_enu_pos_y_buffer.begin()); + position_interpolate_status->provisional_enu_pos_z_buffer.erase( + position_interpolate_status->provisional_enu_pos_z_buffer.begin()); + position_interpolate_status->imu_stamp_buffer.erase( + position_interpolate_status->imu_stamp_buffer.begin()); } - if (position_interpolate_status->position_estimate_start_status == true) - { - if (position_estimate_status == true) - { - for (estimate_index = position_interpolate_status->number_buffer; estimate_index > 0; estimate_index--) - { - if (position_interpolate_status->imu_stamp_buffer[estimate_index-1] == enu_absolute_time) - { + if (position_interpolate_status->position_estimate_start_status == true) { + if (position_estimate_status == true) { + for (estimate_index = position_interpolate_status->number_buffer; estimate_index > 0; + estimate_index--) { + if (position_interpolate_status->imu_stamp_buffer[estimate_index - 1] == + enu_absolute_time) { break; } } } - if (position_estimate_status == true && estimate_index > 0 && position_interpolate_status->number_buffer >= estimate_index && position_interpolate_status->position_estimate_status_count > 1) - { - diff_estimate_enu_pos_x = (position_interpolate_status->provisional_enu_pos_x_buffer[estimate_index-1] - enu_absolute_pos.enu_pos.x); - diff_estimate_enu_pos_y = (position_interpolate_status->provisional_enu_pos_y_buffer[estimate_index-1] - enu_absolute_pos.enu_pos.y); - diff_estimate_enu_pos_z = (position_interpolate_status->provisional_enu_pos_z_buffer[estimate_index-1] - enu_absolute_pos.enu_pos.z); - for (i = estimate_index; i <= position_interpolate_status->number_buffer; i++) - { - position_interpolate_status->provisional_enu_pos_x_buffer[i-1] = position_interpolate_status->provisional_enu_pos_x_buffer[i-1] - diff_estimate_enu_pos_x; - position_interpolate_status->provisional_enu_pos_y_buffer[i-1] = position_interpolate_status->provisional_enu_pos_y_buffer[i-1] - diff_estimate_enu_pos_y; - position_interpolate_status->provisional_enu_pos_z_buffer[i-1] = position_interpolate_status->provisional_enu_pos_z_buffer[i-1] - diff_estimate_enu_pos_z; + if (position_estimate_status == true && estimate_index > 0 && + position_interpolate_status->number_buffer >= estimate_index && + position_interpolate_status->position_estimate_status_count > 1) { + diff_estimate_enu_pos_x = + (position_interpolate_status->provisional_enu_pos_x_buffer[estimate_index - 1] - + enu_absolute_pos.enu_pos.x); + diff_estimate_enu_pos_y = + (position_interpolate_status->provisional_enu_pos_y_buffer[estimate_index - 1] - + enu_absolute_pos.enu_pos.y); + diff_estimate_enu_pos_z = + (position_interpolate_status->provisional_enu_pos_z_buffer[estimate_index - 1] - + enu_absolute_pos.enu_pos.z); + for (i = estimate_index; i <= position_interpolate_status->number_buffer; i++) { + position_interpolate_status->provisional_enu_pos_x_buffer[i - 1] = + position_interpolate_status->provisional_enu_pos_x_buffer[i - 1] - + diff_estimate_enu_pos_x; + position_interpolate_status->provisional_enu_pos_y_buffer[i - 1] = + position_interpolate_status->provisional_enu_pos_y_buffer[i - 1] - + diff_estimate_enu_pos_y; + position_interpolate_status->provisional_enu_pos_z_buffer[i - 1] = + position_interpolate_status->provisional_enu_pos_z_buffer[i - 1] - + diff_estimate_enu_pos_z; } - position_interpolate_status->provisional_enu_pos_x = position_interpolate_status->provisional_enu_pos_x_buffer[position_interpolate_status->number_buffer-1]; - position_interpolate_status->provisional_enu_pos_y = position_interpolate_status->provisional_enu_pos_y_buffer[position_interpolate_status->number_buffer-1]; - position_interpolate_status->provisional_enu_pos_z = position_interpolate_status->provisional_enu_pos_z_buffer[position_interpolate_status->number_buffer-1]; + position_interpolate_status->provisional_enu_pos_x = + position_interpolate_status + ->provisional_enu_pos_x_buffer[position_interpolate_status->number_buffer - 1]; + position_interpolate_status->provisional_enu_pos_y = + position_interpolate_status + ->provisional_enu_pos_y_buffer[position_interpolate_status->number_buffer - 1]; + position_interpolate_status->provisional_enu_pos_z = + position_interpolate_status + ->provisional_enu_pos_z_buffer[position_interpolate_status->number_buffer - 1]; position_interpolate_status->is_estimate_start = true; enu_absolute_pos_interpolate->status.enabled_status = true; enu_absolute_pos_interpolate->status.estimate_status = true; - } - else if (position_interpolate_status->position_estimate_status_count == 1) - { + } else if (position_interpolate_status->position_estimate_status_count == 1) { position_interpolate_status->provisional_enu_pos_x = enu_absolute_pos.enu_pos.x; position_interpolate_status->provisional_enu_pos_y = enu_absolute_pos.enu_pos.y; position_interpolate_status->provisional_enu_pos_z = enu_absolute_pos.enu_pos.z; enu_absolute_pos_interpolate->status.enabled_status = true; enu_absolute_pos_interpolate->status.estimate_status = false; - } - else - { + } else { enu_absolute_pos_interpolate->status.estimate_status = false; } } - if (position_interpolate_status->position_estimate_start_status && position_interpolate_status->is_estimate_start) - { + if (position_interpolate_status->position_estimate_start_status && + position_interpolate_status->is_estimate_start) { enu_pos[0] = position_interpolate_status->provisional_enu_pos_x; enu_pos[1] = position_interpolate_status->provisional_enu_pos_y; // enu_pos[2] = position_interpolate_status->provisional_enu_pos_z; @@ -157,95 +186,92 @@ void position_interpolate_estimate(eagleye_msgs::msg::Position enu_absolute_pos, Eigen::MatrixXd init_covariance; init_covariance = Eigen::MatrixXd::Zero(6, 6); - init_covariance(0,0) = enu_absolute_pos.covariance[0]; - init_covariance(1,1) = enu_absolute_pos.covariance[4]; - init_covariance(2,2) = enu_absolute_pos.covariance[8]; - init_covariance(5,5) = heading.variance; + init_covariance(0, 0) = enu_absolute_pos.covariance[0]; + init_covariance(1, 1) = enu_absolute_pos.covariance[4]; + init_covariance(2, 2) = enu_absolute_pos.covariance[8]; + init_covariance(5, 5) = heading.variance; double proc_noise = position_interpolate_parameter.proc_noise; Eigen::MatrixXd proc_covariance; proc_covariance = Eigen::MatrixXd::Zero(6, 6); - proc_covariance(0,0) = proc_noise * proc_noise; - proc_covariance(1,1) = proc_noise * proc_noise; - proc_covariance(2,2) = proc_noise * proc_noise; + proc_covariance(0, 0) = proc_noise * proc_noise; + proc_covariance(1, 1) = proc_noise * proc_noise; + proc_covariance(2, 2) = proc_noise * proc_noise; Eigen::MatrixXd position_covariance; position_covariance = Eigen::MatrixXd::Zero(6, 6); - double velocity = std::sqrt(enu_vel.vector.x*enu_vel.vector.x + enu_vel.vector.y*enu_vel.vector.y + enu_vel.vector.z*enu_vel.vector.z); + double velocity = + std::sqrt(enu_vel.vector.x * enu_vel.vector.x + enu_vel.vector.y * enu_vel.vector.y + + enu_vel.vector.z * enu_vel.vector.z); - if(enu_absolute_pos_interpolate->status.estimate_status) - { + if (enu_absolute_pos_interpolate->status.estimate_status) { position_covariance = init_covariance; position_interpolate_status->position_covariance_last = position_covariance; - } - else if (velocity > position_interpolate_parameter.stop_judgment_threshold) - { + } else if (velocity > position_interpolate_parameter.stop_judgment_threshold) { Eigen::MatrixXd jacobian; jacobian = Eigen::MatrixXd::Zero(6, 6); - jacobian(0,0) = 1; - jacobian(1,1) = 1; - jacobian(2,2) = 1; - jacobian(3,3) = 1; - jacobian(4,4) = 1; - jacobian(5,5) = 1; - jacobian(0,5) = enu_vel.vector.y*(enu_vel_time - position_interpolate_status->time_last); - jacobian(1,5) = -enu_vel.vector.x*(enu_vel_time - position_interpolate_status->time_last); + jacobian(0, 0) = 1; + jacobian(1, 1) = 1; + jacobian(2, 2) = 1; + jacobian(3, 3) = 1; + jacobian(4, 4) = 1; + jacobian(5, 5) = 1; + jacobian(0, 5) = enu_vel.vector.y * (enu_vel_time - position_interpolate_status->time_last); + jacobian(1, 5) = -enu_vel.vector.x * (enu_vel_time - position_interpolate_status->time_last); // MEMO: Jacobean not included // position_covariance = position_interpolate_status->position_covariance_last + proc_covariance; // MEMO: Jacobean not included - position_covariance = jacobian * position_interpolate_status->position_covariance_last * (jacobian.transpose()) + proc_covariance; + position_covariance = + jacobian * position_interpolate_status->position_covariance_last * (jacobian.transpose()) + + proc_covariance; position_interpolate_status->position_covariance_last = position_covariance; - } - else - { + } else { position_covariance = position_interpolate_status->position_covariance_last; } - eagleye_fix->longitude = llh_pos[1] * 180/M_PI; - eagleye_fix->latitude = llh_pos[0] * 180/M_PI; + eagleye_fix->longitude = llh_pos[1] * 180 / M_PI; + eagleye_fix->latitude = llh_pos[0] * 180 / M_PI; - if(height.status.enabled_status == true){ + if (height.status.enabled_status == true) { llh_pos[2] = height.height; llh2xyz(llh_pos, ecef_pos); xyz2enu(ecef_pos, ecef_base_pos, tmp_enu); - enu_pos[2] = tmp_enu[2]; + enu_pos[2] = tmp_enu[2]; } enu_absolute_pos_interpolate->enu_pos.x = enu_pos[0]; enu_absolute_pos_interpolate->enu_pos.y = enu_pos[1]; enu_absolute_pos_interpolate->enu_pos.z = enu_pos[2]; - enu_absolute_pos_interpolate->covariance[0] = position_covariance(0,0); // [m^2] - enu_absolute_pos_interpolate->covariance[4] = position_covariance(1,1); // [m^2] - enu_absolute_pos_interpolate->covariance[8] = position_covariance(2,2); // [m^2] + enu_absolute_pos_interpolate->covariance[0] = position_covariance(0, 0); // [m^2] + enu_absolute_pos_interpolate->covariance[4] = position_covariance(1, 1); // [m^2] + enu_absolute_pos_interpolate->covariance[8] = position_covariance(2, 2); // [m^2] eagleye_fix->altitude = llh_pos[2]; // TODO(Map IV): temporary covariance value - eagleye_fix->position_covariance[0] = 1.5 * 1.5; // [m^2] - eagleye_fix->position_covariance[4] = 1.5 * 1.5; // [m^2] - eagleye_fix->position_covariance[8] = 1.5 * 1.5; // [m^2] - eagleye_fix->position_covariance[0] = position_covariance(0,0); // [m^2] - eagleye_fix->position_covariance[4] = position_covariance(1,1); // [m^2] - eagleye_fix->position_covariance[8] = position_covariance(2,2); // [m^2] - - } - else - { + eagleye_fix->position_covariance[0] = 1.5 * 1.5; // [m^2] + eagleye_fix->position_covariance[4] = 1.5 * 1.5; // [m^2] + eagleye_fix->position_covariance[8] = 1.5 * 1.5; // [m^2] + eagleye_fix->position_covariance[0] = position_covariance(0, 0); // [m^2] + eagleye_fix->position_covariance[4] = position_covariance(1, 1); // [m^2] + eagleye_fix->position_covariance[8] = position_covariance(2, 2); // [m^2] + + } else { enu_absolute_pos_interpolate->enu_pos.x = 0; enu_absolute_pos_interpolate->enu_pos.y = 0; enu_absolute_pos_interpolate->enu_pos.z = 0; eagleye_fix->longitude = 0; eagleye_fix->latitude = 0; eagleye_fix->altitude = 0; - eagleye_fix->position_covariance[0] = 100 * 100; // [m^2] - eagleye_fix->position_covariance[4] = 100 * 100; // [m^2] - eagleye_fix->position_covariance[8] = 100 * 100; // [m^2] + eagleye_fix->position_covariance[0] = 100 * 100; // [m^2] + eagleye_fix->position_covariance[4] = 100 * 100; // [m^2] + eagleye_fix->position_covariance[8] = 100 * 100; // [m^2] } position_interpolate_status->time_last = enu_vel_time; diff --git a/eagleye_core/navigation/src/rolling.cpp b/eagleye_core/navigation/src/rolling.cpp index 6af7a407..16510029 100644 --- a/eagleye_core/navigation/src/rolling.cpp +++ b/eagleye_core/navigation/src/rolling.cpp @@ -33,10 +33,12 @@ #define g 9.80665 -void rolling_estimate(sensor_msgs::msg::Imu imu, geometry_msgs::msg::TwistStamped correction_velocity, - eagleye_msgs::msg::YawrateOffset yaw_rate_offset_stop, eagleye_msgs::msg::YawrateOffset yaw_rate_offset, - RollingParameter rolling_parameter, RollingStatus* rolling_status, eagleye_msgs::msg::Rolling* rolling) -{ +void rolling_estimate(sensor_msgs::msg::Imu imu, + geometry_msgs::msg::TwistStamped correction_velocity, + eagleye_msgs::msg::YawrateOffset yaw_rate_offset_stop, + eagleye_msgs::msg::YawrateOffset yaw_rate_offset, + RollingParameter rolling_parameter, RollingStatus* rolling_status, + eagleye_msgs::msg::Rolling* rolling) { double acceleration_y; double velocity; double yaw_rate; @@ -53,17 +55,13 @@ void rolling_estimate(sensor_msgs::msg::Imu imu, geometry_msgs::msg::TwistStampe acceleration_y = imu.linear_acceleration.y; velocity = correction_velocity.twist.linear.x; - if (std::abs(velocity) > rolling_parameter.stop_judgment_threshold) - { + if (std::abs(velocity) > rolling_parameter.stop_judgment_threshold) { yaw_rate = imu.angular_velocity.z + yaw_rate_offset.yaw_rate_offset; - } - else - { + } else { yaw_rate = imu.angular_velocity.z + yaw_rate_offset_stop.yaw_rate_offset; } - if (!rolling_status->data_status) - { + if (!rolling_status->data_status) { filtered_acceleration_y = acceleration_y; rolling_status->acceleration_y_last = acceleration_y; rolling_status->acceleration_y_variance_last = init_variance; @@ -71,14 +69,13 @@ void rolling_estimate(sensor_msgs::msg::Imu imu, geometry_msgs::msg::TwistStampe } // Low Path Filter (about acceleration_y) - if (rolling_status->data_status) - { + if (rolling_status->data_status) { acceleration_y_variance_negative = - rolling_status->acceleration_y_variance_last + rolling_parameter.filter_process_noise; + rolling_status->acceleration_y_variance_last + rolling_parameter.filter_process_noise; update_gain = acceleration_y_variance_negative / (acceleration_y_variance_negative + rolling_parameter.filter_observation_noise); - filtered_acceleration_y = - rolling_status->acceleration_y_last + update_gain * (acceleration_y - rolling_status->acceleration_y_last); + filtered_acceleration_y = rolling_status->acceleration_y_last + + update_gain * (acceleration_y - rolling_status->acceleration_y_last); acceleration_y_variance_positive = (1 - update_gain) * acceleration_y_variance_negative; rolling_status->acceleration_y_last = filtered_acceleration_y; @@ -91,19 +88,14 @@ void rolling_estimate(sensor_msgs::msg::Imu imu, geometry_msgs::msg::TwistStampe in_sin = (velocity * yaw_rate - filtered_acceleration_y) / g; - if (std::abs(in_sin) < 1) - { + if (std::abs(in_sin) < 1) { rolling->rolling_angle = std::asin(in_sin); rolling->status.enabled_status = true; rolling->status.estimate_status = true; - } - else if (rolling->status.estimate_status) - { + } else if (rolling->status.estimate_status) { rolling->rolling_angle = rolling_status->rolling_last; rolling->status.enabled_status = false; - } - else - { + } else { rolling->rolling_angle = 0; rolling->status.enabled_status = false; rolling->status.estimate_status = false; diff --git a/eagleye_core/navigation/src/rtk_dead_reckoning.cpp b/eagleye_core/navigation/src/rtk_dead_reckoning.cpp old mode 100755 new mode 100644 index 649d2206..c044e4f4 --- a/eagleye_core/navigation/src/rtk_dead_reckoning.cpp +++ b/eagleye_core/navigation/src/rtk_dead_reckoning.cpp @@ -35,15 +35,16 @@ #include #include -void rtk_dead_reckoning_estimate_(geometry_msgs::msg::Vector3Stamped enu_vel, nmea_msgs::msg::Gpgga gga, - eagleye_msgs::msg::Heading heading, RtkDeadreckoningParameter rtk_dead_reckoning_parameter, RtkDeadreckoningStatus* rtk_dead_reckoning_status, - eagleye_msgs::msg::Position* enu_absolute_rtk_dead_reckoning,sensor_msgs::msg::NavSatFix* eagleye_fix) -{ - - double enu_pos[3],enu_rtk[3]; +void rtk_dead_reckoning_estimate_(geometry_msgs::msg::Vector3Stamped enu_vel, + nmea_msgs::msg::Gpgga gga, eagleye_msgs::msg::Heading heading, + RtkDeadreckoningParameter rtk_dead_reckoning_parameter, + RtkDeadreckoningStatus* rtk_dead_reckoning_status, + eagleye_msgs::msg::Position* enu_absolute_rtk_dead_reckoning, + sensor_msgs::msg::NavSatFix* eagleye_fix) { + double enu_pos[3], enu_rtk[3]; double ecef_base_pos[3]; double ecef_rtk[3]; - double llh_pos[3],llh_rtk[3]; + double llh_pos[3], llh_rtk[3]; rclcpp::Time ros_clock(gga.header.stamp); rclcpp::Time ros_clock2(enu_vel.header.stamp); @@ -51,41 +52,40 @@ void rtk_dead_reckoning_estimate_(geometry_msgs::msg::Vector3Stamped enu_vel, nm auto gga_time = ros_clock.seconds(); auto enu_vel_time = ros_clock2.seconds(); - if(rtk_dead_reckoning_status->position_estimate_start_status && heading.status.enabled_status) - { + if (rtk_dead_reckoning_status->position_estimate_start_status && heading.status.enabled_status) { ecef_base_pos[0] = enu_absolute_rtk_dead_reckoning->ecef_base_pos.x; ecef_base_pos[1] = enu_absolute_rtk_dead_reckoning->ecef_base_pos.y; ecef_base_pos[2] = enu_absolute_rtk_dead_reckoning->ecef_base_pos.z; - llh_rtk[0] = gga.lat *M_PI/180; - llh_rtk[1] = gga.lon *M_PI/180; + llh_rtk[0] = gga.lat * M_PI / 180; + llh_rtk[1] = gga.lon * M_PI / 180; llh_rtk[2] = gga.alt + gga.undulation; - llh2xyz(llh_rtk,ecef_rtk); - xyz2enu(ecef_rtk,ecef_base_pos,enu_rtk); + llh2xyz(llh_rtk, ecef_rtk); + xyz2enu(ecef_rtk, ecef_base_pos, enu_rtk); - if (rtk_dead_reckoning_status->position_stamp_last != gga_time && gga.gps_qual == 4) - { + if (rtk_dead_reckoning_status->position_stamp_last != gga_time && gga.gps_qual == 4) { rtk_dead_reckoning_status->provisional_enu_pos_x = enu_rtk[0]; rtk_dead_reckoning_status->provisional_enu_pos_y = enu_rtk[1]; rtk_dead_reckoning_status->provisional_enu_pos_z = enu_rtk[2]; enu_absolute_rtk_dead_reckoning->status.enabled_status = true; enu_absolute_rtk_dead_reckoning->status.estimate_status = true; - } - else if(rtk_dead_reckoning_status->time_last != 0 && sqrt((enu_vel.vector.x * enu_vel.vector.x) + (enu_vel.vector.y * enu_vel.vector.y) + - (enu_vel.vector.z * enu_vel.vector.z)) > rtk_dead_reckoning_parameter.stop_judgment_threshold) - { - rtk_dead_reckoning_status->provisional_enu_pos_x = enu_absolute_rtk_dead_reckoning->enu_pos.x + enu_vel.vector.x * - (enu_vel_time - rtk_dead_reckoning_status->time_last); - rtk_dead_reckoning_status->provisional_enu_pos_y = enu_absolute_rtk_dead_reckoning->enu_pos.y + enu_vel.vector.y * - (enu_vel_time - rtk_dead_reckoning_status->time_last); - rtk_dead_reckoning_status->provisional_enu_pos_z = enu_absolute_rtk_dead_reckoning->enu_pos.z + enu_vel.vector.z * - (enu_vel_time - rtk_dead_reckoning_status->time_last); + } else if (rtk_dead_reckoning_status->time_last != 0 && + sqrt((enu_vel.vector.x * enu_vel.vector.x) + (enu_vel.vector.y * enu_vel.vector.y) + + (enu_vel.vector.z * enu_vel.vector.z)) > + rtk_dead_reckoning_parameter.stop_judgment_threshold) { + rtk_dead_reckoning_status->provisional_enu_pos_x = + enu_absolute_rtk_dead_reckoning->enu_pos.x + + enu_vel.vector.x * (enu_vel_time - rtk_dead_reckoning_status->time_last); + rtk_dead_reckoning_status->provisional_enu_pos_y = + enu_absolute_rtk_dead_reckoning->enu_pos.y + + enu_vel.vector.y * (enu_vel_time - rtk_dead_reckoning_status->time_last); + rtk_dead_reckoning_status->provisional_enu_pos_z = + enu_absolute_rtk_dead_reckoning->enu_pos.z + + enu_vel.vector.z * (enu_vel_time - rtk_dead_reckoning_status->time_last); enu_absolute_rtk_dead_reckoning->status.enabled_status = true; enu_absolute_rtk_dead_reckoning->status.estimate_status = false; - } - else if(!enu_absolute_rtk_dead_reckoning->status.enabled_status) - { + } else if (!enu_absolute_rtk_dead_reckoning->status.enabled_status) { return; } @@ -98,95 +98,92 @@ void rtk_dead_reckoning_estimate_(geometry_msgs::msg::Vector3Stamped enu_vel, nm double rtk_fix_STD = rtk_dead_reckoning_parameter.rtk_fix_STD; Eigen::MatrixXd init_covariance; init_covariance = Eigen::MatrixXd::Zero(6, 6); - init_covariance(0,0) = rtk_fix_STD * rtk_fix_STD; - init_covariance(1,1) = rtk_fix_STD * rtk_fix_STD; - init_covariance(2,2) = rtk_fix_STD * rtk_fix_STD; - init_covariance(5,5) = heading.variance; + init_covariance(0, 0) = rtk_fix_STD * rtk_fix_STD; + init_covariance(1, 1) = rtk_fix_STD * rtk_fix_STD; + init_covariance(2, 2) = rtk_fix_STD * rtk_fix_STD; + init_covariance(5, 5) = heading.variance; double proc_noise = rtk_dead_reckoning_parameter.proc_noise; Eigen::MatrixXd proc_covariance; proc_covariance = Eigen::MatrixXd::Zero(6, 6); - proc_covariance(0,0) = proc_noise * proc_noise; - proc_covariance(1,1) = proc_noise * proc_noise; - proc_covariance(2,2) = proc_noise * proc_noise; + proc_covariance(0, 0) = proc_noise * proc_noise; + proc_covariance(1, 1) = proc_noise * proc_noise; + proc_covariance(2, 2) = proc_noise * proc_noise; Eigen::MatrixXd position_covariance; position_covariance = Eigen::MatrixXd::Zero(6, 6); - double velocity = std::sqrt(enu_vel.vector.x*enu_vel.vector.x + enu_vel.vector.y*enu_vel.vector.y + enu_vel.vector.z*enu_vel.vector.z); + double velocity = + std::sqrt(enu_vel.vector.x * enu_vel.vector.x + enu_vel.vector.y * enu_vel.vector.y + + enu_vel.vector.z * enu_vel.vector.z); - if(enu_absolute_rtk_dead_reckoning->status.estimate_status) - { + if (enu_absolute_rtk_dead_reckoning->status.estimate_status) { position_covariance = init_covariance; rtk_dead_reckoning_status->position_covariance_last = position_covariance; - } - else if (velocity > rtk_dead_reckoning_parameter.stop_judgment_threshold) - { + } else if (velocity > rtk_dead_reckoning_parameter.stop_judgment_threshold) { Eigen::MatrixXd jacobian; jacobian = Eigen::MatrixXd::Zero(6, 6); - jacobian(0,0) = 1; - jacobian(1,1) = 1; - jacobian(2,2) = 1; - jacobian(3,3) = 1; - jacobian(4,4) = 1; - jacobian(5,5) = 1; - jacobian(0,5) = enu_vel.vector.y*(enu_vel_time - rtk_dead_reckoning_status->time_last); - jacobian(1,5) = -enu_vel.vector.x*(enu_vel_time - rtk_dead_reckoning_status->time_last); + jacobian(0, 0) = 1; + jacobian(1, 1) = 1; + jacobian(2, 2) = 1; + jacobian(3, 3) = 1; + jacobian(4, 4) = 1; + jacobian(5, 5) = 1; + jacobian(0, 5) = enu_vel.vector.y * (enu_vel_time - rtk_dead_reckoning_status->time_last); + jacobian(1, 5) = -enu_vel.vector.x * (enu_vel_time - rtk_dead_reckoning_status->time_last); // MEMO: Jacobean not included // position_covariance = rtk_dead_reckoning_status->position_covariance_last + proc_covariance; // MEMO: Jacobean not included - position_covariance = jacobian * rtk_dead_reckoning_status->position_covariance_last * (jacobian.transpose()) + proc_covariance; + position_covariance = + jacobian * rtk_dead_reckoning_status->position_covariance_last * (jacobian.transpose()) + + proc_covariance; rtk_dead_reckoning_status->position_covariance_last = position_covariance; - } - else - { + } else { position_covariance = rtk_dead_reckoning_status->position_covariance_last; } - eagleye_fix->latitude = llh_pos[0] * 180/M_PI; - eagleye_fix->longitude = llh_pos[1] * 180/M_PI; + eagleye_fix->latitude = llh_pos[0] * 180 / M_PI; + eagleye_fix->longitude = llh_pos[1] * 180 / M_PI; eagleye_fix->altitude = llh_pos[2]; - eagleye_fix->position_covariance[0] = position_covariance(0,0); // [m^2] - eagleye_fix->position_covariance[4] = position_covariance(1,1); // [m^2] - eagleye_fix->position_covariance[8] = position_covariance(2,2); // [m^2] + eagleye_fix->position_covariance[0] = position_covariance(0, 0); // [m^2] + eagleye_fix->position_covariance[4] = position_covariance(1, 1); // [m^2] + eagleye_fix->position_covariance[8] = position_covariance(2, 2); // [m^2] enu_absolute_rtk_dead_reckoning->enu_pos.x = enu_pos[0]; enu_absolute_rtk_dead_reckoning->enu_pos.y = enu_pos[1]; enu_absolute_rtk_dead_reckoning->enu_pos.z = enu_pos[2]; - enu_absolute_rtk_dead_reckoning->covariance[0] = position_covariance(0,0); // [m^2] - enu_absolute_rtk_dead_reckoning->covariance[4] = position_covariance(1,1); // [m^2] - enu_absolute_rtk_dead_reckoning->covariance[8] = position_covariance(2,2); // [m^2] + enu_absolute_rtk_dead_reckoning->covariance[0] = position_covariance(0, 0); // [m^2] + enu_absolute_rtk_dead_reckoning->covariance[4] = position_covariance(1, 1); // [m^2] + enu_absolute_rtk_dead_reckoning->covariance[8] = position_covariance(2, 2); // [m^2] rtk_dead_reckoning_status->time_last = enu_vel_time; rtk_dead_reckoning_status->position_stamp_last = gga_time; - } - else - { + } else { enu_absolute_rtk_dead_reckoning->status.enabled_status = false; enu_absolute_rtk_dead_reckoning->status.estimate_status = false; } } -void rtk_dead_reckoning_estimate(rtklib_msgs::msg::RtklibNav rtklib_nav,geometry_msgs::msg::Vector3Stamped enu_vel, nmea_msgs::msg::Gpgga gga, - eagleye_msgs::msg::Heading heading, RtkDeadreckoningParameter rtk_dead_reckoning_parameter, RtkDeadreckoningStatus* rtk_dead_reckoning_status, - eagleye_msgs::msg::Position* enu_absolute_rtk_dead_reckoning,sensor_msgs::msg::NavSatFix* eagleye_fix) -{ +void rtk_dead_reckoning_estimate(rtklib_msgs::msg::RtklibNav rtklib_nav, + geometry_msgs::msg::Vector3Stamped enu_vel, + nmea_msgs::msg::Gpgga gga, eagleye_msgs::msg::Heading heading, + RtkDeadreckoningParameter rtk_dead_reckoning_parameter, + RtkDeadreckoningStatus* rtk_dead_reckoning_status, + eagleye_msgs::msg::Position* enu_absolute_rtk_dead_reckoning, + sensor_msgs::msg::NavSatFix* eagleye_fix) { rclcpp::Time rtklib_nav_clock(rtklib_nav.header.stamp); double rtklib_nav_time = rtklib_nav_clock.seconds(); - if(rtk_dead_reckoning_parameter.use_ecef_base_position) - { + if (rtk_dead_reckoning_parameter.use_ecef_base_position) { enu_absolute_rtk_dead_reckoning->ecef_base_pos.x = rtk_dead_reckoning_parameter.ecef_base_pos_x; enu_absolute_rtk_dead_reckoning->ecef_base_pos.y = rtk_dead_reckoning_parameter.ecef_base_pos_y; enu_absolute_rtk_dead_reckoning->ecef_base_pos.z = rtk_dead_reckoning_parameter.ecef_base_pos_z; rtk_dead_reckoning_status->ecef_base_pos_status = true; rtk_dead_reckoning_status->position_estimate_start_status = true; - } - else if(!rtk_dead_reckoning_status->ecef_base_pos_status && rtklib_nav_time != 0) - { + } else if (!rtk_dead_reckoning_status->ecef_base_pos_status && rtklib_nav_time != 0) { enu_absolute_rtk_dead_reckoning->ecef_base_pos.x = rtklib_nav.ecef_pos.x; enu_absolute_rtk_dead_reckoning->ecef_base_pos.y = rtklib_nav.ecef_pos.y; enu_absolute_rtk_dead_reckoning->ecef_base_pos.z = rtklib_nav.ecef_pos.z; @@ -194,35 +191,35 @@ void rtk_dead_reckoning_estimate(rtklib_msgs::msg::RtklibNav rtklib_nav,geometry rtk_dead_reckoning_status->position_estimate_start_status = true; } - rtk_dead_reckoning_estimate_(enu_vel, gga, heading, rtk_dead_reckoning_parameter, rtk_dead_reckoning_status, enu_absolute_rtk_dead_reckoning, eagleye_fix); + rtk_dead_reckoning_estimate_(enu_vel, gga, heading, rtk_dead_reckoning_parameter, + rtk_dead_reckoning_status, enu_absolute_rtk_dead_reckoning, + eagleye_fix); } -void rtk_dead_reckoning_estimate(geometry_msgs::msg::Vector3Stamped enu_vel, nmea_msgs::msg::Gpgga gga, eagleye_msgs::msg::Heading heading, - RtkDeadreckoningParameter rtk_dead_reckoning_parameter, RtkDeadreckoningStatus* rtk_dead_reckoning_status, - eagleye_msgs::msg::Position* enu_absolute_rtk_dead_reckoning,sensor_msgs::msg::NavSatFix* eagleye_fix) -{ +void rtk_dead_reckoning_estimate(geometry_msgs::msg::Vector3Stamped enu_vel, + nmea_msgs::msg::Gpgga gga, eagleye_msgs::msg::Heading heading, + RtkDeadreckoningParameter rtk_dead_reckoning_parameter, + RtkDeadreckoningStatus* rtk_dead_reckoning_status, + eagleye_msgs::msg::Position* enu_absolute_rtk_dead_reckoning, + sensor_msgs::msg::NavSatFix* eagleye_fix) { double ecef_pos[3]; double llh_pos[3]; rclcpp::Time gga_clock(gga.header.stamp); double gga_time = gga_clock.seconds(); - if(rtk_dead_reckoning_parameter.use_ecef_base_position) - { + if (rtk_dead_reckoning_parameter.use_ecef_base_position) { enu_absolute_rtk_dead_reckoning->ecef_base_pos.x = rtk_dead_reckoning_parameter.ecef_base_pos_x; enu_absolute_rtk_dead_reckoning->ecef_base_pos.y = rtk_dead_reckoning_parameter.ecef_base_pos_y; enu_absolute_rtk_dead_reckoning->ecef_base_pos.z = rtk_dead_reckoning_parameter.ecef_base_pos_z; rtk_dead_reckoning_status->ecef_base_pos_status = true; rtk_dead_reckoning_status->position_estimate_start_status = true; - } - else if(!rtk_dead_reckoning_status->ecef_base_pos_status && gga_time != 0) - { - - llh_pos[0] = gga.lat *M_PI/180; - llh_pos[1] = gga.lon *M_PI/180; + } else if (!rtk_dead_reckoning_status->ecef_base_pos_status && gga_time != 0) { + llh_pos[0] = gga.lat * M_PI / 180; + llh_pos[1] = gga.lon * M_PI / 180; llh_pos[2] = gga.alt + gga.undulation; - llh2xyz(llh_pos,ecef_pos); + llh2xyz(llh_pos, ecef_pos); enu_absolute_rtk_dead_reckoning->ecef_base_pos.x = ecef_pos[0]; enu_absolute_rtk_dead_reckoning->ecef_base_pos.y = ecef_pos[1]; @@ -231,5 +228,7 @@ void rtk_dead_reckoning_estimate(geometry_msgs::msg::Vector3Stamped enu_vel, nme rtk_dead_reckoning_status->position_estimate_start_status = true; } - rtk_dead_reckoning_estimate_(enu_vel, gga, heading, rtk_dead_reckoning_parameter, rtk_dead_reckoning_status, enu_absolute_rtk_dead_reckoning, eagleye_fix); + rtk_dead_reckoning_estimate_(enu_vel, gga, heading, rtk_dead_reckoning_parameter, + rtk_dead_reckoning_status, enu_absolute_rtk_dead_reckoning, + eagleye_fix); } diff --git a/eagleye_core/navigation/src/rtk_heading.cpp b/eagleye_core/navigation/src/rtk_heading.cpp old mode 100755 new mode 100644 index b78cde38..a595c771 --- a/eagleye_core/navigation/src/rtk_heading.cpp +++ b/eagleye_core/navigation/src/rtk_heading.cpp @@ -31,14 +31,15 @@ #include "eagleye_coordinate/eagleye_coordinate.hpp" #include "eagleye_navigation/eagleye_navigation.hpp" -void rtk_heading_estimate(nmea_msgs::msg::Gpgga gga,sensor_msgs::msg::Imu imu,geometry_msgs::msg::TwistStamped velocity,eagleye_msgs::msg::Distance distance, - eagleye_msgs::msg::YawrateOffset yaw_rate_offset_stop,eagleye_msgs::msg::YawrateOffset yaw_rate_offset,eagleye_msgs::msg::SlipAngle slip_angle, - eagleye_msgs::msg::Heading heading_interpolate,RtkHeadingParameter heading_parameter, RtkHeadingStatus* heading_status,eagleye_msgs::msg::Heading* heading) -{ - - int i,index_max; - double yaw_rate = 0.0 , rtk_heading_angle = 0.0; - double avg = 0.0,tmp_heading_angle; +void rtk_heading_estimate( + nmea_msgs::msg::Gpgga gga, sensor_msgs::msg::Imu imu, geometry_msgs::msg::TwistStamped velocity, + eagleye_msgs::msg::Distance distance, eagleye_msgs::msg::YawrateOffset yaw_rate_offset_stop, + eagleye_msgs::msg::YawrateOffset yaw_rate_offset, eagleye_msgs::msg::SlipAngle slip_angle, + eagleye_msgs::msg::Heading heading_interpolate, RtkHeadingParameter heading_parameter, + RtkHeadingStatus* heading_status, eagleye_msgs::msg::Heading* heading) { + int i, index_max; + double yaw_rate = 0.0, rtk_heading_angle = 0.0; + double avg = 0.0, tmp_heading_angle; double estimated_heading_buffer = 2; bool gnss_status; std::size_t index_length; @@ -47,9 +48,12 @@ void rtk_heading_estimate(nmea_msgs::msg::Gpgga gga,sensor_msgs::msg::Imu imu,ge std::size_t inversion_down_index_length; std::vector::iterator max; - double estimated_buffer_number_min = heading_parameter.estimated_minimum_interval * heading_parameter.imu_rate; - double estimated_buffer_number_max = heading_parameter.estimated_maximum_interval * heading_parameter.imu_rate; - double enabled_data_ratio = heading_parameter.gnss_rate / heading_parameter.imu_rate * heading_parameter.gnss_receiving_threshold; + double estimated_buffer_number_min = + heading_parameter.estimated_minimum_interval * heading_parameter.imu_rate; + double estimated_buffer_number_max = + heading_parameter.estimated_maximum_interval * heading_parameter.imu_rate; + double enabled_data_ratio = heading_parameter.gnss_rate / heading_parameter.imu_rate * + heading_parameter.gnss_receiving_threshold; double remain_data_ratio = enabled_data_ratio * heading_parameter.outlier_ratio_threshold; rclcpp::Time ros_clock(gga.header.stamp); @@ -57,21 +61,18 @@ void rtk_heading_estimate(nmea_msgs::msg::Gpgga gga,sensor_msgs::msg::Imu imu,ge auto gga_time = ros_clock.seconds(); auto imu_time = ros_clock2.seconds(); - if (heading_status->estimated_number < estimated_buffer_number_max) - { - ++heading_status->estimated_number ; - } - else - { - heading_status->estimated_number = estimated_buffer_number_max; + if (heading_status->estimated_number < estimated_buffer_number_max) { + ++heading_status->estimated_number; + } else { + heading_status->estimated_number = estimated_buffer_number_max; } yaw_rate = imu.angular_velocity.z; // heading set // double enu_pos[3]; - double tmp_llh[3],llh_pos[3]; - double ecef_base[3],ecef_pos[3]; + double tmp_llh[3], llh_pos[3]; + double ecef_base[3], ecef_pos[3]; heading_status->distance_buffer.push_back(distance.distance); heading_status->latitude_buffer.push_back(gga.lat); @@ -80,12 +81,12 @@ void rtk_heading_estimate(nmea_msgs::msg::Gpgga gga,sensor_msgs::msg::Imu imu,ge heading_status->gga_status_buffer.push_back(gga.gps_qual); int distance_length; - distance_length = std::distance(heading_status->distance_buffer.begin(), heading_status->distance_buffer.end()); + distance_length = + std::distance(heading_status->distance_buffer.begin(), heading_status->distance_buffer.end()); - while (heading_status->distance_buffer[distance_length-1] - heading_status->distance_buffer[0] > heading_parameter.update_distance) - { - if (distance_length <= estimated_heading_buffer) - { + while (heading_status->distance_buffer[distance_length - 1] - heading_status->distance_buffer[0] > + heading_parameter.update_distance) { + if (distance_length <= estimated_heading_buffer) { break; } @@ -95,124 +96,125 @@ void rtk_heading_estimate(nmea_msgs::msg::Gpgga gga,sensor_msgs::msg::Imu imu,ge heading_status->altitude_buffer.erase(heading_status->altitude_buffer.begin()); heading_status->gga_status_buffer.erase(heading_status->gga_status_buffer.begin()); - distance_length = std::distance(heading_status->distance_buffer.begin(), heading_status->distance_buffer.end()); - + distance_length = + std::distance(heading_status->distance_buffer.begin(), heading_status->distance_buffer.end()); } double gga_length; - gga_length = std::distance(heading_status->gga_status_buffer.begin(), heading_status->gga_status_buffer.end()); - - if (heading_status->gga_status_buffer[0] == 0 && heading_status->gga_status_buffer[gga_length-1] == 0 && abs(yaw_rate) < heading_parameter.curve_judgment_threshold) - { - tmp_llh[0] = heading_status->latitude_buffer[0] *M_PI/180; - tmp_llh[1] = heading_status->longitude_buffer[0]*M_PI/180; + gga_length = std::distance(heading_status->gga_status_buffer.begin(), + heading_status->gga_status_buffer.end()); + + if (heading_status->gga_status_buffer[0] == 0 && + heading_status->gga_status_buffer[gga_length - 1] == 0 && + abs(yaw_rate) < heading_parameter.curve_judgment_threshold) { + tmp_llh[0] = heading_status->latitude_buffer[0] * M_PI / 180; + tmp_llh[1] = heading_status->longitude_buffer[0] * M_PI / 180; tmp_llh[2] = heading_status->altitude_buffer[0]; - llh2xyz(tmp_llh,ecef_base); + llh2xyz(tmp_llh, ecef_base); - llh_pos[0] = heading_status->latitude_buffer[gga_length-1] *M_PI/180; - llh_pos[1] = heading_status->longitude_buffer[gga_length-1]*M_PI/180; - llh_pos[2] = heading_status->altitude_buffer[gga_length-1]; + llh_pos[0] = heading_status->latitude_buffer[gga_length - 1] * M_PI / 180; + llh_pos[1] = heading_status->longitude_buffer[gga_length - 1] * M_PI / 180; + llh_pos[2] = heading_status->altitude_buffer[gga_length - 1]; - llh2xyz(llh_pos,ecef_pos); - xyz2enu(ecef_pos,ecef_base,enu_pos); + llh2xyz(llh_pos, ecef_pos); + xyz2enu(ecef_pos, ecef_base, enu_pos); rtk_heading_angle = atan2(enu_pos[0], enu_pos[1]); } - if(rtk_heading_angle<0){ - rtk_heading_angle = rtk_heading_angle + 2*M_PI; + if (rtk_heading_angle < 0) { + rtk_heading_angle = rtk_heading_angle + 2 * M_PI; } - if (heading_status->tow_last == gga_time || gga_time == 0 || rtk_heading_angle == 0 - || heading_status->last_rtk_heading_angle == rtk_heading_angle || velocity.twist.linear.x < heading_parameter.stop_judgment_threshold) - { + if (heading_status->tow_last == gga_time || gga_time == 0 || rtk_heading_angle == 0 || + heading_status->last_rtk_heading_angle == rtk_heading_angle || + velocity.twist.linear.x < heading_parameter.stop_judgment_threshold) { gnss_status = false; rtk_heading_angle = 0; - heading_status->tow_last = gga_time ; - } - else - { + heading_status->tow_last = gga_time; + } else { gnss_status = true; rtk_heading_angle = rtk_heading_angle; - heading_status->tow_last = gga_time ; + heading_status->tow_last = gga_time; heading_status->last_rtk_heading_angle = rtk_heading_angle; } // data buffer generate - heading_status->time_buffer .push_back(imu_time); - heading_status->heading_angle_buffer .push_back(rtk_heading_angle); - heading_status->yaw_rate_buffer .push_back(yaw_rate); - heading_status->correction_velocity_buffer .push_back(velocity.twist.linear.x); - heading_status->yaw_rate_offset_stop_buffer .push_back(yaw_rate_offset_stop.yaw_rate_offset); - heading_status->yaw_rate_offset_buffer .push_back(yaw_rate_offset.yaw_rate_offset); - heading_status->slip_angle_buffer .push_back(slip_angle.slip_angle); - heading_status->gnss_status_buffer .push_back(gnss_status); - - time_buffer_length = std::distance(heading_status->time_buffer .begin(), heading_status->time_buffer .end()); - - if (time_buffer_length > estimated_buffer_number_max) - { - heading_status->time_buffer .erase(heading_status->time_buffer .begin()); - heading_status->heading_angle_buffer .erase(heading_status->heading_angle_buffer .begin()); - heading_status->yaw_rate_buffer .erase(heading_status->yaw_rate_buffer .begin()); - heading_status->correction_velocity_buffer .erase(heading_status->correction_velocity_buffer .begin()); - heading_status->yaw_rate_offset_stop_buffer .erase(heading_status->yaw_rate_offset_stop_buffer .begin()); - heading_status->yaw_rate_offset_buffer .erase(heading_status->yaw_rate_offset_buffer .begin()); - heading_status->slip_angle_buffer .erase(heading_status->slip_angle_buffer .begin()); - heading_status->gnss_status_buffer .erase(heading_status->gnss_status_buffer .begin()); + heading_status->time_buffer.push_back(imu_time); + heading_status->heading_angle_buffer.push_back(rtk_heading_angle); + heading_status->yaw_rate_buffer.push_back(yaw_rate); + heading_status->correction_velocity_buffer.push_back(velocity.twist.linear.x); + heading_status->yaw_rate_offset_stop_buffer.push_back(yaw_rate_offset_stop.yaw_rate_offset); + heading_status->yaw_rate_offset_buffer.push_back(yaw_rate_offset.yaw_rate_offset); + heading_status->slip_angle_buffer.push_back(slip_angle.slip_angle); + heading_status->gnss_status_buffer.push_back(gnss_status); + + time_buffer_length = + std::distance(heading_status->time_buffer.begin(), heading_status->time_buffer.end()); + + if (time_buffer_length > estimated_buffer_number_max) { + heading_status->time_buffer.erase(heading_status->time_buffer.begin()); + heading_status->heading_angle_buffer.erase(heading_status->heading_angle_buffer.begin()); + heading_status->yaw_rate_buffer.erase(heading_status->yaw_rate_buffer.begin()); + heading_status->correction_velocity_buffer.erase( + heading_status->correction_velocity_buffer.begin()); + heading_status->yaw_rate_offset_stop_buffer.erase( + heading_status->yaw_rate_offset_stop_buffer.begin()); + heading_status->yaw_rate_offset_buffer.erase(heading_status->yaw_rate_offset_buffer.begin()); + heading_status->slip_angle_buffer.erase(heading_status->slip_angle_buffer.begin()); + heading_status->gnss_status_buffer.erase(heading_status->gnss_status_buffer.begin()); } std::vector gnss_index; std::vector velocity_index; std::vector index; - if (heading_status->estimated_number > estimated_buffer_number_min && - heading_status->gnss_status_buffer [heading_status->estimated_number -1] == true && - heading_status->correction_velocity_buffer [heading_status->estimated_number -1] > heading_parameter.slow_judgment_threshold && - fabsf(heading_status->yaw_rate_buffer [heading_status->estimated_number -1]) < heading_parameter.curve_judgment_threshold) - { + if (heading_status->estimated_number > estimated_buffer_number_min && + heading_status->gnss_status_buffer[heading_status->estimated_number - 1] == true && + heading_status->correction_velocity_buffer[heading_status->estimated_number - 1] > + heading_parameter.slow_judgment_threshold && + fabsf(heading_status->yaw_rate_buffer[heading_status->estimated_number - 1]) < + heading_parameter.curve_judgment_threshold) { heading->status.enabled_status = true; - } - else - { + } else { heading->status.enabled_status = false; } - if (heading->status.enabled_status == true) - { - for (i = 0; i < heading_status->estimated_number ; i++) - { - if (heading_status->gnss_status_buffer [i] == true) - { + if (heading->status.enabled_status == true) { + for (i = 0; i < heading_status->estimated_number; i++) { + if (heading_status->gnss_status_buffer[i] == true) { gnss_index.push_back(i); } - if (heading_status->correction_velocity_buffer [i] > heading_parameter.slow_judgment_threshold) - { + if (heading_status->correction_velocity_buffer[i] > + heading_parameter.slow_judgment_threshold) { velocity_index.push_back(i); } } - set_intersection(gnss_index.begin(), gnss_index.end(), velocity_index.begin(), velocity_index.end(), - inserter(index, index.end())); + set_intersection(gnss_index.begin(), gnss_index.end(), velocity_index.begin(), + velocity_index.end(), inserter(index, index.end())); index_length = std::distance(index.begin(), index.end()); - if (index_length > heading_status->estimated_number * enabled_data_ratio) - { - std::vector provisional_heading_angle_buffer(heading_status->estimated_number , 0); - - for (i = 0; i < heading_status->estimated_number ; i++) - { - if (i > 0) - { - if (std::abs(heading_status->correction_velocity_buffer [heading_status->estimated_number -1]) > heading_parameter.stop_judgment_threshold) - { - provisional_heading_angle_buffer[i] = provisional_heading_angle_buffer[i-1] + ((heading_status->yaw_rate_buffer [i] + heading_status->yaw_rate_offset_buffer [i]) * (heading_status->time_buffer [i] - heading_status->time_buffer [i-1])); - } - else - { - provisional_heading_angle_buffer[i] = provisional_heading_angle_buffer[i-1] + ((heading_status->yaw_rate_buffer [i] + heading_status->yaw_rate_offset_stop_buffer [i]) * (heading_status->time_buffer [i] - heading_status->time_buffer [i-1])); + if (index_length > heading_status->estimated_number * enabled_data_ratio) { + std::vector provisional_heading_angle_buffer(heading_status->estimated_number, 0); + + for (i = 0; i < heading_status->estimated_number; i++) { + if (i > 0) { + if (std::abs( + heading_status->correction_velocity_buffer[heading_status->estimated_number - 1]) > + heading_parameter.stop_judgment_threshold) { + provisional_heading_angle_buffer[i] = + provisional_heading_angle_buffer[i - 1] + + ((heading_status->yaw_rate_buffer[i] + heading_status->yaw_rate_offset_buffer[i]) * + (heading_status->time_buffer[i] - heading_status->time_buffer[i - 1])); + } else { + provisional_heading_angle_buffer[i] = + provisional_heading_angle_buffer[i - 1] + + ((heading_status->yaw_rate_buffer[i] + + heading_status->yaw_rate_offset_stop_buffer[i]) * + (heading_status->time_buffer[i] - heading_status->time_buffer[i - 1])); } } } @@ -223,88 +225,92 @@ void rtk_heading_estimate(nmea_msgs::msg::Gpgga gga,sensor_msgs::msg::Imu imu,ge std::vector inversion_up_index; std::vector inversion_down_index; - if(heading_interpolate.status.enabled_status == false) - { - heading_interpolate.heading_angle = heading_status->heading_angle_buffer [index[index_length-1]]; - } + if (heading_interpolate.status.enabled_status == false) { + heading_interpolate.heading_angle = + heading_status->heading_angle_buffer[index[index_length - 1]]; + } int ref_cnt; std::vector heading_angle_buffer2; - copy(heading_status->heading_angle_buffer .begin(), heading_status->heading_angle_buffer .end(), back_inserter(heading_angle_buffer2) ); + copy(heading_status->heading_angle_buffer.begin(), heading_status->heading_angle_buffer.end(), + back_inserter(heading_angle_buffer2)); - for (i = 0; i < heading_status->estimated_number ; i++) - { - base_heading_angle_buffer.push_back(heading_interpolate.heading_angle - provisional_heading_angle_buffer[index[index_length-1]] + provisional_heading_angle_buffer[i]); + for (i = 0; i < heading_status->estimated_number; i++) { + base_heading_angle_buffer.push_back( + heading_interpolate.heading_angle - + provisional_heading_angle_buffer[index[index_length - 1]] + + provisional_heading_angle_buffer[i]); } - for (i = 0; i < index_length; i++) - { - ref_cnt = (base_heading_angle_buffer[index[i]] - fmod(base_heading_angle_buffer[index[i]],2*M_PI))/(2*M_PI); - if(base_heading_angle_buffer[index[i]] < 0) ref_cnt = ref_cnt -1; - heading_angle_buffer2[index[i]] = heading_status->heading_angle_buffer [index[i]] + ref_cnt * 2*M_PI; + for (i = 0; i < index_length; i++) { + ref_cnt = (base_heading_angle_buffer[index[i]] - + fmod(base_heading_angle_buffer[index[i]], 2 * M_PI)) / + (2 * M_PI); + if (base_heading_angle_buffer[index[i]] < 0) + ref_cnt = ref_cnt - 1; + heading_angle_buffer2[index[i]] = + heading_status->heading_angle_buffer[index[i]] + ref_cnt * 2 * M_PI; } - while (1) - { + while (1) { index_length = std::distance(index.begin(), index.end()); base_heading_angle_buffer.clear(); - for (i = 0; i < heading_status->estimated_number ; i++) - { - base_heading_angle_buffer.push_back(heading_angle_buffer2[index[index_length-1]] - provisional_heading_angle_buffer[index[index_length-1]] + provisional_heading_angle_buffer[i]); + for (i = 0; i < heading_status->estimated_number; i++) { + base_heading_angle_buffer.push_back( + heading_angle_buffer2[index[index_length - 1]] - + provisional_heading_angle_buffer[index[index_length - 1]] + + provisional_heading_angle_buffer[i]); } diff_buffer.clear(); - for (i = 0; i < index_length; i++) - { - diff_buffer.push_back(base_heading_angle_buffer[index[i]] - heading_angle_buffer2[index[i]]); + for (i = 0; i < index_length; i++) { + diff_buffer.push_back(base_heading_angle_buffer[index[i]] - + heading_angle_buffer2[index[i]]); } avg = std::accumulate(diff_buffer.begin(), diff_buffer.end(), 0.0) / index_length; - tmp_heading_angle = heading_angle_buffer2[index[index_length-1]] - avg; + tmp_heading_angle = heading_angle_buffer2[index[index_length - 1]] - avg; base_heading_angle_buffer2.clear(); - for (i = 0; i < heading_status->estimated_number ; i++) - { - base_heading_angle_buffer2.push_back(tmp_heading_angle - provisional_heading_angle_buffer[index[index_length-1]] + provisional_heading_angle_buffer[i]); + for (i = 0; i < heading_status->estimated_number; i++) { + base_heading_angle_buffer2.push_back( + tmp_heading_angle - provisional_heading_angle_buffer[index[index_length - 1]] + + provisional_heading_angle_buffer[i]); } diff_buffer.clear(); - for (i = 0; i < index_length; i++) - { - diff_buffer.push_back(fabsf(base_heading_angle_buffer2[index[i]] - heading_angle_buffer2[index[i]])); + for (i = 0; i < index_length; i++) { + diff_buffer.push_back( + fabsf(base_heading_angle_buffer2[index[i]] - heading_angle_buffer2[index[i]])); } max = std::max_element(diff_buffer.begin(), diff_buffer.end()); index_max = std::distance(diff_buffer.begin(), max); - if (diff_buffer[index_max] > heading_parameter.outlier_threshold) - { + if (diff_buffer[index_max] > heading_parameter.outlier_threshold) { index.erase(index.begin() + index_max); - } - else - { + } else { break; } index_length = std::distance(index.begin(), index.end()); - if (index_length < heading_status->estimated_number * remain_data_ratio) - { + if (index_length < heading_status->estimated_number * remain_data_ratio) { break; } } - if (index_length == 0 || index_length > heading_status->estimated_number * remain_data_ratio) - { - if (index[index_length-1] == heading_status->estimated_number -1) - { + if (index_length == 0 || + index_length > heading_status->estimated_number * remain_data_ratio) { + if (index[index_length - 1] == heading_status->estimated_number - 1) { heading->heading_angle = tmp_heading_angle; - } - else - { - heading->heading_angle = tmp_heading_angle + (provisional_heading_angle_buffer[heading_status->estimated_number -1] - provisional_heading_angle_buffer[index[index_length-1]]); + } else { + heading->heading_angle = + tmp_heading_angle + + (provisional_heading_angle_buffer[heading_status->estimated_number - 1] - + provisional_heading_angle_buffer[index[index_length - 1]]); } heading->status.estimate_status = true; } diff --git a/eagleye_core/navigation/src/slip_angle.cpp b/eagleye_core/navigation/src/slip_angle.cpp old mode 100755 new mode 100644 index 15666ab1..9c233859 --- a/eagleye_core/navigation/src/slip_angle.cpp +++ b/eagleye_core/navigation/src/slip_angle.cpp @@ -31,11 +31,12 @@ #include "eagleye_coordinate/eagleye_coordinate.hpp" #include "eagleye_navigation/eagleye_navigation.hpp" -void slip_angle_estimate(sensor_msgs::msg::Imu imu, geometry_msgs::msg::TwistStamped velocity, eagleye_msgs::msg::StatusStamped velocity_status, - eagleye_msgs::msg::YawrateOffset yaw_rate_offset_stop, eagleye_msgs::msg::YawrateOffset yaw_rate_offset_2nd, SlipangleParameter slip_angle_parameter, - eagleye_msgs::msg::SlipAngle* slip_angle) -{ - +void slip_angle_estimate(sensor_msgs::msg::Imu imu, geometry_msgs::msg::TwistStamped velocity, + eagleye_msgs::msg::StatusStamped velocity_status, + eagleye_msgs::msg::YawrateOffset yaw_rate_offset_stop, + eagleye_msgs::msg::YawrateOffset yaw_rate_offset_2nd, + SlipangleParameter slip_angle_parameter, + eagleye_msgs::msg::SlipAngle* slip_angle) { int i; double doppler_slip; double yaw_rate; @@ -43,29 +44,24 @@ void slip_angle_estimate(sensor_msgs::msg::Imu imu, geometry_msgs::msg::TwistSta yaw_rate = imu.angular_velocity.z; - if (std::abs(velocity.twist.linear.x) > slip_angle_parameter.stop_judgment_threshold) - { + if (std::abs(velocity.twist.linear.x) > slip_angle_parameter.stop_judgment_threshold) { yaw_rate = yaw_rate + yaw_rate_offset_2nd.yaw_rate_offset; - } - else - { + } else { yaw_rate = yaw_rate + yaw_rate_offset_stop.yaw_rate_offset; } acceleration_y = velocity.twist.linear.x * yaw_rate; - if (velocity_status.status.enabled_status == true && yaw_rate_offset_stop.status.enabled_status == true && yaw_rate_offset_2nd.status.enabled_status == true) - { - slip_angle->coefficient = slip_angle_parameter.manual_coefficient; - slip_angle->slip_angle = slip_angle_parameter.manual_coefficient * acceleration_y; - if (slip_angle_parameter.manual_coefficient != 0) - { - slip_angle->status.enabled_status = true; - } - else - { - slip_angle->status.enabled_status = false; - } - slip_angle->status.estimate_status = false; + if (velocity_status.status.enabled_status == true && + yaw_rate_offset_stop.status.enabled_status == true && + yaw_rate_offset_2nd.status.enabled_status == true) { + slip_angle->coefficient = slip_angle_parameter.manual_coefficient; + slip_angle->slip_angle = slip_angle_parameter.manual_coefficient * acceleration_y; + if (slip_angle_parameter.manual_coefficient != 0) { + slip_angle->status.enabled_status = true; + } else { + slip_angle->status.enabled_status = false; + } + slip_angle->status.estimate_status = false; } } diff --git a/eagleye_core/navigation/src/slip_coefficient.cpp b/eagleye_core/navigation/src/slip_coefficient.cpp old mode 100755 new mode 100644 index 04d74495..48412cd9 --- a/eagleye_core/navigation/src/slip_coefficient.cpp +++ b/eagleye_core/navigation/src/slip_coefficient.cpp @@ -31,11 +31,14 @@ #include "eagleye_coordinate/eagleye_coordinate.hpp" #include "eagleye_navigation/eagleye_navigation.hpp" -void slip_coefficient_estimate(sensor_msgs::msg::Imu imu,rtklib_msgs::msg::RtklibNav rtklib_nav, geometry_msgs::msg::TwistStamped velocity, - eagleye_msgs::msg::YawrateOffset yaw_rate_offset_stop,eagleye_msgs::msg::YawrateOffset yaw_rate_offset_2nd,eagleye_msgs::msg::Heading heading_interpolate_3rd, - SlipCoefficientParameter slip_coefficient_parameter,SlipCoefficientStatus* slip_coefficient_status,double* estimate_coefficient) -{ - +void slip_coefficient_estimate(sensor_msgs::msg::Imu imu, rtklib_msgs::msg::RtklibNav rtklib_nav, + geometry_msgs::msg::TwistStamped velocity, + eagleye_msgs::msg::YawrateOffset yaw_rate_offset_stop, + eagleye_msgs::msg::YawrateOffset yaw_rate_offset_2nd, + eagleye_msgs::msg::Heading heading_interpolate_3rd, + SlipCoefficientParameter slip_coefficient_parameter, + SlipCoefficientStatus* slip_coefficient_status, + double* estimate_coefficient) { int i; double doppler_heading_angle; double doppler_slip; @@ -48,8 +51,10 @@ void slip_coefficient_estimate(sensor_msgs::msg::Imu imu,rtklib_msgs::msg::Rtkli double enu_vel[3]; std::size_t acceleration_y_buffer_length; - double estimated_buffer_number_min = slip_coefficient_parameter.estimated_minimum_interval * slip_coefficient_parameter.imu_rate; - double estimated_buffer_number_max = slip_coefficient_parameter.estimated_maximum_interval * slip_coefficient_parameter.imu_rate; + double estimated_buffer_number_min = + slip_coefficient_parameter.estimated_minimum_interval * slip_coefficient_parameter.imu_rate; + double estimated_buffer_number_max = + slip_coefficient_parameter.estimated_maximum_interval * slip_coefficient_parameter.imu_rate; ecef_vel[0] = rtklib_nav.ecef_vel.x; ecef_vel[1] = rtklib_nav.ecef_vel.y; @@ -60,8 +65,7 @@ void slip_coefficient_estimate(sensor_msgs::msg::Imu imu,rtklib_msgs::msg::Rtkli xyz2enu_vel(ecef_vel, ecef_pos, enu_vel); - if (!std::isfinite(enu_vel[0])||!std::isfinite(enu_vel[1])||!std::isfinite(enu_vel[2])) - { + if (!std::isfinite(enu_vel[0]) || !std::isfinite(enu_vel[1]) || !std::isfinite(enu_vel[2])) { enu_vel[0] = 0; enu_vel[1] = 0; enu_vel[2] = 0; @@ -69,79 +73,77 @@ void slip_coefficient_estimate(sensor_msgs::msg::Imu imu,rtklib_msgs::msg::Rtkli doppler_heading_angle = std::atan2(enu_vel[0], enu_vel[1]); - if(doppler_heading_angle<0){ - doppler_heading_angle = doppler_heading_angle + 2*M_PI; + if (doppler_heading_angle < 0) { + doppler_heading_angle = doppler_heading_angle + 2 * M_PI; } yaw_rate = imu.angular_velocity.z; - if (std::abs(velocity.twist.linear.x) > slip_coefficient_parameter.stop_judgment_threshold) - { + if (std::abs(velocity.twist.linear.x) > slip_coefficient_parameter.stop_judgment_threshold) { yaw_rate = yaw_rate + yaw_rate_offset_2nd.yaw_rate_offset; - } - else - { + } else { yaw_rate = yaw_rate + yaw_rate_offset_stop.yaw_rate_offset; } acceleration_y = velocity.twist.linear.x * yaw_rate; - if (heading_interpolate_3rd.status.estimate_status == true) - { - if ((velocity.twist.linear.x > slip_coefficient_parameter.moving_judgment_threshold) && - (fabs(yaw_rate) > slip_coefficient_parameter.curve_judgment_threshold)) - { + if (heading_interpolate_3rd.status.estimate_status == true) { + if ((velocity.twist.linear.x > slip_coefficient_parameter.moving_judgment_threshold) && + (fabs(yaw_rate) > slip_coefficient_parameter.curve_judgment_threshold)) { double imu_heading; - if(fmod(heading_interpolate_3rd.heading_angle,2*M_PI)<0){ - imu_heading = fmod(heading_interpolate_3rd.heading_angle,2*M_PI) + 2*M_PI; - }else{ - imu_heading = fmod(heading_interpolate_3rd.heading_angle,2*M_PI); + if (fmod(heading_interpolate_3rd.heading_angle, 2 * M_PI) < 0) { + imu_heading = fmod(heading_interpolate_3rd.heading_angle, 2 * M_PI) + 2 * M_PI; + } else { + imu_heading = fmod(heading_interpolate_3rd.heading_angle, 2 * M_PI); } doppler_slip = (imu_heading - doppler_heading_angle); - rear_slip = doppler_slip + slip_coefficient_parameter.lever_arm*yaw_rate/velocity.twist.linear.x; + rear_slip = + doppler_slip + slip_coefficient_parameter.lever_arm * yaw_rate / velocity.twist.linear.x; - if(fabs(rear_slip)<(2*M_PI/180)) - { + if (fabs(rear_slip) < (2 * M_PI / 180)) { slip_coefficient_status->acceleration_y_buffer.push_back(acceleration_y); slip_coefficient_status->doppler_slip_buffer.push_back(rear_slip); - acceleration_y_buffer_length = std::distance(slip_coefficient_status->acceleration_y_buffer.begin(), slip_coefficient_status->acceleration_y_buffer.end()); + acceleration_y_buffer_length = + std::distance(slip_coefficient_status->acceleration_y_buffer.begin(), + slip_coefficient_status->acceleration_y_buffer.end()); - if (acceleration_y_buffer_length > estimated_buffer_number_max) - { - slip_coefficient_status->acceleration_y_buffer.erase(slip_coefficient_status->acceleration_y_buffer.begin()); - slip_coefficient_status->doppler_slip_buffer.erase(slip_coefficient_status->doppler_slip_buffer.begin()); + if (acceleration_y_buffer_length > estimated_buffer_number_max) { + slip_coefficient_status->acceleration_y_buffer.erase( + slip_coefficient_status->acceleration_y_buffer.begin()); + slip_coefficient_status->doppler_slip_buffer.erase( + slip_coefficient_status->doppler_slip_buffer.begin()); } - if(slip_coefficient_status->heading_estimate_status_count < estimated_buffer_number_max) - { + if (slip_coefficient_status->heading_estimate_status_count < estimated_buffer_number_max) { ++slip_coefficient_status->heading_estimate_status_count; - } - else - { + } else { slip_coefficient_status->heading_estimate_status_count = estimated_buffer_number_max; } - if(slip_coefficient_status->heading_estimate_status_count > estimated_buffer_number_min) - { - double sum_xy_avg,sum_x_square = 0.0; - acceleration_y_buffer_length = std::distance(slip_coefficient_status->acceleration_y_buffer.begin(), slip_coefficient_status->acceleration_y_buffer.end()); - - // Least-square - sum_xy = 0.0, sum_x = 0.0, sum_y = 0.0, sum_x2 = 0.0; - for (i = 0; i < acceleration_y_buffer_length ; i++) - { - sum_xy += slip_coefficient_status->acceleration_y_buffer[i] * slip_coefficient_status->doppler_slip_buffer[i]; - sum_x += slip_coefficient_status->acceleration_y_buffer[i]; - sum_y += slip_coefficient_status->doppler_slip_buffer[i]; - sum_x2 += pow(slip_coefficient_status->acceleration_y_buffer[i], 2); - } - *estimate_coefficient = (slip_coefficient_status->heading_estimate_status_count * sum_xy - sum_x * sum_y) / (slip_coefficient_status->heading_estimate_status_count * sum_x2 - pow(sum_x, 2)); + if (slip_coefficient_status->heading_estimate_status_count > estimated_buffer_number_min) { + double sum_xy_avg, sum_x_square = 0.0; + acceleration_y_buffer_length = + std::distance(slip_coefficient_status->acceleration_y_buffer.begin(), + slip_coefficient_status->acceleration_y_buffer.end()); + + // Least-square + sum_xy = 0.0, sum_x = 0.0, sum_y = 0.0, sum_x2 = 0.0; + for (i = 0; i < acceleration_y_buffer_length; i++) { + sum_xy += slip_coefficient_status->acceleration_y_buffer[i] * + slip_coefficient_status->doppler_slip_buffer[i]; + sum_x += slip_coefficient_status->acceleration_y_buffer[i]; + sum_y += slip_coefficient_status->doppler_slip_buffer[i]; + sum_x2 += pow(slip_coefficient_status->acceleration_y_buffer[i], 2); } + *estimate_coefficient = + (slip_coefficient_status->heading_estimate_status_count * sum_xy - sum_x * sum_y) / + (slip_coefficient_status->heading_estimate_status_count * sum_x2 - pow(sum_x, 2)); } } } + } } diff --git a/eagleye_core/navigation/src/smoothing.cpp b/eagleye_core/navigation/src/smoothing.cpp old mode 100755 new mode 100644 index cc4d6b11..62662eb3 --- a/eagleye_core/navigation/src/smoothing.cpp +++ b/eagleye_core/navigation/src/smoothing.cpp @@ -31,16 +31,16 @@ #include "eagleye_coordinate/eagleye_coordinate.hpp" #include "eagleye_navigation/eagleye_navigation.hpp" -void smoothing_estimate(rtklib_msgs::msg::RtklibNav rtklib_nav, geometry_msgs::msg::TwistStamped velocity, - SmoothingParameter smoothing_parameter, SmoothingStatus* smoothing_status,eagleye_msgs::msg::Position* gnss_smooth_pos_enu) -{ - +void smoothing_estimate(rtklib_msgs::msg::RtklibNav rtklib_nav, + geometry_msgs::msg::TwistStamped velocity, + SmoothingParameter smoothing_parameter, SmoothingStatus* smoothing_status, + eagleye_msgs::msg::Position* gnss_smooth_pos_enu) { int i; double ecef_pos[3]; double ecef_base_pos[3]; double enu_pos[3]; - double gnss_smooth_pos[3] = {0}; - double sum_gnss_pos[3] = {0}; + double gnss_smooth_pos[3] = { 0 }; + double sum_gnss_pos[3] = { 0 }; bool gnss_update = false; std::size_t index_length; std::size_t time_buffer_length; @@ -48,25 +48,27 @@ void smoothing_estimate(rtklib_msgs::msg::RtklibNav rtklib_nav, geometry_msgs::m std::vector velocity_index; std::vector index; - double estimated_buffer_number = smoothing_parameter.gnss_rate * smoothing_parameter.moving_average_time; + double estimated_buffer_number = + smoothing_parameter.gnss_rate * smoothing_parameter.moving_average_time; rclcpp::Time ros_clock(rtklib_nav.header.stamp); auto rtklib_nav_time = ros_clock.seconds(); - if(gnss_smooth_pos_enu->ecef_base_pos.x == 0 && gnss_smooth_pos_enu->ecef_base_pos.y == 0 && gnss_smooth_pos_enu->ecef_base_pos.z == 0) - { + if (gnss_smooth_pos_enu->ecef_base_pos.x == 0 && gnss_smooth_pos_enu->ecef_base_pos.y == 0 && + gnss_smooth_pos_enu->ecef_base_pos.z == 0) { gnss_smooth_pos_enu->ecef_base_pos.x = rtklib_nav.ecef_pos.x; gnss_smooth_pos_enu->ecef_base_pos.y = rtklib_nav.ecef_pos.y; gnss_smooth_pos_enu->ecef_base_pos.z = rtklib_nav.ecef_pos.z; - if(smoothing_parameter.ecef_base_pos_x != 0 && smoothing_parameter.ecef_base_pos_y != 0 && smoothing_parameter.ecef_base_pos_z != 0){ + if (smoothing_parameter.ecef_base_pos_x != 0 && smoothing_parameter.ecef_base_pos_y != 0 && + smoothing_parameter.ecef_base_pos_z != 0) { gnss_smooth_pos_enu->ecef_base_pos.x = smoothing_parameter.ecef_base_pos_x; gnss_smooth_pos_enu->ecef_base_pos.y = smoothing_parameter.ecef_base_pos_y; gnss_smooth_pos_enu->ecef_base_pos.z = smoothing_parameter.ecef_base_pos_z; } } - if(rtklib_nav.tow != 0){ + if (rtklib_nav.tow != 0) { ecef_pos[0] = rtklib_nav.ecef_pos.x; ecef_pos[1] = rtklib_nav.ecef_pos.y; ecef_pos[2] = rtklib_nav.ecef_pos.z; @@ -76,54 +78,48 @@ void smoothing_estimate(rtklib_msgs::msg::RtklibNav rtklib_nav, geometry_msgs::m xyz2enu(ecef_pos, ecef_base_pos, enu_pos); - if (!std::isfinite(enu_pos[0])||!std::isfinite(enu_pos[1])||!std::isfinite(enu_pos[2])) - { + if (!std::isfinite(enu_pos[0]) || !std::isfinite(enu_pos[1]) || !std::isfinite(enu_pos[2])) { enu_pos[0] = 0; enu_pos[1] = 0; enu_pos[2] = 0; gnss_update = false; - } - else - { + } else { gnss_update = true; } } - if(gnss_update == true){ + if (gnss_update == true) { smoothing_status->time_buffer.push_back(rtklib_nav_time); smoothing_status->enu_pos_x_buffer.push_back(enu_pos[0]); smoothing_status->enu_pos_y_buffer.push_back(enu_pos[1]); smoothing_status->enu_pos_z_buffer.push_back(enu_pos[2]); smoothing_status->correction_velocity_buffer.push_back(velocity.twist.linear.x); - time_buffer_length = std::distance(smoothing_status->time_buffer.begin(), smoothing_status->time_buffer.end()); + time_buffer_length = + std::distance(smoothing_status->time_buffer.begin(), smoothing_status->time_buffer.end()); - if (time_buffer_length > estimated_buffer_number) - { + if (time_buffer_length > estimated_buffer_number) { smoothing_status->time_buffer.erase(smoothing_status->time_buffer.begin()); smoothing_status->enu_pos_x_buffer.erase(smoothing_status->enu_pos_x_buffer.begin()); smoothing_status->enu_pos_y_buffer.erase(smoothing_status->enu_pos_y_buffer.begin()); smoothing_status->enu_pos_z_buffer.erase(smoothing_status->enu_pos_z_buffer.begin()); - smoothing_status->correction_velocity_buffer.erase(smoothing_status->correction_velocity_buffer.begin()); + smoothing_status->correction_velocity_buffer.erase( + smoothing_status->correction_velocity_buffer.begin()); } - if (smoothing_status->estimated_number < estimated_buffer_number) - { + if (smoothing_status->estimated_number < estimated_buffer_number) { ++smoothing_status->estimated_number; gnss_smooth_pos_enu->status.enabled_status = false; - } - else - { + } else { smoothing_status->estimated_number = estimated_buffer_number; gnss_smooth_pos_enu->status.enabled_status = true; } - if (smoothing_status->estimated_number == estimated_buffer_number){ - for (i = 0; i < smoothing_status->estimated_number; i++) - { + if (smoothing_status->estimated_number == estimated_buffer_number) { + for (i = 0; i < smoothing_status->estimated_number; i++) { index.push_back(i); - if (smoothing_status->correction_velocity_buffer[i] > smoothing_parameter.moving_judgment_threshold) - { + if (smoothing_status->correction_velocity_buffer[i] > + smoothing_parameter.moving_judgment_threshold) { velocity_index.push_back(i); } } @@ -131,24 +127,20 @@ void smoothing_estimate(rtklib_msgs::msg::RtklibNav rtklib_nav, geometry_msgs::m index_length = std::distance(index.begin(), index.end()); velocity_index_length = std::distance(velocity_index.begin(), velocity_index.end()); - for (i = 0; i < velocity_index_length; i++) - { + for (i = 0; i < velocity_index_length; i++) { sum_gnss_pos[0] = sum_gnss_pos[0] + smoothing_status->enu_pos_x_buffer[velocity_index[i]]; sum_gnss_pos[1] = sum_gnss_pos[1] + smoothing_status->enu_pos_y_buffer[velocity_index[i]]; sum_gnss_pos[2] = sum_gnss_pos[2] + smoothing_status->enu_pos_z_buffer[velocity_index[i]]; } - if (velocity_index_length > index_length * smoothing_parameter.moving_ratio_threshold) - { - gnss_smooth_pos[0] = sum_gnss_pos[0]/velocity_index_length; - gnss_smooth_pos[1] = sum_gnss_pos[1]/velocity_index_length; - gnss_smooth_pos[2] = sum_gnss_pos[2]/velocity_index_length; + if (velocity_index_length > index_length * smoothing_parameter.moving_ratio_threshold) { + gnss_smooth_pos[0] = sum_gnss_pos[0] / velocity_index_length; + gnss_smooth_pos[1] = sum_gnss_pos[1] / velocity_index_length; + gnss_smooth_pos[2] = sum_gnss_pos[2] / velocity_index_length; gnss_smooth_pos_enu->status.estimate_status = true; } } - } - else - { + } else { gnss_smooth_pos[0] = smoothing_status->last_pos[0]; gnss_smooth_pos[1] = smoothing_status->last_pos[1]; gnss_smooth_pos[2] = smoothing_status->last_pos[2]; diff --git a/eagleye_core/navigation/src/trajectory.cpp b/eagleye_core/navigation/src/trajectory.cpp old mode 100755 new mode 100644 index 1dc27d3f..8e2d848b --- a/eagleye_core/navigation/src/trajectory.cpp +++ b/eagleye_core/navigation/src/trajectory.cpp @@ -31,97 +31,126 @@ #include "eagleye_coordinate/eagleye_coordinate.hpp" #include "eagleye_navigation/eagleye_navigation.hpp" -void calculate_covariance(const geometry_msgs::msg::TwistStamped velocity, const eagleye_msgs::msg::StatusStamped velocity_status, - const eagleye_msgs::msg::YawrateOffset yaw_rate_offset_stop, const TrajectoryParameter trajectory_parameter, - geometry_msgs::msg::TwistWithCovarianceStamped* eagleye_twist_with_covariance) -{ +void calculate_covariance( + const geometry_msgs::msg::TwistStamped velocity, + const eagleye_msgs::msg::StatusStamped velocity_status, + const eagleye_msgs::msg::YawrateOffset yaw_rate_offset_stop, + const TrajectoryParameter trajectory_parameter, + geometry_msgs::msg::TwistWithCovarianceStamped* eagleye_twist_with_covariance) { double noise_velocity; double noise_yaw_rate; - if(velocity_status.status.enabled_status) - { - noise_velocity = trajectory_parameter.sensor_noise_velocity * trajectory_parameter.sensor_noise_velocity; - } - else - { - noise_velocity = trajectory_parameter.sensor_noise_velocity * trajectory_parameter.sensor_noise_velocity - + (velocity.twist.linear.x*trajectory_parameter.sensor_scale_noise_velocity)*(velocity.twist.linear.x*trajectory_parameter.sensor_scale_noise_velocity); + if (velocity_status.status.enabled_status) { + noise_velocity = + trajectory_parameter.sensor_noise_velocity * trajectory_parameter.sensor_noise_velocity; + } else { + noise_velocity = + trajectory_parameter.sensor_noise_velocity * trajectory_parameter.sensor_noise_velocity + + (velocity.twist.linear.x * trajectory_parameter.sensor_scale_noise_velocity) * + (velocity.twist.linear.x * trajectory_parameter.sensor_scale_noise_velocity); } - if(yaw_rate_offset_stop.status.enabled_status) - { - noise_yaw_rate = trajectory_parameter.sensor_noise_yaw_rate * trajectory_parameter.sensor_noise_yaw_rate; - } - else - { - noise_yaw_rate = trajectory_parameter.sensor_noise_yaw_rate * trajectory_parameter.sensor_noise_yaw_rate - + trajectory_parameter.sensor_bias_noise_yaw_rate * trajectory_parameter.sensor_bias_noise_yaw_rate; + if (yaw_rate_offset_stop.status.enabled_status) { + noise_yaw_rate = + trajectory_parameter.sensor_noise_yaw_rate * trajectory_parameter.sensor_noise_yaw_rate; + } else { + noise_yaw_rate = + trajectory_parameter.sensor_noise_yaw_rate * trajectory_parameter.sensor_noise_yaw_rate + + trajectory_parameter.sensor_bias_noise_yaw_rate * + trajectory_parameter.sensor_bias_noise_yaw_rate; } eagleye_twist_with_covariance->twist.covariance[0] = noise_velocity; eagleye_twist_with_covariance->twist.covariance[35] = noise_yaw_rate; } -void trajectory_estimate(const sensor_msgs::msg::Imu imu, const geometry_msgs::msg::TwistStamped velocity, - const eagleye_msgs::msg::StatusStamped velocity_status, const eagleye_msgs::msg::Heading heading_interpolate_3rd, - const eagleye_msgs::msg::YawrateOffset yaw_rate_offset_stop, const eagleye_msgs::msg::YawrateOffset yaw_rate_offset_2nd, - const TrajectoryParameter trajectory_parameter, TrajectoryStatus* trajectory_status, geometry_msgs::msg::Vector3Stamped* enu_vel, - eagleye_msgs::msg::Position* enu_relative_pos, geometry_msgs::msg::TwistStamped* eagleye_twist, - geometry_msgs::msg::TwistWithCovarianceStamped* eagleye_twist_with_covariance) -{ +void trajectory_estimate( + const sensor_msgs::msg::Imu imu, const geometry_msgs::msg::TwistStamped velocity, + const eagleye_msgs::msg::StatusStamped velocity_status, + const eagleye_msgs::msg::Heading heading_interpolate_3rd, + const eagleye_msgs::msg::YawrateOffset yaw_rate_offset_stop, + const eagleye_msgs::msg::YawrateOffset yaw_rate_offset_2nd, + const TrajectoryParameter trajectory_parameter, TrajectoryStatus* trajectory_status, + geometry_msgs::msg::Vector3Stamped* enu_vel, eagleye_msgs::msg::Position* enu_relative_pos, + geometry_msgs::msg::TwistStamped* eagleye_twist, + geometry_msgs::msg::TwistWithCovarianceStamped* eagleye_twist_with_covariance) { rclcpp::Time ros_clock(imu.header.stamp); auto imu_time = ros_clock.seconds(); - if (std::abs(velocity.twist.linear.x) > trajectory_parameter.stop_judgment_threshold && yaw_rate_offset_2nd.status.enabled_status == true) - { - eagleye_twist->twist.angular.z = -1 * (imu.angular_velocity.z + yaw_rate_offset_2nd.yaw_rate_offset); //Inverted because the coordinate system is reversed - eagleye_twist_with_covariance->twist.twist.angular.z = -1 * (imu.angular_velocity.z + yaw_rate_offset_2nd.yaw_rate_offset); //Inverted because the coordinate system is reversed - } - else - { - eagleye_twist->twist.angular.z = -1 * (imu.angular_velocity.z + yaw_rate_offset_stop.yaw_rate_offset); //Inverted because the coordinate system is reversed - eagleye_twist_with_covariance->twist.twist.angular.z = -1 * (imu.angular_velocity.z + yaw_rate_offset_stop.yaw_rate_offset); //Inverted because the coordinate system is reversed + if (std::abs(velocity.twist.linear.x) > trajectory_parameter.stop_judgment_threshold && + yaw_rate_offset_2nd.status.enabled_status == true) { + eagleye_twist->twist.angular.z = + -1 * + (imu.angular_velocity.z + + yaw_rate_offset_2nd.yaw_rate_offset); //Inverted because the coordinate system is reversed + eagleye_twist_with_covariance->twist.twist.angular.z = + -1 * + (imu.angular_velocity.z + + yaw_rate_offset_2nd.yaw_rate_offset); //Inverted because the coordinate system is reversed + } else { + eagleye_twist->twist.angular.z = + -1 * + (imu.angular_velocity.z + + yaw_rate_offset_stop.yaw_rate_offset); //Inverted because the coordinate system is reversed + eagleye_twist_with_covariance->twist.twist.angular.z = + -1 * + (imu.angular_velocity.z + + yaw_rate_offset_stop.yaw_rate_offset); //Inverted because the coordinate system is reversed } eagleye_twist->twist.linear.x = velocity.twist.linear.x; eagleye_twist_with_covariance->twist.twist.linear.x = velocity.twist.linear.x; - calculate_covariance(velocity, velocity_status, yaw_rate_offset_stop, trajectory_parameter, eagleye_twist_with_covariance); + calculate_covariance(velocity, velocity_status, yaw_rate_offset_stop, trajectory_parameter, + eagleye_twist_with_covariance); - if (trajectory_status->estimate_status_count == 0 && velocity_status.status.enabled_status == true && heading_interpolate_3rd.status.enabled_status == true) - { + if (trajectory_status->estimate_status_count == 0 && + velocity_status.status.enabled_status == true && + heading_interpolate_3rd.status.enabled_status == true) { trajectory_status->estimate_status_count = 1; trajectory_status->heading_last = heading_interpolate_3rd.heading_angle; - } - else if (trajectory_status->estimate_status_count == 1) - { + } else if (trajectory_status->estimate_status_count == 1) { trajectory_status->estimate_status_count = 2; } - if (trajectory_status->estimate_status_count == 2) - { - enu_vel->vector.x = sin(heading_interpolate_3rd.heading_angle) * velocity.twist.linear.x; //vel_e - enu_vel->vector.y = cos(heading_interpolate_3rd.heading_angle) * velocity.twist.linear.x; //vel_n - enu_vel->vector.z = 0; //vel_u + if (trajectory_status->estimate_status_count == 2) { + enu_vel->vector.x = + sin(heading_interpolate_3rd.heading_angle) * velocity.twist.linear.x; //vel_e + enu_vel->vector.y = + cos(heading_interpolate_3rd.heading_angle) * velocity.twist.linear.x; //vel_n + enu_vel->vector.z = 0; //vel_u } - if (trajectory_status->estimate_status_count == 2 && std::abs(velocity.twist.linear.x) > 0 && trajectory_status->time_last != 0) - { - if(std::abs(imu.angular_velocity.z + yaw_rate_offset_2nd.yaw_rate_offset) < trajectory_parameter.curve_judgment_threshold) - { - enu_relative_pos->enu_pos.x = enu_relative_pos->enu_pos.x + enu_vel->vector.x * (imu_time - trajectory_status->time_last); - enu_relative_pos->enu_pos.y = enu_relative_pos->enu_pos.y + enu_vel->vector.y * (imu_time - trajectory_status->time_last); + if (trajectory_status->estimate_status_count == 2 && std::abs(velocity.twist.linear.x) > 0 && + trajectory_status->time_last != 0) { + if (std::abs(imu.angular_velocity.z + yaw_rate_offset_2nd.yaw_rate_offset) < + trajectory_parameter.curve_judgment_threshold) { + enu_relative_pos->enu_pos.x = + enu_relative_pos->enu_pos.x + enu_vel->vector.x * (imu_time - trajectory_status->time_last); + enu_relative_pos->enu_pos.y = + enu_relative_pos->enu_pos.y + enu_vel->vector.y * (imu_time - trajectory_status->time_last); enu_relative_pos->enu_pos.z = 0; - } - else if((imu.angular_velocity.z + yaw_rate_offset_2nd.yaw_rate_offset) != 0) - { - enu_relative_pos->enu_pos.x = enu_relative_pos->enu_pos.x + velocity.twist.linear.x/(imu.angular_velocity.z + yaw_rate_offset_2nd.yaw_rate_offset) * ( -cos(trajectory_status->heading_last+(imu.angular_velocity.z + yaw_rate_offset_2nd.yaw_rate_offset)*(imu_time - trajectory_status->time_last)) + cos(trajectory_status->heading_last)); - enu_relative_pos->enu_pos.y = enu_relative_pos->enu_pos.y + velocity.twist.linear.x/(imu.angular_velocity.z + yaw_rate_offset_2nd.yaw_rate_offset) * ( sin(trajectory_status->heading_last+(imu.angular_velocity.z + yaw_rate_offset_2nd.yaw_rate_offset)*(imu_time - trajectory_status->time_last)) - sin(trajectory_status->heading_last)); + } else if ((imu.angular_velocity.z + yaw_rate_offset_2nd.yaw_rate_offset) != 0) { + enu_relative_pos->enu_pos.x = + enu_relative_pos->enu_pos.x + + velocity.twist.linear.x / (imu.angular_velocity.z + yaw_rate_offset_2nd.yaw_rate_offset) * + (-cos(trajectory_status->heading_last + + (imu.angular_velocity.z + yaw_rate_offset_2nd.yaw_rate_offset) * + (imu_time - trajectory_status->time_last)) + + cos(trajectory_status->heading_last)); + enu_relative_pos->enu_pos.y = + enu_relative_pos->enu_pos.y + + velocity.twist.linear.x / (imu.angular_velocity.z + yaw_rate_offset_2nd.yaw_rate_offset) * + (sin(trajectory_status->heading_last + + (imu.angular_velocity.z + yaw_rate_offset_2nd.yaw_rate_offset) * + (imu_time - trajectory_status->time_last)) - + sin(trajectory_status->heading_last)); enu_relative_pos->enu_pos.z = 0; - } - else{ - enu_relative_pos->enu_pos.x = enu_relative_pos->enu_pos.x + enu_vel->vector.x * (imu_time - trajectory_status->time_last); - enu_relative_pos->enu_pos.y = enu_relative_pos->enu_pos.y + enu_vel->vector.y * (imu_time - trajectory_status->time_last); + } else { + enu_relative_pos->enu_pos.x = + enu_relative_pos->enu_pos.x + enu_vel->vector.x * (imu_time - trajectory_status->time_last); + enu_relative_pos->enu_pos.y = + enu_relative_pos->enu_pos.y + enu_vel->vector.y * (imu_time - trajectory_status->time_last); enu_relative_pos->enu_pos.z = 0; } @@ -132,62 +161,90 @@ void trajectory_estimate(const sensor_msgs::msg::Imu imu, const geometry_msgs:: trajectory_status->time_last = imu_time; } -void trajectory3d_estimate(const sensor_msgs::msg::Imu imu, const geometry_msgs::msg::TwistStamped velocity, - const eagleye_msgs::msg::StatusStamped velocity_status, const eagleye_msgs::msg::Heading heading_interpolate_3rd, - const eagleye_msgs::msg::YawrateOffset yaw_rate_offset_stop, const eagleye_msgs::msg::YawrateOffset yaw_rate_offset_2nd, - const eagleye_msgs::msg::Pitching pitching, const TrajectoryParameter trajectory_parameter, TrajectoryStatus* trajectory_status, - geometry_msgs::msg::Vector3Stamped* enu_vel, eagleye_msgs::msg::Position* enu_relative_pos, geometry_msgs::msg::TwistStamped* eagleye_twist, - geometry_msgs::msg::TwistWithCovarianceStamped* eagleye_twist_with_covariance) -{ +void trajectory3d_estimate( + const sensor_msgs::msg::Imu imu, const geometry_msgs::msg::TwistStamped velocity, + const eagleye_msgs::msg::StatusStamped velocity_status, + const eagleye_msgs::msg::Heading heading_interpolate_3rd, + const eagleye_msgs::msg::YawrateOffset yaw_rate_offset_stop, + const eagleye_msgs::msg::YawrateOffset yaw_rate_offset_2nd, + const eagleye_msgs::msg::Pitching pitching, const TrajectoryParameter trajectory_parameter, + TrajectoryStatus* trajectory_status, geometry_msgs::msg::Vector3Stamped* enu_vel, + eagleye_msgs::msg::Position* enu_relative_pos, geometry_msgs::msg::TwistStamped* eagleye_twist, + geometry_msgs::msg::TwistWithCovarianceStamped* eagleye_twist_with_covariance) { rclcpp::Time ros_clock(imu.header.stamp); auto imu_time = ros_clock.seconds(); - if (std::abs(velocity.twist.linear.x) > trajectory_parameter.stop_judgment_threshold && yaw_rate_offset_2nd.status.enabled_status == true) - { - eagleye_twist->twist.angular.z = -1 * (imu.angular_velocity.z + yaw_rate_offset_2nd.yaw_rate_offset); //Inverted because the coordinate system is reversed - eagleye_twist_with_covariance->twist.twist.angular.z = -1 * (imu.angular_velocity.z + yaw_rate_offset_2nd.yaw_rate_offset); //Inverted because the coordinate system is reversed - } - else - { - eagleye_twist->twist.angular.z = -1 * (imu.angular_velocity.z + yaw_rate_offset_stop.yaw_rate_offset); //Inverted because the coordinate system is reversed - eagleye_twist_with_covariance->twist.twist.angular.z = -1 * (imu.angular_velocity.z + yaw_rate_offset_stop.yaw_rate_offset); //Inverted because the coordinate system is reversed + if (std::abs(velocity.twist.linear.x) > trajectory_parameter.stop_judgment_threshold && + yaw_rate_offset_2nd.status.enabled_status == true) { + eagleye_twist->twist.angular.z = + -1 * + (imu.angular_velocity.z + + yaw_rate_offset_2nd.yaw_rate_offset); //Inverted because the coordinate system is reversed + eagleye_twist_with_covariance->twist.twist.angular.z = + -1 * + (imu.angular_velocity.z + + yaw_rate_offset_2nd.yaw_rate_offset); //Inverted because the coordinate system is reversed + } else { + eagleye_twist->twist.angular.z = + -1 * + (imu.angular_velocity.z + + yaw_rate_offset_stop.yaw_rate_offset); //Inverted because the coordinate system is reversed + eagleye_twist_with_covariance->twist.twist.angular.z = + -1 * + (imu.angular_velocity.z + + yaw_rate_offset_stop.yaw_rate_offset); //Inverted because the coordinate system is reversed } eagleye_twist->twist.linear.x = velocity.twist.linear.x; eagleye_twist_with_covariance->twist.twist.linear.x = velocity.twist.linear.x; - calculate_covariance(velocity, velocity_status, yaw_rate_offset_stop, trajectory_parameter, eagleye_twist_with_covariance); + calculate_covariance(velocity, velocity_status, yaw_rate_offset_stop, trajectory_parameter, + eagleye_twist_with_covariance); - if (trajectory_status->estimate_status_count == 0 && velocity_status.status.enabled_status == true && heading_interpolate_3rd.status.enabled_status == true) - { + if (trajectory_status->estimate_status_count == 0 && + velocity_status.status.enabled_status == true && + heading_interpolate_3rd.status.enabled_status == true) { trajectory_status->estimate_status_count = 1; trajectory_status->heading_last = heading_interpolate_3rd.heading_angle; - } - else if (trajectory_status->estimate_status_count == 1) - { + } else if (trajectory_status->estimate_status_count == 1) { trajectory_status->estimate_status_count = 2; } - if (trajectory_status->estimate_status_count == 2) - { - enu_vel->vector.x = sin(heading_interpolate_3rd.heading_angle) * cos(pitching.pitching_angle) * velocity.twist.linear.x; //vel_e - enu_vel->vector.y = cos(heading_interpolate_3rd.heading_angle) * cos(pitching.pitching_angle) * velocity.twist.linear.x; //vel_n - enu_vel->vector.z = sin(pitching.pitching_angle) * velocity.twist.linear.x; //vel_u - } - - if (trajectory_status->estimate_status_count == 2 && std::abs(velocity.twist.linear.x) > 0 && trajectory_status->time_last != 0) - { - if(std::abs(imu.angular_velocity.z + yaw_rate_offset_2nd.yaw_rate_offset) < trajectory_parameter.curve_judgment_threshold) - { - enu_relative_pos->enu_pos.x = enu_relative_pos->enu_pos.x + enu_vel->vector.x * (imu_time - trajectory_status->time_last); - enu_relative_pos->enu_pos.y = enu_relative_pos->enu_pos.y + enu_vel->vector.y * (imu_time - trajectory_status->time_last); - enu_relative_pos->enu_pos.z = enu_relative_pos->enu_pos.z + enu_vel->vector.z * (imu_time - trajectory_status->time_last); - } - else - { - enu_relative_pos->enu_pos.x = enu_relative_pos->enu_pos.x + velocity.twist.linear.x/(imu.angular_velocity.z + yaw_rate_offset_2nd.yaw_rate_offset) * ( -cos(trajectory_status->heading_last+(imu.angular_velocity.z + yaw_rate_offset_2nd.yaw_rate_offset)*(imu_time - trajectory_status->time_last)) + cos(trajectory_status->heading_last)); - enu_relative_pos->enu_pos.y = enu_relative_pos->enu_pos.y + velocity.twist.linear.x/(imu.angular_velocity.z + yaw_rate_offset_2nd.yaw_rate_offset) * ( sin(trajectory_status->heading_last+(imu.angular_velocity.z + yaw_rate_offset_2nd.yaw_rate_offset)*(imu_time - trajectory_status->time_last)) - sin(trajectory_status->heading_last)); - enu_relative_pos->enu_pos.z = enu_relative_pos->enu_pos.z + enu_vel->vector.z * (imu_time - trajectory_status->time_last); + if (trajectory_status->estimate_status_count == 2) { + enu_vel->vector.x = sin(heading_interpolate_3rd.heading_angle) * cos(pitching.pitching_angle) * + velocity.twist.linear.x; //vel_e + enu_vel->vector.y = cos(heading_interpolate_3rd.heading_angle) * cos(pitching.pitching_angle) * + velocity.twist.linear.x; //vel_n + enu_vel->vector.z = sin(pitching.pitching_angle) * velocity.twist.linear.x; //vel_u + } + + if (trajectory_status->estimate_status_count == 2 && std::abs(velocity.twist.linear.x) > 0 && + trajectory_status->time_last != 0) { + if (std::abs(imu.angular_velocity.z + yaw_rate_offset_2nd.yaw_rate_offset) < + trajectory_parameter.curve_judgment_threshold) { + enu_relative_pos->enu_pos.x = + enu_relative_pos->enu_pos.x + enu_vel->vector.x * (imu_time - trajectory_status->time_last); + enu_relative_pos->enu_pos.y = + enu_relative_pos->enu_pos.y + enu_vel->vector.y * (imu_time - trajectory_status->time_last); + enu_relative_pos->enu_pos.z = + enu_relative_pos->enu_pos.z + enu_vel->vector.z * (imu_time - trajectory_status->time_last); + } else { + enu_relative_pos->enu_pos.x = + enu_relative_pos->enu_pos.x + + velocity.twist.linear.x / (imu.angular_velocity.z + yaw_rate_offset_2nd.yaw_rate_offset) * + (-cos(trajectory_status->heading_last + + (imu.angular_velocity.z + yaw_rate_offset_2nd.yaw_rate_offset) * + (imu_time - trajectory_status->time_last)) + + cos(trajectory_status->heading_last)); + enu_relative_pos->enu_pos.y = + enu_relative_pos->enu_pos.y + + velocity.twist.linear.x / (imu.angular_velocity.z + yaw_rate_offset_2nd.yaw_rate_offset) * + (sin(trajectory_status->heading_last + + (imu.angular_velocity.z + yaw_rate_offset_2nd.yaw_rate_offset) * + (imu_time - trajectory_status->time_last)) - + sin(trajectory_status->heading_last)); + enu_relative_pos->enu_pos.z = + enu_relative_pos->enu_pos.z + enu_vel->vector.z * (imu_time - trajectory_status->time_last); } enu_relative_pos->status.enabled_status = enu_relative_pos->status.estimate_status = true; diff --git a/eagleye_core/navigation/src/velocity_estimator.cpp b/eagleye_core/navigation/src/velocity_estimator.cpp index 23feb8e5..2dd163da 100644 --- a/eagleye_core/navigation/src/velocity_estimator.cpp +++ b/eagleye_core/navigation/src/velocity_estimator.cpp @@ -35,57 +35,54 @@ #define g 9.80665 //---PitchrateOffsetStopEstimator---------------------------------------------------------------------------------------------------------- -VelocityEstimator::PitchrateOffsetStopEstimator::PitchrateOffsetStopEstimator() -{ +VelocityEstimator::PitchrateOffsetStopEstimator::PitchrateOffsetStopEstimator() { stop_count = 0; pitch_rate_offset = 0; pitch_rate_offset_status.enabled_status = false; } -void VelocityEstimator::PitchrateOffsetStopEstimator::setParam(std::string yaml_file) -{ - try - { +void VelocityEstimator::PitchrateOffsetStopEstimator::setParam(std::string yaml_file) { + try { YAML::Node conf = YAML::LoadFile(yaml_file); param.imu_rate = conf["/**"]["ros__parameters"]["common"]["imu_rate"].as(); - param.estimated_interval = conf["/**"]["ros__parameters"]["velocity_estimator"]["pitch_rate_offset"]["estimated_interval"].as(); + param.estimated_interval = conf["/**"]["ros__parameters"]["velocity_estimator"] + ["pitch_rate_offset"]["estimated_interval"] + .as(); param.buffer_count_max = param.imu_rate * param.estimated_interval; // std::cout<< "imu_rate "< param.buffer_count_max) - { + if (stop_count > param.buffer_count_max) { double accumulation_pitch_rate = 0.0; - for (int i = 0; i < param.buffer_count_max/2; i++) - { + for (int i = 0; i < param.buffer_count_max / 2; i++) { accumulation_pitch_rate += pitch_rate_buffer[i]; } - pitch_rate_offset = -1 * accumulation_pitch_rate / (param.buffer_count_max/2); + pitch_rate_offset = -1 * accumulation_pitch_rate / (param.buffer_count_max / 2); pitch_rate_offset_status.enabled_status = true; pitch_rate_offset_status.estimate_status = true; } @@ -94,26 +91,33 @@ bool VelocityEstimator::PitchrateOffsetStopEstimator::PitchrateOffsetStopEstimat } //---PitchingEstimator--------------------------------------------------------------------------------------------------------------------- -VelocityEstimator::PitchingEstimator::PitchingEstimator() -{ +VelocityEstimator::PitchingEstimator::PitchingEstimator() { pitching = 0; pitching_status.enabled_status = false; } -void VelocityEstimator::PitchingEstimator::setParam(std::string yaml_file) -{ - try - { +void VelocityEstimator::PitchingEstimator::setParam(std::string yaml_file) { + try { YAML::Node conf = YAML::LoadFile(yaml_file); param.imu_rate = conf["/**"]["ros__parameters"]["common"]["imu_rate"].as(); param.gnss_rate = conf["/**"]["ros__parameters"]["common"]["gnss_rate"].as(); - param.estimated_interval = conf["/**"]["ros__parameters"]["velocity_estimator"]["pitching"]["estimated_interval"].as(); + param.estimated_interval = + conf["/**"]["ros__parameters"]["velocity_estimator"]["pitching"]["estimated_interval"] + .as(); param.buffer_max = param.imu_rate * param.estimated_interval; - param.outlier_threshold = conf["/**"]["ros__parameters"]["velocity_estimator"]["pitching"]["outlier_threshold"].as(); - param.slow_judgment_threshold = conf["/**"]["ros__parameters"]["common"]["slow_judgment_threshold"].as(); - param.gnss_receiving_threshold = conf["/**"]["ros__parameters"]["velocity_estimator"]["pitching"]["gnss_receiving_threshold"].as(); - param.estimated_gnss_coefficient = param.gnss_rate/param.imu_rate * param.gnss_receiving_threshold; - param.outlier_ratio_threshold = conf["/**"]["ros__parameters"]["velocity_estimator"]["pitching"]["outlier_ratio_threshold"].as(); + param.outlier_threshold = + conf["/**"]["ros__parameters"]["velocity_estimator"]["pitching"]["outlier_threshold"] + .as(); + param.slow_judgment_threshold = + conf["/**"]["ros__parameters"]["common"]["slow_judgment_threshold"].as(); + param.gnss_receiving_threshold = + conf["/**"]["ros__parameters"]["velocity_estimator"]["pitching"]["gnss_receiving_threshold"] + .as(); + param.estimated_gnss_coefficient = + param.gnss_rate / param.imu_rate * param.gnss_receiving_threshold; + param.outlier_ratio_threshold = + conf["/**"]["ros__parameters"]["velocity_estimator"]["pitching"]["outlier_ratio_threshold"] + .as(); param.estimated_coefficient = param.estimated_gnss_coefficient * param.outlier_ratio_threshold; // std::cout<< "imu_rate "< param.slow_judgment_threshold || - rtkfix_velocity > param.slow_judgment_threshold) - { + rtkfix_velocity > param.slow_judgment_threshold) { use_gnss_status = true; } @@ -155,7 +154,8 @@ bool VelocityEstimator::PitchingEstimator::PitchingEstimate use_gnss_status_buffer.push_back(use_gnss_status); std::size_t time_buffer_length = std::distance(time_buffer.begin(), time_buffer.end()); - if (time_buffer_length <= param.buffer_max) return pitching_status.enabled_status; + if (time_buffer_length <= param.buffer_max) + return pitching_status.enabled_status; time_buffer.erase(time_buffer.begin()); corrected_pitch_rate_buffer.erase(corrected_pitch_rate_buffer.begin()); @@ -171,62 +171,69 @@ bool VelocityEstimator::PitchingEstimator::PitchingEstimate std::size_t gnss_index_length; pitching_status.estimate_status = false; - for (int i = 0; i < time_buffer_length; i++) - { - if (navsat_update_status_buffer[i] && use_gnss_status_buffer[i]) gnss_index.push_back(i); //TODO Velocity judgment - if (i == 0) continue; - accumulated_pitch_rate += corrected_pitch_rate_buffer[i] * (time_buffer[i]-time_buffer[i-1]); + for (int i = 0; i < time_buffer_length; i++) { + if (navsat_update_status_buffer[i] && use_gnss_status_buffer[i]) + gnss_index.push_back(i); //TODO Velocity judgment + if (i == 0) + continue; + accumulated_pitch_rate += + corrected_pitch_rate_buffer[i] * (time_buffer[i] - time_buffer[i - 1]); accumulated_pitch_rate_buffer[i] = accumulated_pitch_rate; } gnss_index_length = std::distance(gnss_index.begin(), gnss_index.end()); - if (gnss_index_length < time_buffer_length * param.estimated_gnss_coefficient) return pitching_status.enabled_status; + if (gnss_index_length < time_buffer_length * param.estimated_gnss_coefficient) + return pitching_status.enabled_status; // pitching estimation by the least-squares method std::vector init_accumulated_pitch_rate_buffer; std::vector residual_error; - while (1) - { + while (1) { gnss_index_length = std::distance(gnss_index.begin(), gnss_index.end()); - for (int i = 0; i < time_buffer_length; i++) - { - init_accumulated_pitch_rate_buffer.push_back(accumulated_pitch_rate_buffer[i] + (rtkfix_pitching_buffer[gnss_index[0]] - accumulated_pitch_rate_buffer[gnss_index[0]])); + for (int i = 0; i < time_buffer_length; i++) { + init_accumulated_pitch_rate_buffer.push_back( + accumulated_pitch_rate_buffer[i] + + (rtkfix_pitching_buffer[gnss_index[0]] - accumulated_pitch_rate_buffer[gnss_index[0]])); } - for (int i = 0; i < gnss_index_length; i++) - { - residual_error.push_back(init_accumulated_pitch_rate_buffer[gnss_index[i]] - rtkfix_pitching_buffer[gnss_index[i]]); + for (int i = 0; i < gnss_index_length; i++) { + residual_error.push_back(init_accumulated_pitch_rate_buffer[gnss_index[i]] - + rtkfix_pitching_buffer[gnss_index[i]]); } - double residual_error_mean = std::accumulate(residual_error.begin(), residual_error.end(), 0.0) / gnss_index_length; + double residual_error_mean = + std::accumulate(residual_error.begin(), residual_error.end(), 0.0) / gnss_index_length; double init_pitching = rtkfix_pitching_buffer[gnss_index[0]] - residual_error_mean; init_accumulated_pitch_rate_buffer.clear(); - for (int i = 0; i < time_buffer_length; i++) - { - init_accumulated_pitch_rate_buffer.push_back(accumulated_pitch_rate_buffer[i] + (init_pitching - accumulated_pitch_rate_buffer[gnss_index[0]])); + for (int i = 0; i < time_buffer_length; i++) { + init_accumulated_pitch_rate_buffer.push_back( + accumulated_pitch_rate_buffer[i] + + (init_pitching - accumulated_pitch_rate_buffer[gnss_index[0]])); } residual_error.clear(); - for (int i = 0; i < gnss_index_length; i++) - { - residual_error.push_back(init_accumulated_pitch_rate_buffer[gnss_index[i]] - rtkfix_pitching_buffer[gnss_index[i]]); + for (int i = 0; i < gnss_index_length; i++) { + residual_error.push_back(init_accumulated_pitch_rate_buffer[gnss_index[i]] - + rtkfix_pitching_buffer[gnss_index[i]]); } - std::vector::iterator residual_error_max = std::max_element(residual_error.begin(), residual_error.end()); + std::vector::iterator residual_error_max = + std::max_element(residual_error.begin(), residual_error.end()); int residual_error_max_index = std::distance(residual_error.begin(), residual_error_max); - if (residual_error[residual_error_max_index] < param.outlier_threshold) break; + if (residual_error[residual_error_max_index] < param.outlier_threshold) + break; gnss_index.erase(gnss_index.begin() + residual_error_max_index); gnss_index_length = std::distance(gnss_index.begin(), gnss_index.end()); - if (gnss_index_length < param.buffer_max * param.estimated_coefficient) break; - + if (gnss_index_length < param.buffer_max * param.estimated_coefficient) + break; } - pitching = init_accumulated_pitch_rate_buffer[time_buffer_length-1]; + pitching = init_accumulated_pitch_rate_buffer[time_buffer_length - 1]; pitching_status.enabled_status = true; pitching_status.estimate_status = true; @@ -234,25 +241,30 @@ bool VelocityEstimator::PitchingEstimator::PitchingEstimate } //---AccelerationOffsetEstimator----------------------------------------------------------------------------------------------------------- -VelocityEstimator::AccelerationOffsetEstimator::AccelerationOffsetEstimator() -{ +VelocityEstimator::AccelerationOffsetEstimator::AccelerationOffsetEstimator() { acceleration_offset = 0; acceleration_offset_status.enabled_status = false; } -void VelocityEstimator::AccelerationOffsetEstimator::setParam(std::string yaml_file) -{ - try - { +void VelocityEstimator::AccelerationOffsetEstimator::setParam(std::string yaml_file) { + try { YAML::Node conf = YAML::LoadFile(yaml_file); param.imu_rate = conf["/**"]["ros__parameters"]["common"]["imu_rate"].as(); param.gnss_rate = conf["/**"]["ros__parameters"]["common"]["gnss_rate"].as(); - param.estimated_minimum_interval = conf["/**"]["ros__parameters"]["velocity_estimator"]["acceleration_offset"]["estimated_minimum_interval"].as(); - param.estimated_maximum_interval = conf["/**"]["ros__parameters"]["velocity_estimator"]["acceleration_offset"]["estimated_maximum_interval"].as(); + param.estimated_minimum_interval = conf["/**"]["ros__parameters"]["velocity_estimator"] + ["acceleration_offset"]["estimated_minimum_interval"] + .as(); + param.estimated_maximum_interval = conf["/**"]["ros__parameters"]["velocity_estimator"] + ["acceleration_offset"]["estimated_maximum_interval"] + .as(); param.buffer_min = param.imu_rate * param.estimated_minimum_interval; param.buffer_max = param.imu_rate * param.estimated_maximum_interval; - param.filter_process_noise = conf["/**"]["ros__parameters"]["velocity_estimator"]["acceleration_offset"]["filter_process_noise"].as(); - param.filter_observation_noise = conf["/**"]["ros__parameters"]["velocity_estimator"]["acceleration_offset"]["filter_observation_noise"].as(); + param.filter_process_noise = conf["/**"]["ros__parameters"]["velocity_estimator"] + ["acceleration_offset"]["filter_process_noise"] + .as(); + param.filter_observation_noise = conf["/**"]["ros__parameters"]["velocity_estimator"] + ["acceleration_offset"]["filter_observation_noise"] + .as(); // std::cout<< "imu_rate "< param.buffer_max) - { + } else if (time_buffer_length > param.buffer_max) { time_buffer.erase(time_buffer.begin()); pitching_buffer.erase(pitching_buffer.begin()); filtered_acceleration_buffer.erase(filtered_acceleration_buffer.begin()); @@ -315,45 +323,45 @@ bool VelocityEstimator::AccelerationOffsetEstimator::AccelerationOffsetEstimate std::vector gnss_index; std::size_t gnss_index_length; - for (int i = 0; i < time_buffer_length; i++) - { - if (navsat_update_status_buffer[i]) gnss_index.push_back(i); //TODO Velocity judgment - if (i == 0) - { + for (int i = 0; i < time_buffer_length; i++) { + if (navsat_update_status_buffer[i]) + gnss_index.push_back(i); //TODO Velocity judgment + if (i == 0) { accumulated_acceleration_buffer.push_back(0); continue; - } - else - { - accumulated_acceleration += (filtered_acceleration_buffer[i] - g*std::sin(pitching_buffer[i]))* (time_buffer[i]-time_buffer[i-1]); + } else { + accumulated_acceleration += + (filtered_acceleration_buffer[i] - g * std::sin(pitching_buffer[i])) * + (time_buffer[i] - time_buffer[i - 1]); accumulated_acceleration_buffer.push_back(accumulated_acceleration); } } gnss_index_length = std::distance(gnss_index.begin(), gnss_index.end()); - for (int i = 0; i < time_buffer_length; i++) - { - init_accumulated_acceleration_buffer.push_back(accumulated_acceleration_buffer[i] + - (rtkfix_velocity_buffer[gnss_index[0]] - accumulated_acceleration_buffer[gnss_index[0]])); + for (int i = 0; i < time_buffer_length; i++) { + init_accumulated_acceleration_buffer.push_back( + accumulated_acceleration_buffer[i] + + (rtkfix_velocity_buffer[gnss_index[0]] - accumulated_acceleration_buffer[gnss_index[0]])); } - double dt; // x - double residual_error; // y + double dt; // x + double residual_error; // y double sum_xy = 0.0, sum_x = 0.0, sum_y = 0.0, sum_xx = 0.0; - for (int i = 0; i < gnss_index_length; i++) - { - residual_error = init_accumulated_acceleration_buffer[gnss_index[i]] - rtkfix_velocity_buffer[gnss_index[i]]; - dt = time_buffer[gnss_index[i]]-time_buffer[gnss_index[0]]; + for (int i = 0; i < gnss_index_length; i++) { + residual_error = + init_accumulated_acceleration_buffer[gnss_index[i]] - rtkfix_velocity_buffer[gnss_index[i]]; + dt = time_buffer[gnss_index[i]] - time_buffer[gnss_index[0]]; sum_xy += dt * residual_error; - sum_x += dt; - sum_y += residual_error; - sum_xx += dt *dt; + sum_x += dt; + sum_y += residual_error; + sum_xx += dt * dt; } - acceleration_offset = -1 * (gnss_index_length*sum_xy - sum_x*sum_y)/(gnss_index_length*sum_xx - sum_x*sum_x); + acceleration_offset = -1 * (gnss_index_length * sum_xy - sum_x * sum_y) / + (gnss_index_length * sum_xx - sum_x * sum_x); acceleration_offset_status.enabled_status = true; acceleration_offset_status.estimate_status = true; @@ -361,8 +369,7 @@ bool VelocityEstimator::AccelerationOffsetEstimator::AccelerationOffsetEstimate } //---VelocityEstimator--------------------------------------------------------------------------------------------------------------------- -VelocityEstimator::VelocityEstimator() -{ +VelocityEstimator::VelocityEstimator() { acceleration = 0; pitch_rate = 0; doppler_velocity = 0; @@ -375,37 +382,50 @@ VelocityEstimator::VelocityEstimator() filtered_acceleration = 0; ecef_base_position_status = false; velocity_status.enabled_status = false; - } -void VelocityEstimator::setParam(std::string yaml_file) -{ - try - { +void VelocityEstimator::setParam(std::string yaml_file) { + try { YAML::Node conf = YAML::LoadFile(yaml_file); param.ecef_base_pos_x = conf["/**"]["ros__parameters"]["ecef_base_pos"]["x"].as(); param.ecef_base_pos_y = conf["/**"]["ros__parameters"]["ecef_base_pos"]["y"].as(); param.ecef_base_pos_z = conf["/**"]["ros__parameters"]["ecef_base_pos"]["z"].as(); - param.use_ecef_base_position = conf["/**"]["ros__parameters"]["ecef_base_pos"]["use_ecef_base_position"].as(); + param.use_ecef_base_position = + conf["/**"]["ros__parameters"]["ecef_base_pos"]["use_ecef_base_position"].as(); param.imu_rate = conf["/**"]["ros__parameters"]["common"]["imu_rate"].as(); param.gnss_rate = conf["/**"]["ros__parameters"]["common"]["gnss_rate"].as(); - param.gga_downsample_time = conf["/**"]["ros__parameters"]["velocity_estimator"]["gga_downsample_time"].as(); - param.stop_judgment_velocity_threshold = conf["/**"]["ros__parameters"]["velocity_estimator"]["stop_judgment_velocity_threshold"].as(); - param.stop_judgment_interval = conf["/**"]["ros__parameters"]["velocity_estimator"]["stop_judgment_interval"].as(); - param.stop_judgment_buffer_maxnum = param.stop_judgment_buffer_maxnum = param.imu_rate * param.stop_judgment_interval; - param.variance_threshold = conf["/**"]["ros__parameters"]["velocity_estimator"]["variance_threshold"].as(); + param.gga_downsample_time = + conf["/**"]["ros__parameters"]["velocity_estimator"]["gga_downsample_time"].as(); + param.stop_judgment_velocity_threshold = + conf["/**"]["ros__parameters"]["velocity_estimator"]["stop_judgment_velocity_threshold"] + .as(); + param.stop_judgment_interval = + conf["/**"]["ros__parameters"]["velocity_estimator"]["stop_judgment_interval"].as(); + param.stop_judgment_buffer_maxnum = param.stop_judgment_buffer_maxnum = + param.imu_rate * param.stop_judgment_interval; + param.variance_threshold = + conf["/**"]["ros__parameters"]["velocity_estimator"]["variance_threshold"].as(); // doppler fusion parameter - param.estimated_interval = conf["/**"]["ros__parameters"]["velocity_estimator"]["doppler_fusion"]["estimated_interval"].as(); + param.estimated_interval = + conf["/**"]["ros__parameters"]["velocity_estimator"]["doppler_fusion"]["estimated_interval"] + .as(); param.buffer_max = param.imu_rate * param.estimated_interval; - param.gnss_receiving_threshold = conf["/**"]["ros__parameters"]["velocity_estimator"]["doppler_fusion"]["gnss_receiving_threshold"].as(); - param.estimated_gnss_coefficient = param.gnss_rate/param.imu_rate * param.gnss_receiving_threshold; - param.outlier_ratio_threshold = conf["/**"]["ros__parameters"]["velocity_estimator"]["doppler_fusion"]["outlier_ratio_threshold"].as(); + param.gnss_receiving_threshold = conf["/**"]["ros__parameters"]["velocity_estimator"] + ["doppler_fusion"]["gnss_receiving_threshold"] + .as(); + param.estimated_gnss_coefficient = + param.gnss_rate / param.imu_rate * param.gnss_receiving_threshold; + param.outlier_ratio_threshold = conf["/**"]["ros__parameters"]["velocity_estimator"] + ["doppler_fusion"]["outlier_ratio_threshold"] + .as(); param.estimated_coefficient = param.estimated_gnss_coefficient * param.outlier_ratio_threshold; - param.outlier_threshold = conf["/**"]["ros__parameters"]["velocity_estimator"]["doppler_fusion"]["outlier_threshold"].as(); + param.outlier_threshold = + conf["/**"]["ros__parameters"]["velocity_estimator"]["doppler_fusion"]["outlier_threshold"] + .as(); // std::cout<< "imu_rate "< param.stop_judgment_velocity_threshold || - rtkfix_velocity > param.stop_judgment_velocity_threshold) - {return false;} + rtkfix_velocity > param.stop_judgment_velocity_threshold) { + return false; + } double sum_x = 0, sum_y = 0, sum_z = 0; double var_x = 0, var_y = 0, var_z = 0; - for (int i = 0; i < buffer_length; i++) - { - sum_x = sum_x + std::pow(angular_velocity_x_buffer[i] - std::accumulate(std::begin(angular_velocity_x_buffer), - std::end(angular_velocity_x_buffer), 0.0)/buffer_length,2.0); - sum_y = sum_y + std::pow(angular_velocity_y_buffer[i] - std::accumulate(std::begin(angular_velocity_y_buffer), - std::end(angular_velocity_y_buffer), 0.0)/buffer_length,2.0); - sum_z = sum_z + std::pow(angular_velocity_z_buffer[i] - std::accumulate(std::begin(angular_velocity_z_buffer), - std::end(angular_velocity_z_buffer), 0.0)/buffer_length,2.0); + for (int i = 0; i < buffer_length; i++) { + sum_x = sum_x + std::pow(angular_velocity_x_buffer[i] - + std::accumulate(std::begin(angular_velocity_x_buffer), + std::end(angular_velocity_x_buffer), 0.0) / + buffer_length, + 2.0); + sum_y = sum_y + std::pow(angular_velocity_y_buffer[i] - + std::accumulate(std::begin(angular_velocity_y_buffer), + std::end(angular_velocity_y_buffer), 0.0) / + buffer_length, + 2.0); + sum_z = sum_z + std::pow(angular_velocity_z_buffer[i] - + std::accumulate(std::begin(angular_velocity_z_buffer), + std::end(angular_velocity_z_buffer), 0.0) / + buffer_length, + 2.0); } - var_x = sum_x/buffer_length; - var_y = sum_y/buffer_length; - var_z = sum_z/buffer_length; + var_x = sum_x / buffer_length; + var_y = sum_y / buffer_length; + var_z = sum_z / buffer_length; - if (var_x > param.variance_threshold || var_y > param.variance_threshold || var_z > param.variance_threshold) - {return false;} + if (var_x > param.variance_threshold || var_y > param.variance_threshold || + var_z > param.variance_threshold) { + return false; + } return true; } -bool VelocityEstimator::DopplerFusion() -{ +bool VelocityEstimator::DopplerFusion() { // data buffer generate time_buffer.push_back(imu_time_last); doppler_velocity_buffer.push_back(doppler_velocity); - corrected_acceleration_buffer.push_back(filtered_acceleration + acceleration_offset - g*std::sin(pitching)); + corrected_acceleration_buffer.push_back(filtered_acceleration + acceleration_offset - + g * std::sin(pitching)); rtklib_update_status_buffer.push_back(rtklib_update_status); std::size_t time_buffer_length = std::distance(time_buffer.begin(), time_buffer.end()); - if (time_buffer_length <= param.buffer_max) return velocity_status.enabled_status; + if (time_buffer_length <= param.buffer_max) + return velocity_status.enabled_status; time_buffer.erase(time_buffer.begin()); doppler_velocity_buffer.erase(doppler_velocity_buffer.begin()); @@ -618,8 +648,7 @@ bool VelocityEstimator::DopplerFusion() time_buffer_length = std::distance(time_buffer.begin(), time_buffer.end()); // stop process - if (stop_status && velocity_status.enabled_status) - { + if (stop_status && velocity_status.enabled_status) { velocity = 0; velocity_status.enabled_status = true; velocity_status.estimate_status = true; @@ -633,75 +662,82 @@ bool VelocityEstimator::DopplerFusion() std::vector gnss_index; std::size_t gnss_index_length; - for (int i = 0; i < time_buffer_length; i++) - { - if (rtklib_update_status_buffer[i] && doppler_velocity_buffer[i] < 33.3) gnss_index.push_back(i); //TODO Velocity judgment - if (i == 0) continue; - accumulated_acceleration += corrected_acceleration_buffer[i] * (time_buffer[i]-time_buffer[i-1]); + for (int i = 0; i < time_buffer_length; i++) { + if (rtklib_update_status_buffer[i] && doppler_velocity_buffer[i] < 33.3) + gnss_index.push_back(i); //TODO Velocity judgment + if (i == 0) + continue; + accumulated_acceleration += + corrected_acceleration_buffer[i] * (time_buffer[i] - time_buffer[i - 1]); accumulated_acceleration_buffer[i] = accumulated_acceleration; } gnss_index_length = std::distance(gnss_index.begin(), gnss_index.end()); - if (gnss_index_length < time_buffer_length * param.estimated_gnss_coefficient) return velocity_status.enabled_status; + if (gnss_index_length < time_buffer_length * param.estimated_gnss_coefficient) + return velocity_status.enabled_status; // velocity estimation by the least-squares method std::vector init_accumulated_acceleration; std::vector residual_error; - while (1) - { + while (1) { gnss_index_length = std::distance(gnss_index.begin(), gnss_index.end()); init_accumulated_acceleration.clear(); - for (int i = 0; i < time_buffer_length; i++) - { - init_accumulated_acceleration.push_back(accumulated_acceleration_buffer[i] + + for (int i = 0; i < time_buffer_length; i++) { + init_accumulated_acceleration.push_back( + accumulated_acceleration_buffer[i] + (doppler_velocity_buffer[gnss_index[0]] - accumulated_acceleration_buffer[gnss_index[0]])); } residual_error.clear(); - for (int i = 0; i < gnss_index_length; i++) - { - residual_error.push_back(init_accumulated_acceleration[gnss_index[i]] - doppler_velocity_buffer[gnss_index[i]]); + for (int i = 0; i < gnss_index_length; i++) { + residual_error.push_back(init_accumulated_acceleration[gnss_index[i]] - + doppler_velocity_buffer[gnss_index[i]]); } - double residual_error_mean = std::accumulate(residual_error.begin(), residual_error.end(), 0.0) / gnss_index_length; + double residual_error_mean = + std::accumulate(residual_error.begin(), residual_error.end(), 0.0) / gnss_index_length; double init_velocity = doppler_velocity_buffer[gnss_index[0]] - residual_error_mean; init_accumulated_acceleration.clear(); - for (int i = 0; i < time_buffer_length; i++) - { - init_accumulated_acceleration.push_back(accumulated_acceleration_buffer[i] + (init_velocity - accumulated_acceleration_buffer[gnss_index[0]])); + for (int i = 0; i < time_buffer_length; i++) { + init_accumulated_acceleration.push_back( + accumulated_acceleration_buffer[i] + + (init_velocity - accumulated_acceleration_buffer[gnss_index[0]])); } residual_error.clear(); - for (int i = 0; i < gnss_index_length; i++) - { - residual_error.push_back(init_accumulated_acceleration[gnss_index[i]] - doppler_velocity_buffer[gnss_index[i]]); + for (int i = 0; i < gnss_index_length; i++) { + residual_error.push_back(init_accumulated_acceleration[gnss_index[i]] - + doppler_velocity_buffer[gnss_index[i]]); } - std::vector::iterator residual_error_max = std::max_element(residual_error.begin(), residual_error.end()); + std::vector::iterator residual_error_max = + std::max_element(residual_error.begin(), residual_error.end()); int residual_error_max_index = std::distance(residual_error.begin(), residual_error_max); - if (residual_error[residual_error_max_index] < param.outlier_threshold) break; + if (residual_error[residual_error_max_index] < param.outlier_threshold) + break; gnss_index.erase(gnss_index.begin() + residual_error_max_index); gnss_index_length = std::distance(gnss_index.begin(), gnss_index.end()); - if (gnss_index_length < param.buffer_max * param.estimated_coefficient) break; - + if (gnss_index_length < param.buffer_max * param.estimated_coefficient) + break; } gnss_index_length = std::distance(gnss_index.begin(), gnss_index.end()); - velocity = init_accumulated_acceleration[time_buffer_length-1]; + velocity = init_accumulated_acceleration[time_buffer_length - 1]; velocity_status.enabled_status = true; velocity_status.estimate_status = true; return velocity_status.enabled_status; - } -void VelocityEstimator::VelocityEstimate(sensor_msgs::msg::Imu imu_msg, rtklib_msgs::msg::RtklibNav rtklib_nav_msg, nmea_msgs::msg::Gpgga gga_msg, geometry_msgs::msg::TwistStamped* velocity_msg) -{ +void VelocityEstimator::VelocityEstimate(sensor_msgs::msg::Imu imu_msg, + rtklib_msgs::msg::RtklibNav rtklib_nav_msg, + nmea_msgs::msg::Gpgga gga_msg, + geometry_msgs::msg::TwistStamped* velocity_msg) { // imu msgs setting updateImu(imu_msg); @@ -719,25 +755,24 @@ void VelocityEstimator::VelocityEstimate(sensor_msgs::msg::Imu imu_msg, rtklib_m pitch_rate_offset_stop_estimator.PitchrateOffsetStopEstimate(pitch_rate, stop_status); pitch_rate_offset = pitch_rate_offset_stop_estimator.pitch_rate_offset; - if(!pitching_estimator.PitchingEstimate - (imu_time_last, doppler_velocity, rtkfix_velocity, - pitch_rate, pitch_rate_offset, rtkfix_pitching, - navsat_update_status, stop_status) - ) return; + if (!pitching_estimator.PitchingEstimate(imu_time_last, doppler_velocity, rtkfix_velocity, + pitch_rate, pitch_rate_offset, rtkfix_pitching, + navsat_update_status, stop_status)) + return; pitching = pitching_estimator.pitching; // Acceleration Error Estimation - if(!acceleration_offset_estimator.AccelerationOffsetEstimate - (imu_time_last, rtkfix_velocity, pitching, - acceleration, navsat_update_status) - ) return ; + if (!acceleration_offset_estimator.AccelerationOffsetEstimate( + imu_time_last, rtkfix_velocity, pitching, acceleration, navsat_update_status)) + return; acceleration_offset = acceleration_offset_estimator.acceleration_offset; filtered_acceleration = acceleration_offset_estimator.filtered_acceleration; // Velocity estimation by fusion of acceleration accumulation and GNSS Doppler - if(!DopplerFusion()) return; + if (!DopplerFusion()) + return; velocity_msg->header = imu_msg.header; velocity_msg->header.frame_id = "base_link"; velocity_msg->twist.linear.x = velocity; -} \ No newline at end of file +} \ No newline at end of file diff --git a/eagleye_core/navigation/src/velocity_scale_factor.cpp b/eagleye_core/navigation/src/velocity_scale_factor.cpp old mode 100755 new mode 100644 index f3bcb2ff..4ddb38c2 --- a/eagleye_core/navigation/src/velocity_scale_factor.cpp +++ b/eagleye_core/navigation/src/velocity_scale_factor.cpp @@ -33,54 +33,56 @@ #define knot2mps 0.51477 -void velocity_scale_factor_estimate_(const geometry_msgs::msg::TwistStamped velocity, const VelocityScaleFactorParameter velocity_scale_factor_parameter, - VelocityScaleFactorStatus* velocity_scale_factor_status, geometry_msgs::msg::TwistStamped* correction_velocity, - eagleye_msgs::msg::VelocityScaleFactor* velocity_scale_factor) -{ - int i; - double initial_velocity_scale_factor = 1.0; - double raw_velocity_scale_factor = 0.0; - std::size_t index_length; - std::size_t gnss_status_buffer_length; - double estimated_number_cur; - - double estimated_buffer_number_min = velocity_scale_factor_parameter.estimated_minimum_interval * velocity_scale_factor_parameter.imu_rate; - double estimated_buffer_number_max = velocity_scale_factor_parameter.estimated_maximum_interval * velocity_scale_factor_parameter.imu_rate; - double enabled_data_ratio = velocity_scale_factor_parameter.gnss_rate / velocity_scale_factor_parameter.imu_rate * velocity_scale_factor_parameter.gnss_receiving_threshold; - - if(velocity_scale_factor_parameter.save_velocity_scale_factor) - { - if(velocity_scale_factor->status.enabled_status) - { +void velocity_scale_factor_estimate_( + const geometry_msgs::msg::TwistStamped velocity, + const VelocityScaleFactorParameter velocity_scale_factor_parameter, + VelocityScaleFactorStatus* velocity_scale_factor_status, + geometry_msgs::msg::TwistStamped* correction_velocity, + eagleye_msgs::msg::VelocityScaleFactor* velocity_scale_factor) { + int i; + double initial_velocity_scale_factor = 1.0; + double raw_velocity_scale_factor = 0.0; + std::size_t index_length; + std::size_t gnss_status_buffer_length; + double estimated_number_cur; + + double estimated_buffer_number_min = velocity_scale_factor_parameter.estimated_minimum_interval * + velocity_scale_factor_parameter.imu_rate; + double estimated_buffer_number_max = velocity_scale_factor_parameter.estimated_maximum_interval * + velocity_scale_factor_parameter.imu_rate; + double enabled_data_ratio = velocity_scale_factor_parameter.gnss_rate / + velocity_scale_factor_parameter.imu_rate * + velocity_scale_factor_parameter.gnss_receiving_threshold; + + if (velocity_scale_factor_parameter.save_velocity_scale_factor) { + if (velocity_scale_factor->status.enabled_status) { initial_velocity_scale_factor = velocity_scale_factor_status->velocity_scale_factor_last; } } - if(velocity_scale_factor->status.enabled_status == true) - { + if (velocity_scale_factor->status.enabled_status == true) { estimated_number_cur = estimated_buffer_number_max; - } - else - { + } else { estimated_number_cur = estimated_buffer_number_min; } - if (velocity_scale_factor_status->estimated_number < estimated_number_cur) - { + if (velocity_scale_factor_status->estimated_number < estimated_number_cur) { ++velocity_scale_factor_status->estimated_number; - } - else - { + } else { velocity_scale_factor_status->estimated_number = estimated_number_cur; } - gnss_status_buffer_length = std::distance(velocity_scale_factor_status->gnss_status_buffer.begin(), velocity_scale_factor_status->gnss_status_buffer.end()); + gnss_status_buffer_length = + std::distance(velocity_scale_factor_status->gnss_status_buffer.begin(), + velocity_scale_factor_status->gnss_status_buffer.end()); - if (gnss_status_buffer_length > estimated_number_cur) - { - velocity_scale_factor_status->gnss_status_buffer.erase(velocity_scale_factor_status->gnss_status_buffer.begin()); - velocity_scale_factor_status->doppler_velocity_buffer.erase(velocity_scale_factor_status->doppler_velocity_buffer.begin()); - velocity_scale_factor_status->velocity_buffer.erase(velocity_scale_factor_status->velocity_buffer.begin()); + if (gnss_status_buffer_length > estimated_number_cur) { + velocity_scale_factor_status->gnss_status_buffer.erase( + velocity_scale_factor_status->gnss_status_buffer.begin()); + velocity_scale_factor_status->doppler_velocity_buffer.erase( + velocity_scale_factor_status->doppler_velocity_buffer.begin()); + velocity_scale_factor_status->velocity_buffer.erase( + velocity_scale_factor_status->velocity_buffer.begin()); } std::vector gnss_index; @@ -89,50 +91,43 @@ void velocity_scale_factor_estimate_(const geometry_msgs::msg::TwistStamped velo std::vector velocity_scale_factor_buffer; if (velocity_scale_factor_status->estimated_number >= estimated_buffer_number_min && - velocity_scale_factor_status->gnss_status_buffer[velocity_scale_factor_status->estimated_number - 1] == true && - velocity_scale_factor_status->velocity_buffer[velocity_scale_factor_status->estimated_number - 1] > - velocity_scale_factor_parameter.moving_judgment_threshold) - { - for (i = 0; i < velocity_scale_factor_status->estimated_number; i++) - { - if (velocity_scale_factor_status->gnss_status_buffer[i] == true) - { + velocity_scale_factor_status + ->gnss_status_buffer[velocity_scale_factor_status->estimated_number - 1] == true && + velocity_scale_factor_status + ->velocity_buffer[velocity_scale_factor_status->estimated_number - 1] > + velocity_scale_factor_parameter.moving_judgment_threshold) { + for (i = 0; i < velocity_scale_factor_status->estimated_number; i++) { + if (velocity_scale_factor_status->gnss_status_buffer[i] == true) { gnss_index.push_back(i); } - if (velocity_scale_factor_status->velocity_buffer[i] > velocity_scale_factor_parameter.moving_judgment_threshold) - { + if (velocity_scale_factor_status->velocity_buffer[i] > + velocity_scale_factor_parameter.moving_judgment_threshold) { velocity_index.push_back(i); } } - set_intersection(gnss_index.begin(), gnss_index.end(), velocity_index.begin(), velocity_index.end(), - inserter(index, index.end())); + set_intersection(gnss_index.begin(), gnss_index.end(), velocity_index.begin(), + velocity_index.end(), inserter(index, index.end())); index_length = std::distance(index.begin(), index.end()); - if (index_length > velocity_scale_factor_status->estimated_number * enabled_data_ratio) - { - for (i = 0; i < index_length; i++) - { - velocity_scale_factor_buffer.push_back(velocity_scale_factor_status->doppler_velocity_buffer[index[i]] / + if (index_length > velocity_scale_factor_status->estimated_number * enabled_data_ratio) { + for (i = 0; i < index_length; i++) { + velocity_scale_factor_buffer.push_back( + velocity_scale_factor_status->doppler_velocity_buffer[index[i]] / velocity_scale_factor_status->velocity_buffer[index[i]]); } velocity_scale_factor->status.estimate_status = true; velocity_scale_factor_status->estimate_start_status = true; - } - else - { + } else { velocity_scale_factor->status.estimate_status = false; } - } - else - { + } else { velocity_scale_factor->status.estimate_status = false; } - if (velocity_scale_factor->status.estimate_status == true) - { + if (velocity_scale_factor->status.estimate_status == true) { // median size_t size = velocity_scale_factor_buffer.size(); double* t = new double[size]; @@ -141,72 +136,64 @@ void velocity_scale_factor_estimate_(const geometry_msgs::msg::TwistStamped velo raw_velocity_scale_factor = size % 2 ? t[size / 2] : (t[(size / 2) - 1] + t[size / 2]) / 2; delete[] t; velocity_scale_factor->scale_factor = raw_velocity_scale_factor; - } - else if (velocity_scale_factor->status.estimate_status == false) - { + } else if (velocity_scale_factor->status.estimate_status == false) { raw_velocity_scale_factor = 0; velocity_scale_factor->scale_factor = velocity_scale_factor_status->velocity_scale_factor_last; } - if (velocity_scale_factor_status->estimate_start_status == true) - { + if (velocity_scale_factor_status->estimate_start_status == true) { velocity_scale_factor->status.enabled_status = true; - correction_velocity->twist.linear.x = velocity.twist.linear.x * velocity_scale_factor->scale_factor; - } - else - { + correction_velocity->twist.linear.x = + velocity.twist.linear.x * velocity_scale_factor->scale_factor; + } else { velocity_scale_factor->status.enabled_status = false; velocity_scale_factor->scale_factor = initial_velocity_scale_factor; correction_velocity->twist.linear.x = velocity.twist.linear.x * initial_velocity_scale_factor; } velocity_scale_factor_status->velocity_scale_factor_last = velocity_scale_factor->scale_factor; - } -void velocity_scale_factor_estimate(const rtklib_msgs::msg::RtklibNav rtklib_nav, const geometry_msgs::msg::TwistStamped velocity, - const VelocityScaleFactorParameter velocity_scale_factor_parameter, VelocityScaleFactorStatus* velocity_scale_factor_status, - geometry_msgs::msg::TwistStamped* correction_velocity, eagleye_msgs::msg::VelocityScaleFactor* velocity_scale_factor) -{ - - double ecef_vel[3]; - double ecef_pos[3]; - double enu_vel[3]; - - bool gnss_status,gnss_update; - double doppler_velocity = 0.0; - - ecef_vel[0] = rtklib_nav.ecef_vel.x; - ecef_vel[1] = rtklib_nav.ecef_vel.y; - ecef_vel[2] = rtklib_nav.ecef_vel.z; - ecef_pos[0] = rtklib_nav.ecef_pos.x; - ecef_pos[1] = rtklib_nav.ecef_pos.y; - ecef_pos[2] = rtklib_nav.ecef_pos.z; - - xyz2enu_vel(ecef_vel, ecef_pos, enu_vel); - - if (!std::isfinite(enu_vel[0])||!std::isfinite(enu_vel[1])||!std::isfinite(enu_vel[2])) - { - enu_vel[0] = 0; - enu_vel[1] = 0; - enu_vel[2] = 0; - gnss_update = false; - } - else - { - gnss_update = true; - } +void velocity_scale_factor_estimate( + const rtklib_msgs::msg::RtklibNav rtklib_nav, const geometry_msgs::msg::TwistStamped velocity, + const VelocityScaleFactorParameter velocity_scale_factor_parameter, + VelocityScaleFactorStatus* velocity_scale_factor_status, + geometry_msgs::msg::TwistStamped* correction_velocity, + eagleye_msgs::msg::VelocityScaleFactor* velocity_scale_factor) { + double ecef_vel[3]; + double ecef_pos[3]; + double enu_vel[3]; + + bool gnss_status, gnss_update; + double doppler_velocity = 0.0; + + ecef_vel[0] = rtklib_nav.ecef_vel.x; + ecef_vel[1] = rtklib_nav.ecef_vel.y; + ecef_vel[2] = rtklib_nav.ecef_vel.z; + ecef_pos[0] = rtklib_nav.ecef_pos.x; + ecef_pos[1] = rtklib_nav.ecef_pos.y; + ecef_pos[2] = rtklib_nav.ecef_pos.z; + + xyz2enu_vel(ecef_vel, ecef_pos, enu_vel); + + if (!std::isfinite(enu_vel[0]) || !std::isfinite(enu_vel[1]) || !std::isfinite(enu_vel[2])) { + enu_vel[0] = 0; + enu_vel[1] = 0; + enu_vel[2] = 0; + gnss_update = false; + } else { + gnss_update = true; + } - doppler_velocity = std::sqrt((enu_vel[0] * enu_vel[0]) + (enu_vel[1] * enu_vel[1]) + (enu_vel[2] * enu_vel[2])); + doppler_velocity = + std::sqrt((enu_vel[0] * enu_vel[0]) + (enu_vel[1] * enu_vel[1]) + (enu_vel[2] * enu_vel[2])); - if (velocity_scale_factor_status->tow_last == rtklib_nav.tow || rtklib_nav.tow == 0 || gnss_update == false) - { + if (velocity_scale_factor_status->tow_last == rtklib_nav.tow || rtklib_nav.tow == 0 || + gnss_update == false) { gnss_status = false; doppler_velocity = 0; velocity_scale_factor_status->tow_last = rtklib_nav.tow; - } - else - { + } else { gnss_status = true; doppler_velocity = doppler_velocity; velocity_scale_factor_status->tow_last = rtklib_nav.tow; @@ -216,24 +203,26 @@ void velocity_scale_factor_estimate(const rtklib_msgs::msg::RtklibNav rtklib_nav velocity_scale_factor_status->doppler_velocity_buffer.push_back(doppler_velocity); velocity_scale_factor_status->velocity_buffer.push_back(velocity.twist.linear.x); - velocity_scale_factor_estimate_(velocity, velocity_scale_factor_parameter, velocity_scale_factor_status, correction_velocity, velocity_scale_factor); + velocity_scale_factor_estimate_(velocity, velocity_scale_factor_parameter, + velocity_scale_factor_status, correction_velocity, + velocity_scale_factor); } -void velocity_scale_factor_estimate(const nmea_msgs::msg::Gprmc nmea_rmc, const geometry_msgs::msg::TwistStamped velocity, - const VelocityScaleFactorParameter velocity_scale_factor_parameter, VelocityScaleFactorStatus* velocity_scale_factor_status, - geometry_msgs::msg::TwistStamped* correction_velocity, eagleye_msgs::msg::VelocityScaleFactor* velocity_scale_factor) -{ +void velocity_scale_factor_estimate( + const nmea_msgs::msg::Gprmc nmea_rmc, const geometry_msgs::msg::TwistStamped velocity, + const VelocityScaleFactorParameter velocity_scale_factor_parameter, + VelocityScaleFactorStatus* velocity_scale_factor_status, + geometry_msgs::msg::TwistStamped* correction_velocity, + eagleye_msgs::msg::VelocityScaleFactor* velocity_scale_factor) { bool gnss_status; double doppler_velocity = 0.0; - if (velocity_scale_factor_status->rmc_time_last == nmea_rmc.utc_seconds || nmea_rmc.utc_seconds == 0) - { + if (velocity_scale_factor_status->rmc_time_last == nmea_rmc.utc_seconds || + nmea_rmc.utc_seconds == 0) { gnss_status = false; doppler_velocity = 0; velocity_scale_factor_status->rmc_time_last = nmea_rmc.utc_seconds; - } - else - { + } else { gnss_status = true; doppler_velocity = nmea_rmc.speed * knot2mps; velocity_scale_factor_status->rmc_time_last = nmea_rmc.utc_seconds; @@ -243,5 +232,7 @@ void velocity_scale_factor_estimate(const nmea_msgs::msg::Gprmc nmea_rmc, const velocity_scale_factor_status->doppler_velocity_buffer.push_back(doppler_velocity); velocity_scale_factor_status->velocity_buffer.push_back(velocity.twist.linear.x); - velocity_scale_factor_estimate_(velocity, velocity_scale_factor_parameter, velocity_scale_factor_status, correction_velocity, velocity_scale_factor); -} + velocity_scale_factor_estimate_(velocity, velocity_scale_factor_parameter, + velocity_scale_factor_status, correction_velocity, + velocity_scale_factor); +} diff --git a/eagleye_core/navigation/src/yaw_rate_offset.cpp b/eagleye_core/navigation/src/yaw_rate_offset.cpp old mode 100755 new mode 100644 index ea136228..da6e2ad9 --- a/eagleye_core/navigation/src/yaw_rate_offset.cpp +++ b/eagleye_core/navigation/src/yaw_rate_offset.cpp @@ -31,10 +31,13 @@ #include "eagleye_coordinate/eagleye_coordinate.hpp" #include "eagleye_navigation/eagleye_navigation.hpp" -void yaw_rate_offset_estimate(const geometry_msgs::msg::TwistStamped velocity, const eagleye_msgs::msg::YawrateOffset yaw_rate_offset_stop, - const eagleye_msgs::msg::Heading heading_interpolate,const sensor_msgs::msg::Imu imu, const YawrateOffsetParameter yaw_rate_offset_parameter, - YawrateOffsetStatus* yaw_rate_offset_status, eagleye_msgs::msg::YawrateOffset* yaw_rate_offset) -{ +void yaw_rate_offset_estimate(const geometry_msgs::msg::TwistStamped velocity, + const eagleye_msgs::msg::YawrateOffset yaw_rate_offset_stop, + const eagleye_msgs::msg::Heading heading_interpolate, + const sensor_msgs::msg::Imu imu, + const YawrateOffsetParameter yaw_rate_offset_parameter, + YawrateOffsetStatus* yaw_rate_offset_status, + eagleye_msgs::msg::YawrateOffset* yaw_rate_offset) { int i; double yaw_rate = 0.0; double sum_xy, sum_x, sum_y, sum_x2; @@ -46,28 +49,26 @@ void yaw_rate_offset_estimate(const geometry_msgs::msg::TwistStamped velocity, c std::size_t inversion_down_index_length; double estimated_number_cur; - double estimated_buffer_number_min = yaw_rate_offset_parameter.estimated_minimum_interval * yaw_rate_offset_parameter.imu_rate; - double estimated_buffer_number_max = yaw_rate_offset_parameter.estimated_maximum_interval * yaw_rate_offset_parameter.imu_rate; - double enabled_data_ratio = yaw_rate_offset_parameter.gnss_rate / yaw_rate_offset_parameter.imu_rate * yaw_rate_offset_parameter.gnss_receiving_threshold; + double estimated_buffer_number_min = + yaw_rate_offset_parameter.estimated_minimum_interval * yaw_rate_offset_parameter.imu_rate; + double estimated_buffer_number_max = + yaw_rate_offset_parameter.estimated_maximum_interval * yaw_rate_offset_parameter.imu_rate; + double enabled_data_ratio = yaw_rate_offset_parameter.gnss_rate / + yaw_rate_offset_parameter.imu_rate * + yaw_rate_offset_parameter.gnss_receiving_threshold; rclcpp::Time ros_clock(imu.header.stamp); auto imu_time = ros_clock.seconds(); - if(yaw_rate_offset->status.enabled_status == true) - { + if (yaw_rate_offset->status.enabled_status == true) { estimated_number_cur = estimated_buffer_number_max; - } - else - { + } else { estimated_number_cur = estimated_buffer_number_min; } - if (yaw_rate_offset_status->estimated_number < estimated_number_cur) - { + if (yaw_rate_offset_status->estimated_number < estimated_number_cur) { ++yaw_rate_offset_status->estimated_number; - } - else - { + } else { yaw_rate_offset_status->estimated_number = estimated_number_cur; } @@ -78,45 +79,48 @@ void yaw_rate_offset_estimate(const geometry_msgs::msg::TwistStamped velocity, c yaw_rate_offset_status->yaw_rate_buffer.push_back(yaw_rate); yaw_rate_offset_status->heading_angle_buffer.push_back(heading_interpolate.heading_angle); yaw_rate_offset_status->correction_velocity_buffer.push_back(velocity.twist.linear.x); - yaw_rate_offset_status->heading_estimate_status_buffer.push_back(heading_interpolate.status.estimate_status); - yaw_rate_offset_status->yaw_rate_offset_stop_buffer.push_back(yaw_rate_offset_stop.yaw_rate_offset); + yaw_rate_offset_status->heading_estimate_status_buffer.push_back( + heading_interpolate.status.estimate_status); + yaw_rate_offset_status->yaw_rate_offset_stop_buffer.push_back( + yaw_rate_offset_stop.yaw_rate_offset); - time_buffer_length = std::distance(yaw_rate_offset_status->time_buffer.begin(), yaw_rate_offset_status->time_buffer.end()); + time_buffer_length = std::distance(yaw_rate_offset_status->time_buffer.begin(), + yaw_rate_offset_status->time_buffer.end()); - if (time_buffer_length > estimated_number_cur) - { + if (time_buffer_length > estimated_number_cur) { yaw_rate_offset_status->time_buffer.erase(yaw_rate_offset_status->time_buffer.begin()); yaw_rate_offset_status->yaw_rate_buffer.erase(yaw_rate_offset_status->yaw_rate_buffer.begin()); - yaw_rate_offset_status->heading_angle_buffer.erase(yaw_rate_offset_status->heading_angle_buffer.begin()); - yaw_rate_offset_status->correction_velocity_buffer.erase(yaw_rate_offset_status->correction_velocity_buffer.begin()); - yaw_rate_offset_status->heading_estimate_status_buffer.erase(yaw_rate_offset_status->heading_estimate_status_buffer.begin()); - yaw_rate_offset_status->yaw_rate_offset_stop_buffer.erase(yaw_rate_offset_status->yaw_rate_offset_stop_buffer.begin()); + yaw_rate_offset_status->heading_angle_buffer.erase( + yaw_rate_offset_status->heading_angle_buffer.begin()); + yaw_rate_offset_status->correction_velocity_buffer.erase( + yaw_rate_offset_status->correction_velocity_buffer.begin()); + yaw_rate_offset_status->heading_estimate_status_buffer.erase( + yaw_rate_offset_status->heading_estimate_status_buffer.begin()); + yaw_rate_offset_status->yaw_rate_offset_stop_buffer.erase( + yaw_rate_offset_status->yaw_rate_offset_stop_buffer.begin()); } if (yaw_rate_offset_status->estimated_preparation_conditions == 0 && - yaw_rate_offset_status->heading_estimate_status_buffer[yaw_rate_offset_status->estimated_number - 1] == true) - { + yaw_rate_offset_status + ->heading_estimate_status_buffer[yaw_rate_offset_status->estimated_number - 1] == true) { yaw_rate_offset_status->estimated_preparation_conditions = 1; - } - else if (yaw_rate_offset_status->estimated_preparation_conditions == 1) - { - if (yaw_rate_offset_status->heading_estimate_status_count < estimated_buffer_number_min) - { + } else if (yaw_rate_offset_status->estimated_preparation_conditions == 1) { + if (yaw_rate_offset_status->heading_estimate_status_count < estimated_buffer_number_min) { ++yaw_rate_offset_status->heading_estimate_status_count; - } - else if (yaw_rate_offset_status->heading_estimate_status_count == estimated_buffer_number_min) - { + } else if (yaw_rate_offset_status->heading_estimate_status_count == + estimated_buffer_number_min) { yaw_rate_offset_status->estimated_preparation_conditions = 2; } } - if (yaw_rate_offset_status->estimated_preparation_conditions == 2 && yaw_rate_offset_status->correction_velocity_buffer[yaw_rate_offset_status->estimated_number-1] > - yaw_rate_offset_parameter.moving_judgment_threshold && yaw_rate_offset_status->heading_estimate_status_buffer[yaw_rate_offset_status->estimated_number-1] == true) - { + if (yaw_rate_offset_status->estimated_preparation_conditions == 2 && + yaw_rate_offset_status + ->correction_velocity_buffer[yaw_rate_offset_status->estimated_number - 1] > + yaw_rate_offset_parameter.moving_judgment_threshold && + yaw_rate_offset_status + ->heading_estimate_status_buffer[yaw_rate_offset_status->estimated_number - 1] == true) { estimated_condition_status = true; - } - else - { + } else { estimated_condition_status = false; } @@ -124,35 +128,33 @@ void yaw_rate_offset_estimate(const geometry_msgs::msg::TwistStamped velocity, c std::vector heading_estimate_status_index; std::vector index; - if (estimated_condition_status == true) - { - for (i = 0; i < yaw_rate_offset_status->estimated_number; i++) - { - if (yaw_rate_offset_status->correction_velocity_buffer[i] > yaw_rate_offset_parameter.moving_judgment_threshold) - { + if (estimated_condition_status == true) { + for (i = 0; i < yaw_rate_offset_status->estimated_number; i++) { + if (yaw_rate_offset_status->correction_velocity_buffer[i] > + yaw_rate_offset_parameter.moving_judgment_threshold) { velocity_index.push_back(i); } - if (yaw_rate_offset_status->heading_estimate_status_buffer[i] == true) - { + if (yaw_rate_offset_status->heading_estimate_status_buffer[i] == true) { heading_estimate_status_index.push_back(i); } } - set_intersection(velocity_index.begin(), velocity_index.end(), heading_estimate_status_index.begin(), heading_estimate_status_index.end(), + set_intersection(velocity_index.begin(), velocity_index.end(), + heading_estimate_status_index.begin(), heading_estimate_status_index.end(), inserter(index, index.end())); index_length = std::distance(index.begin(), index.end()); - if (index_length > yaw_rate_offset_status->estimated_number * enabled_data_ratio) - { - std::vector provisional_heading_angle_buffer(yaw_rate_offset_status->estimated_number, 0); + if (index_length > yaw_rate_offset_status->estimated_number * enabled_data_ratio) { + std::vector provisional_heading_angle_buffer(yaw_rate_offset_status->estimated_number, + 0); - for (i = 0; i < yaw_rate_offset_status->estimated_number; i++) - { - if (i > 0) - { - provisional_heading_angle_buffer[i] = provisional_heading_angle_buffer[i-1] + - yaw_rate_offset_status->yaw_rate_buffer[i] * (yaw_rate_offset_status->time_buffer[i] - yaw_rate_offset_status->time_buffer[i-1]); + for (i = 0; i < yaw_rate_offset_status->estimated_number; i++) { + if (i > 0) { + provisional_heading_angle_buffer[i] = + provisional_heading_angle_buffer[i - 1] + + yaw_rate_offset_status->yaw_rate_buffer[i] * + (yaw_rate_offset_status->time_buffer[i] - yaw_rate_offset_status->time_buffer[i - 1]); } } @@ -165,49 +167,50 @@ void yaw_rate_offset_estimate(const geometry_msgs::msg::TwistStamped velocity, c index_length = std::distance(index.begin(), index.end()); //base_heading_angle_buffer.clear(); - for (i = 0; i < yaw_rate_offset_status->estimated_number; i++) - { - base_heading_angle_buffer.push_back(yaw_rate_offset_status->heading_angle_buffer[index[index_length-1]] - - provisional_heading_angle_buffer[index[index_length-1]] + provisional_heading_angle_buffer[i]); + for (i = 0; i < yaw_rate_offset_status->estimated_number; i++) { + base_heading_angle_buffer.push_back( + yaw_rate_offset_status->heading_angle_buffer[index[index_length - 1]] - + provisional_heading_angle_buffer[index[index_length - 1]] + + provisional_heading_angle_buffer[i]); } //diff_buffer.clear(); - for (i = 0; i < index_length; i++) - { + for (i = 0; i < index_length; i++) { // diff_buffer.push_back(base_heading_angle_buffer[index[i]] - heading_angle_buffer[index[i]]); - diff_buffer.push_back(yaw_rate_offset_status->heading_angle_buffer[index[index_length-1]] - provisional_heading_angle_buffer[index[index_length-1]] + - provisional_heading_angle_buffer[index[i]] - yaw_rate_offset_status->heading_angle_buffer[index[i]]); + diff_buffer.push_back( + yaw_rate_offset_status->heading_angle_buffer[index[index_length - 1]] - + provisional_heading_angle_buffer[index[index_length - 1]] + + provisional_heading_angle_buffer[index[i]] - + yaw_rate_offset_status->heading_angle_buffer[index[i]]); } time_buffer2.clear(); - for (i = 0; i < index_length; i++) - { - time_buffer2.push_back(yaw_rate_offset_status->time_buffer[index[i]] - yaw_rate_offset_status->time_buffer[index[0]]); + for (i = 0; i < index_length; i++) { + time_buffer2.push_back(yaw_rate_offset_status->time_buffer[index[i]] - + yaw_rate_offset_status->time_buffer[index[0]]); } // Least-square sum_xy = 0.0, sum_x = 0.0, sum_y = 0.0, sum_x2 = 0.0; - for (i = 0; i < index_length ; i++) - { + for (i = 0; i < index_length; i++) { sum_xy += time_buffer2[i] * diff_buffer[i]; sum_x += time_buffer2[i]; sum_y += diff_buffer[i]; sum_x2 += std::pow(time_buffer2[i], 2); } - yaw_rate_offset->yaw_rate_offset = -1 * (index_length * sum_xy - sum_x * sum_y) / (index_length * sum_x2 - pow(sum_x, 2)); + yaw_rate_offset->yaw_rate_offset = + -1 * (index_length * sum_xy - sum_x * sum_y) / (index_length * sum_x2 - pow(sum_x, 2)); yaw_rate_offset->status.enabled_status = true; yaw_rate_offset->status.estimate_status = true; } } - if (yaw_rate_offset->status.enabled_status == false) - { + if (yaw_rate_offset->status.enabled_status == false) { yaw_rate_offset->yaw_rate_offset = yaw_rate_offset_stop.yaw_rate_offset; } - if (std::fabs(yaw_rate_offset->yaw_rate_offset - yaw_rate_offset_stop.yaw_rate_offset) > yaw_rate_offset_parameter.outlier_threshold) - { + if (std::fabs(yaw_rate_offset->yaw_rate_offset - yaw_rate_offset_stop.yaw_rate_offset) > + yaw_rate_offset_parameter.outlier_threshold) { yaw_rate_offset->yaw_rate_offset = yaw_rate_offset_stop.yaw_rate_offset; } - } diff --git a/eagleye_core/navigation/src/yaw_rate_offset_stop.cpp b/eagleye_core/navigation/src/yaw_rate_offset_stop.cpp old mode 100755 new mode 100644 index 2eff6e31..8642accd --- a/eagleye_core/navigation/src/yaw_rate_offset_stop.cpp +++ b/eagleye_core/navigation/src/yaw_rate_offset_stop.cpp @@ -31,63 +31,60 @@ #include "eagleye_coordinate/eagleye_coordinate.hpp" #include "eagleye_navigation/eagleye_navigation.hpp" -void yaw_rate_offset_stop_estimate(const geometry_msgs::msg::TwistStamped velocity, const sensor_msgs::msg::Imu imu, const YawrateOffsetStopParameter yaw_rate_offset_stop_parameter, YawrateOffsetStopStatus* yaw_rate_offset_stop_status, eagleye_msgs::msg::YawrateOffset* yaw_rate_offset_stop) -{ - +void yaw_rate_offset_stop_estimate(const geometry_msgs::msg::TwistStamped velocity, + const sensor_msgs::msg::Imu imu, + const YawrateOffsetStopParameter yaw_rate_offset_stop_parameter, + YawrateOffsetStopStatus* yaw_rate_offset_stop_status, + eagleye_msgs::msg::YawrateOffset* yaw_rate_offset_stop) { int i; double tmp = 0.0; double initial_yaw_rate_offset_stop = 0.0; std::size_t yaw_rate_buffer_length; - double estimated_buffer_number = yaw_rate_offset_stop_parameter.imu_rate * yaw_rate_offset_stop_parameter.estimated_interval; - double estimated_time_buffer_number = estimated_buffer_number; //TODO rename + double estimated_buffer_number = + yaw_rate_offset_stop_parameter.imu_rate * yaw_rate_offset_stop_parameter.estimated_interval; + double estimated_time_buffer_number = estimated_buffer_number; //TODO rename // data buffer generate - if (yaw_rate_offset_stop_status->estimate_start_status == false) - { + if (yaw_rate_offset_stop_status->estimate_start_status == false) { yaw_rate_offset_stop_status->yaw_rate_buffer.push_back(imu.angular_velocity.z); - } - else if ( std::fabs(std::fabs(yaw_rate_offset_stop_status->yaw_rate_offset_stop_last) - std::fabs(imu.angular_velocity.z)) < yaw_rate_offset_stop_parameter.outlier_threshold && yaw_rate_offset_stop_status->estimate_start_status == true) - { + } else if (std::fabs(std::fabs(yaw_rate_offset_stop_status->yaw_rate_offset_stop_last) - + std::fabs(imu.angular_velocity.z)) < + yaw_rate_offset_stop_parameter.outlier_threshold && + yaw_rate_offset_stop_status->estimate_start_status == true) { yaw_rate_offset_stop_status->yaw_rate_buffer.push_back(imu.angular_velocity.z); } - yaw_rate_buffer_length = std::distance(yaw_rate_offset_stop_status->yaw_rate_buffer.begin(), yaw_rate_offset_stop_status->yaw_rate_buffer.end()); + yaw_rate_buffer_length = std::distance(yaw_rate_offset_stop_status->yaw_rate_buffer.begin(), + yaw_rate_offset_stop_status->yaw_rate_buffer.end()); - if (yaw_rate_buffer_length > estimated_buffer_number + estimated_time_buffer_number) - { - yaw_rate_offset_stop_status->yaw_rate_buffer.erase(yaw_rate_offset_stop_status->yaw_rate_buffer.begin()); + if (yaw_rate_buffer_length > estimated_buffer_number + estimated_time_buffer_number) { + yaw_rate_offset_stop_status->yaw_rate_buffer.erase( + yaw_rate_offset_stop_status->yaw_rate_buffer.begin()); } - if (std::abs(velocity.twist.linear.x) < yaw_rate_offset_stop_parameter.stop_judgment_threshold) - { + if (std::abs(velocity.twist.linear.x) < yaw_rate_offset_stop_parameter.stop_judgment_threshold) { ++yaw_rate_offset_stop_status->stop_count; - } - else - { + } else { yaw_rate_offset_stop_status->stop_count = 0; } // mean - if (yaw_rate_offset_stop_status->stop_count > estimated_buffer_number + estimated_time_buffer_number) - { + if (yaw_rate_offset_stop_status->stop_count > + estimated_buffer_number + estimated_time_buffer_number) { tmp = 0.0; - for (i = 0; i < estimated_buffer_number; i++) - { + for (i = 0; i < estimated_buffer_number; i++) { tmp += yaw_rate_offset_stop_status->yaw_rate_buffer[i]; } yaw_rate_offset_stop->yaw_rate_offset = -1 * tmp / estimated_buffer_number; yaw_rate_offset_stop->status.enabled_status = true; yaw_rate_offset_stop->status.estimate_status = true; yaw_rate_offset_stop_status->estimate_start_status = true; - } - else - { + } else { yaw_rate_offset_stop->yaw_rate_offset = yaw_rate_offset_stop_status->yaw_rate_offset_stop_last; yaw_rate_offset_stop->status.estimate_status = false; } - if (yaw_rate_offset_stop_status->estimate_start_status == false) - { + if (yaw_rate_offset_stop_status->estimate_start_status == false) { yaw_rate_offset_stop->yaw_rate_offset = initial_yaw_rate_offset_stop; yaw_rate_offset_stop->status.estimate_status = false; yaw_rate_offset_stop->status.enabled_status = false; diff --git a/eagleye_rt/src/angular_velocity_offset_stop_node.cpp b/eagleye_rt/src/angular_velocity_offset_stop_node.cpp index becffdcc..6d06c573 100644 --- a/eagleye_rt/src/angular_velocity_offset_stop_node.cpp +++ b/eagleye_rt/src/angular_velocity_offset_stop_node.cpp @@ -40,13 +40,11 @@ static sensor_msgs::msg::Imu imu; struct AngularVelocityOffsetStopParameter angular_velocity_offset_stop_parameter; struct AngularVelocityOffsetStopStatus angular_velocity_offset_stop_status; -void velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) -{ +void velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) { velocity = *msg; } -void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) -{ +void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) { imu.header = msg->header; imu.orientation = msg->orientation; imu.orientation_covariance = msg->orientation_covariance; @@ -55,46 +53,57 @@ void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) imu.linear_acceleration = msg->linear_acceleration; imu.linear_acceleration_covariance = msg->linear_acceleration_covariance; angular_velocity_offset_stop.header = msg->header; - angular_velocity_offset_stop_estimate(velocity, imu, angular_velocity_offset_stop_parameter, &angular_velocity_offset_stop_status, &angular_velocity_offset_stop); + angular_velocity_offset_stop_estimate(velocity, imu, angular_velocity_offset_stop_parameter, + &angular_velocity_offset_stop_status, + &angular_velocity_offset_stop); pub->publish(angular_velocity_offset_stop); } -int main(int argc, char** argv) -{ +int main(int argc, char** argv) { rclcpp::init(argc, argv); auto node = rclcpp::Node::make_shared("eagleye_angular_velocity_offset_stop"); std::string subscribe_twist_topic_name = "vehicle/twist"; std::string yaml_file; - node->declare_parameter("yaml_file",yaml_file); - node->get_parameter("yaml_file",yaml_file); + node->declare_parameter("yaml_file", yaml_file); + node->get_parameter("yaml_file", yaml_file); std::cout << "yaml_file: " << yaml_file << std::endl; - try - { + try { YAML::Node conf = YAML::LoadFile(yaml_file); - angular_velocity_offset_stop_parameter.imu_rate = conf["/**"]["ros__parameters"]["common"]["imu_rate"].as(); - angular_velocity_offset_stop_parameter.stop_judgment_threshold = conf["/**"]["ros__parameters"]["common"]["stop_judgment_threshold"].as(); - angular_velocity_offset_stop_parameter.estimated_interval = conf["/**"]["ros__parameters"]["angular_velocity_offset_stop"]["estimated_interval"].as(); - angular_velocity_offset_stop_parameter.outlier_threshold = conf["/**"]["ros__parameters"]["angular_velocity_offset_stop"]["outlier_threshold"].as(); + angular_velocity_offset_stop_parameter.imu_rate = + conf["/**"]["ros__parameters"]["common"]["imu_rate"].as(); + angular_velocity_offset_stop_parameter.stop_judgment_threshold = + conf["/**"]["ros__parameters"]["common"]["stop_judgment_threshold"].as(); + angular_velocity_offset_stop_parameter.estimated_interval = + conf["/**"]["ros__parameters"]["angular_velocity_offset_stop"]["estimated_interval"] + .as(); + angular_velocity_offset_stop_parameter.outlier_threshold = + conf["/**"]["ros__parameters"]["angular_velocity_offset_stop"]["outlier_threshold"] + .as(); std::cout << "subscribe_twist_topic_name " << subscribe_twist_topic_name << std::endl; std::cout << "imu_rate " << angular_velocity_offset_stop_parameter.imu_rate << std::endl; - std::cout << "stop_judgment_threshold " << angular_velocity_offset_stop_parameter.stop_judgment_threshold << std::endl; - std::cout << "estimated_minimum_interval " << angular_velocity_offset_stop_parameter.estimated_interval << std::endl; - std::cout << "outlier_threshold " << angular_velocity_offset_stop_parameter.outlier_threshold << std::endl; - } - catch (YAML::Exception& e) - { - std::cerr << "\033[1;31mangular_velocity_offset_stop Node YAML Error: " << e.msg << "\033[0m" << std::endl; + std::cout << "stop_judgment_threshold " + << angular_velocity_offset_stop_parameter.stop_judgment_threshold << std::endl; + std::cout << "estimated_minimum_interval " + << angular_velocity_offset_stop_parameter.estimated_interval << std::endl; + std::cout << "outlier_threshold " << angular_velocity_offset_stop_parameter.outlier_threshold + << std::endl; + } catch (YAML::Exception& e) { + std::cerr << "\033[1;31mangular_velocity_offset_stop Node YAML Error: " << e.msg << "\033[0m" + << std::endl; exit(3); } - auto sub1 = node->create_subscription(subscribe_twist_topic_name, 1000, velocity_callback); - auto sub2 = node->create_subscription("imu/data_tf_converted", 1000, imu_callback); - pub = node->create_publisher("angular_velocity_offset_stop", 1000); + auto sub1 = node->create_subscription( + subscribe_twist_topic_name, 1000, velocity_callback); + auto sub2 = + node->create_subscription("imu/data_tf_converted", 1000, imu_callback); + pub = node->create_publisher( + "angular_velocity_offset_stop", 1000); rclcpp::spin(node); diff --git a/eagleye_rt/src/correction_imu.cpp b/eagleye_rt/src/correction_imu.cpp index 89c5287e..f6b764f6 100644 --- a/eagleye_rt/src/correction_imu.cpp +++ b/eagleye_rt/src/correction_imu.cpp @@ -41,29 +41,24 @@ static sensor_msgs::msg::Imu imu; static sensor_msgs::msg::Imu correction_imu; - -void yaw_rate_offset_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) -{ +void yaw_rate_offset_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) { yaw_rate_offset = *msg; } -void angular_velocity_offset_stop_callback(const eagleye_msgs::msg::AngularVelocityOffset::ConstSharedPtr msg) -{ +void angular_velocity_offset_stop_callback( + const eagleye_msgs::msg::AngularVelocityOffset::ConstSharedPtr msg) { angular_velocity_offset_stop = *msg; } -void acc_x_offset_callback(const eagleye_msgs::msg::AccXOffset::ConstSharedPtr msg) -{ +void acc_x_offset_callback(const eagleye_msgs::msg::AccXOffset::ConstSharedPtr msg) { acc_x_offset = *msg; } -void acc_x_scale_factor_callback(const eagleye_msgs::msg::AccXScaleFactor::ConstSharedPtr msg) -{ +void acc_x_scale_factor_callback(const eagleye_msgs::msg::AccXScaleFactor::ConstSharedPtr msg) { acc_x_scale_factor = *msg; } -void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) -{ +void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) { imu = *msg; correction_imu.header = imu.header; @@ -72,36 +67,44 @@ void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) correction_imu.angular_velocity_covariance = imu.angular_velocity_covariance; correction_imu.linear_acceleration_covariance = imu.linear_acceleration_covariance; - if (acc_x_offset.status.enabled_status == true && acc_x_scale_factor.status.enabled_status) - { - correction_imu.linear_acceleration.x = imu.linear_acceleration.x * acc_x_scale_factor.acc_x_scale_factor + acc_x_offset.acc_x_offset; + if (acc_x_offset.status.enabled_status == true && acc_x_scale_factor.status.enabled_status) { + correction_imu.linear_acceleration.x = + imu.linear_acceleration.x * acc_x_scale_factor.acc_x_scale_factor + acc_x_offset.acc_x_offset; correction_imu.linear_acceleration.y = imu.linear_acceleration.y; correction_imu.linear_acceleration.z = imu.linear_acceleration.z; - } - else - { + } else { correction_imu.linear_acceleration.x = imu.linear_acceleration.x; correction_imu.linear_acceleration.y = imu.linear_acceleration.y; correction_imu.linear_acceleration.z = imu.linear_acceleration.z; } - correction_imu.angular_velocity.x = imu.angular_velocity.x + angular_velocity_offset_stop.angular_velocity_offset.x; - correction_imu.angular_velocity.y = imu.angular_velocity.y + angular_velocity_offset_stop.angular_velocity_offset.y; - correction_imu.angular_velocity.z = -1 * (imu.angular_velocity.z + angular_velocity_offset_stop.angular_velocity_offset.z); + correction_imu.angular_velocity.x = + imu.angular_velocity.x + angular_velocity_offset_stop.angular_velocity_offset.x; + correction_imu.angular_velocity.y = + imu.angular_velocity.y + angular_velocity_offset_stop.angular_velocity_offset.y; + correction_imu.angular_velocity.z = + -1 * (imu.angular_velocity.z + angular_velocity_offset_stop.angular_velocity_offset.z); pub->publish(correction_imu); } -int main(int argc, char** argv) -{ +int main(int argc, char** argv) { rclcpp::init(argc, argv); auto node = rclcpp::Node::make_shared("eagleye_correction_imu"); - auto sub1 = node->create_subscription("yaw_rate_offset_2nd", rclcpp::QoS(10), yaw_rate_offset_callback); //ros::TransportHints().tcpNoDelay() - auto sub2 = node->create_subscription("angular_velocity_offset_stop", rclcpp::QoS(10), angular_velocity_offset_stop_callback); //ros::TransportHints().tcpNoDelay() - auto sub3 = node->create_subscription("acc_x_offset", rclcpp::QoS(10), acc_x_offset_callback); //ros::TransportHints().tcpNoDelay() - auto sub4 = node->create_subscription("acc_x_scale_factor", rclcpp::QoS(10), acc_x_scale_factor_callback); //ros::TransportHints().tcpNoDelay() - auto sub5 = node->create_subscription("imu/data_tf_converted", 1000, imu_callback); //ros::TransportHints().tcpNoDelay() + auto sub1 = node->create_subscription( + "yaw_rate_offset_2nd", rclcpp::QoS(10), + yaw_rate_offset_callback); //ros::TransportHints().tcpNoDelay() + auto sub2 = node->create_subscription( + "angular_velocity_offset_stop", rclcpp::QoS(10), + angular_velocity_offset_stop_callback); //ros::TransportHints().tcpNoDelay() + auto sub3 = node->create_subscription( + "acc_x_offset", rclcpp::QoS(10), acc_x_offset_callback); //ros::TransportHints().tcpNoDelay() + auto sub4 = node->create_subscription( + "acc_x_scale_factor", rclcpp::QoS(10), + acc_x_scale_factor_callback); //ros::TransportHints().tcpNoDelay() + auto sub5 = node->create_subscription( + "imu/data_tf_converted", 1000, imu_callback); //ros::TransportHints().tcpNoDelay() pub = node->create_publisher("imu/data_corrected", rclcpp::QoS(10)); rclcpp::spin(node); diff --git a/eagleye_rt/src/distance_node.cpp b/eagleye_rt/src/distance_node.cpp index 07bb9b8c..b440a3f3 100644 --- a/eagleye_rt/src/distance_node.cpp +++ b/eagleye_rt/src/distance_node.cpp @@ -41,36 +41,35 @@ struct DistanceStatus _distance_status; static bool _use_can_less_mode; -void velocity_status_callback(const eagleye_msgs::msg::StatusStamped::ConstSharedPtr msg) -{ +void velocity_status_callback(const eagleye_msgs::msg::StatusStamped::ConstSharedPtr msg) { _velocity_status = *msg; } -void velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) -{ - if(_use_can_less_mode && !_velocity_status.status.enabled_status) return; +void velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) { + if (_use_can_less_mode && !_velocity_status.status.enabled_status) + return; _velocity = *msg; _distance.header = msg->header; _distance.header.frame_id = "base_link"; distance_estimate(_velocity, &_distance_status, &_distance); - if (_distance_status.time_last != 0) - { + if (_distance_status.time_last != 0) { _pub->publish(_distance); } } -int main(int argc, char** argv) -{ +int main(int argc, char** argv) { rclcpp::init(argc, argv); auto node = rclcpp::Node::make_shared("eagleye_distance"); - node->declare_parameter("use_can_less_mode",_use_can_less_mode); - node->get_parameter("use_can_less_mode",_use_can_less_mode); + node->declare_parameter("use_can_less_mode", _use_can_less_mode); + node->get_parameter("use_can_less_mode", _use_can_less_mode); - auto sub1 = node->create_subscription("velocity", rclcpp::QoS(10), velocity_callback); - auto sub2 = node->create_subscription("velocity_status", rclcpp::QoS(10), velocity_status_callback); + auto sub1 = node->create_subscription( + "velocity", rclcpp::QoS(10), velocity_callback); + auto sub2 = node->create_subscription( + "velocity_status", rclcpp::QoS(10), velocity_status_callback); _pub = node->create_publisher("distance", rclcpp::QoS(10)); rclcpp::spin(node); diff --git a/eagleye_rt/src/enable_additional_rolling_node.cpp b/eagleye_rt/src/enable_additional_rolling_node.cpp index f363779a..8025c5ef 100644 --- a/eagleye_rt/src/enable_additional_rolling_node.cpp +++ b/eagleye_rt/src/enable_additional_rolling_node.cpp @@ -52,57 +52,48 @@ struct EnableAdditionalRollingStatus _rolling_status; static bool _use_can_less_mode; -void velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) -{ +void velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) { _velocity = *msg; } -void velocity_status_callback(const eagleye_msgs::msg::StatusStamped::ConstSharedPtr msg) -{ +void velocity_status_callback(const eagleye_msgs::msg::StatusStamped::ConstSharedPtr msg) { _velocity_status = *msg; } -void velocity_scale_factor_callback(const eagleye_msgs::msg::VelocityScaleFactor::ConstSharedPtr msg) -{ +void velocity_scale_factor_callback( + const eagleye_msgs::msg::VelocityScaleFactor::ConstSharedPtr msg) { _velocity_scale_factor = *msg; } -void distance_callback(const eagleye_msgs::msg::Distance::ConstSharedPtr msg) -{ +void distance_callback(const eagleye_msgs::msg::Distance::ConstSharedPtr msg) { _distance = *msg; } -void yaw_rate_offset_2nd_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) -{ +void yaw_rate_offset_2nd_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) { _yaw_rate_offset_2nd = *msg; } -void yaw_rate_offset_stop_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) -{ +void yaw_rate_offset_stop_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) { _yaw_rate_offset_stop = *msg; } -void localization_pose_callback(const geometry_msgs::msg::PoseStamped::ConstSharedPtr msg) -{ +void localization_pose_callback(const geometry_msgs::msg::PoseStamped::ConstSharedPtr msg) { _localization_pose = *msg; } -void angular_velocity_offset_stop_callback(const eagleye_msgs::msg::AngularVelocityOffset::ConstSharedPtr msg) -{ +void angular_velocity_offset_stop_callback( + const eagleye_msgs::msg::AngularVelocityOffset::ConstSharedPtr msg) { _angular_velocity_offset_stop = *msg; } -void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) -{ - if(_use_can_less_mode && !_velocity_status.status.enabled_status) return; +void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) { + if (_use_can_less_mode && !_velocity_status.status.enabled_status) + return; eagleye_msgs::msg::StatusStamped velocity_enable_status; - if(_use_can_less_mode) - { + if (_use_can_less_mode) { velocity_enable_status = _velocity_status; - } - else - { + } else { velocity_enable_status.header = _velocity_scale_factor.header; velocity_enable_status.status = _velocity_scale_factor.status; } @@ -112,63 +103,82 @@ void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) _acc_y_offset.header.frame_id = "imu"; _rolling_angle.header = msg->header; _rolling_angle.header.frame_id = "base_link"; - enable_additional_rolling_estimate(_velocity, velocity_enable_status, _yaw_rate_offset_2nd, _yaw_rate_offset_stop, _distance, _imu, - _localization_pose, _angular_velocity_offset_stop, _rolling_parameter, &_rolling_status, &_rolling_angle, &_acc_y_offset); + enable_additional_rolling_estimate(_velocity, velocity_enable_status, _yaw_rate_offset_2nd, + _yaw_rate_offset_stop, _distance, _imu, _localization_pose, + _angular_velocity_offset_stop, _rolling_parameter, + &_rolling_status, &_rolling_angle, &_acc_y_offset); _pub1->publish(_acc_y_offset); _pub2->publish(_rolling_angle); } -int main(int argc, char** argv) -{ +int main(int argc, char** argv) { rclcpp::init(argc, argv); auto node = rclcpp::Node::make_shared("eagleye_enable_additional_rolling"); std::string subscribe_localization_pose_topic_name; std::string yaml_file; - node->declare_parameter("yaml_file",yaml_file); - node->get_parameter("yaml_file",yaml_file); + node->declare_parameter("yaml_file", yaml_file); + node->get_parameter("yaml_file", yaml_file); std::cout << "yaml_file: " << yaml_file << std::endl; - try - { + try { YAML::Node conf = YAML::LoadFile(yaml_file); - subscribe_localization_pose_topic_name = conf["/**"]["ros__parameters"]["localization_pose_topic"].as(); + subscribe_localization_pose_topic_name = + conf["/**"]["ros__parameters"]["localization_pose_topic"].as(); _rolling_parameter.imu_rate = conf["/**"]["ros__parameters"]["common"]["imu_rate"].as(); - _rolling_parameter.stop_judgment_threshold = conf["/**"]["ros__parameters"]["common"]["stop_judgment_threshold"].as(); - - _rolling_parameter.update_distance = conf["/**"]["ros__parameters"]["enable_additional_rolling"]["update_distance"].as(); - _rolling_parameter.moving_average_time = conf["/**"]["ros__parameters"]["enable_additional_rolling"]["moving_average_time"].as(); - _rolling_parameter.sync_judgment_threshold = conf["/**"]["ros__parameters"]["enable_additional_rolling"]["sync_judgment_threshold"].as(); - _rolling_parameter.sync_search_period = conf["/**"]["ros__parameters"]["enable_additional_rolling"]["sync_search_period"].as(); - - std::cout<< "subscribe_localization_pose_topic_name " << subscribe_localization_pose_topic_name << std::endl; + _rolling_parameter.stop_judgment_threshold = + conf["/**"]["ros__parameters"]["common"]["stop_judgment_threshold"].as(); + + _rolling_parameter.update_distance = + conf["/**"]["ros__parameters"]["enable_additional_rolling"]["update_distance"].as(); + _rolling_parameter.moving_average_time = + conf["/**"]["ros__parameters"]["enable_additional_rolling"]["moving_average_time"] + .as(); + _rolling_parameter.sync_judgment_threshold = + conf["/**"]["ros__parameters"]["enable_additional_rolling"]["sync_judgment_threshold"] + .as(); + _rolling_parameter.sync_search_period = + conf["/**"]["ros__parameters"]["enable_additional_rolling"]["sync_search_period"] + .as(); + + std::cout << "subscribe_localization_pose_topic_name " << subscribe_localization_pose_topic_name + << std::endl; std::cout << "imu_rate " << _rolling_parameter.imu_rate << std::endl; - std::cout << "stop_judgment_threshold " << _rolling_parameter.stop_judgment_threshold << std::endl; + std::cout << "stop_judgment_threshold " << _rolling_parameter.stop_judgment_threshold + << std::endl; std::cout << "update_distance " << _rolling_parameter.update_distance << std::endl; std::cout << "moving_average_time " << _rolling_parameter.moving_average_time << std::endl; - std::cout << "sync_judgment_threshold " << _rolling_parameter.sync_judgment_threshold << std::endl; + std::cout << "sync_judgment_threshold " << _rolling_parameter.sync_judgment_threshold + << std::endl; std::cout << "sync_search_period " << _rolling_parameter.sync_search_period << std::endl; - } - catch (YAML::Exception& e) - { - std::cerr << "\033[1;31menable_additional_rolling Node YAML Error: " << e.msg << "\033[0m" << std::endl; + } catch (YAML::Exception& e) { + std::cerr << "\033[1;31menable_additional_rolling Node YAML Error: " << e.msg << "\033[0m" + << std::endl; exit(3); } - auto sub1 = node->create_subscription("velocity_scale_factor", 1000, velocity_scale_factor_callback); - auto sub2 = node->create_subscription("yaw_rate_offset_2nd", 1000, yaw_rate_offset_2nd_callback); - auto sub3 = node->create_subscription("yaw_rate_offset_stop", 1000, yaw_rate_offset_stop_callback); - auto sub4 = node->create_subscription("distance", 1000, distance_callback); - auto sub5 = node->create_subscription(subscribe_localization_pose_topic_name, 1000, localization_pose_callback); - auto sub6 = node->create_subscription("angular_velocity_offset_stop", 1000, angular_velocity_offset_stop_callback); - auto sub7 = node->create_subscription("imu/data_tf_converted", 1000, imu_callback); - - _pub1 = node->create_publisher("acc_y_offset_additional_rolling", 1000); + auto sub1 = node->create_subscription( + "velocity_scale_factor", 1000, velocity_scale_factor_callback); + auto sub2 = node->create_subscription( + "yaw_rate_offset_2nd", 1000, yaw_rate_offset_2nd_callback); + auto sub3 = node->create_subscription( + "yaw_rate_offset_stop", 1000, yaw_rate_offset_stop_callback); + auto sub4 = + node->create_subscription("distance", 1000, distance_callback); + auto sub5 = node->create_subscription( + subscribe_localization_pose_topic_name, 1000, localization_pose_callback); + auto sub6 = node->create_subscription( + "angular_velocity_offset_stop", 1000, angular_velocity_offset_stop_callback); + auto sub7 = + node->create_subscription("imu/data_tf_converted", 1000, imu_callback); + + _pub1 = + node->create_publisher("acc_y_offset_additional_rolling", 1000); _pub2 = node->create_publisher("enable_additional_rolling", 1000); rclcpp::spin(node); diff --git a/eagleye_rt/src/heading_interpolate_node.cpp b/eagleye_rt/src/heading_interpolate_node.cpp index 64299f62..41226bf3 100644 --- a/eagleye_rt/src/heading_interpolate_node.cpp +++ b/eagleye_rt/src/heading_interpolate_node.cpp @@ -48,75 +48,73 @@ struct HeadingInterpolateStatus heading_interpolate_status; static bool _use_can_less_mode; -void velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) -{ +void velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) { velocity = *msg; } -void velocity_status_callback(const eagleye_msgs::msg::StatusStamped::ConstSharedPtr msg) -{ +void velocity_status_callback(const eagleye_msgs::msg::StatusStamped::ConstSharedPtr msg) { velocity_status = *msg; } -void yaw_rate_offset_stop_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) -{ +void yaw_rate_offset_stop_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) { yaw_rate_offset_stop = *msg; } -void yaw_rate_offset_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) -{ +void yaw_rate_offset_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) { yaw_rate_offset = *msg; } -void heading_callback(const eagleye_msgs::msg::Heading::ConstSharedPtr msg) -{ +void heading_callback(const eagleye_msgs::msg::Heading::ConstSharedPtr msg) { heading = *msg; } -void slip_angle_callback(const eagleye_msgs::msg::SlipAngle::ConstSharedPtr msg) -{ +void slip_angle_callback(const eagleye_msgs::msg::SlipAngle::ConstSharedPtr msg) { slip_angle = *msg; } -void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) -{ - if(_use_can_less_mode && !velocity_status.status.enabled_status) return; +void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) { + if (_use_can_less_mode && !velocity_status.status.enabled_status) + return; imu = *msg; heading_interpolate.header = msg->header; heading_interpolate.header.frame_id = "base_link"; - heading_interpolate_estimate(imu,velocity,yaw_rate_offset_stop,yaw_rate_offset,heading,slip_angle,heading_interpolate_parameter, - &heading_interpolate_status,&heading_interpolate); + heading_interpolate_estimate(imu, velocity, yaw_rate_offset_stop, yaw_rate_offset, heading, + slip_angle, heading_interpolate_parameter, + &heading_interpolate_status, &heading_interpolate); pub->publish(heading_interpolate); } -int main(int argc, char** argv) -{ +int main(int argc, char** argv) { rclcpp::init(argc, argv); auto node = rclcpp::Node::make_shared("eagleye_heading_interpolate"); std::string yaml_file; - node->declare_parameter("yaml_file",yaml_file); - node->get_parameter("yaml_file",yaml_file); + node->declare_parameter("yaml_file", yaml_file); + node->get_parameter("yaml_file", yaml_file); std::cout << "yaml_file: " << yaml_file << std::endl; - try - { + try { YAML::Node conf = YAML::LoadFile(yaml_file); - heading_interpolate_parameter.imu_rate = conf["/**"]["ros__parameters"]["common"]["imu_rate"].as(); - heading_interpolate_parameter.stop_judgment_threshold = conf["/**"]["ros__parameters"]["common"]["stop_judgment_threshold"].as(); - heading_interpolate_parameter.sync_search_period = conf["/**"]["ros__parameters"]["heading_interpolate"]["sync_search_period"].as(); - heading_interpolate_parameter.proc_noise = conf["/**"]["ros__parameters"]["heading_interpolate"]["proc_noise"].as(); + heading_interpolate_parameter.imu_rate = + conf["/**"]["ros__parameters"]["common"]["imu_rate"].as(); + heading_interpolate_parameter.stop_judgment_threshold = + conf["/**"]["ros__parameters"]["common"]["stop_judgment_threshold"].as(); + heading_interpolate_parameter.sync_search_period = + conf["/**"]["ros__parameters"]["heading_interpolate"]["sync_search_period"].as(); + heading_interpolate_parameter.proc_noise = + conf["/**"]["ros__parameters"]["heading_interpolate"]["proc_noise"].as(); std::cout << "imu_rate " << heading_interpolate_parameter.imu_rate << std::endl; - std::cout << "stop_judgment_threshold " << heading_interpolate_parameter.stop_judgment_threshold << std::endl; - std::cout << "sync_search_period " << heading_interpolate_parameter.sync_search_period << std::endl; + std::cout << "stop_judgment_threshold " << heading_interpolate_parameter.stop_judgment_threshold + << std::endl; + std::cout << "sync_search_period " << heading_interpolate_parameter.sync_search_period + << std::endl; std::cout << "proc_noise " << heading_interpolate_parameter.proc_noise << std::endl; - } - catch (YAML::Exception& e) - { - std::cerr << "\033[1;31mheading_interpolate Node YAML Error: " << e.msg << "\033[0m" << std::endl; + } catch (YAML::Exception& e) { + std::cerr << "\033[1;31mheading_interpolate Node YAML Error: " << e.msg << "\033[0m" + << std::endl; exit(3); } @@ -124,45 +122,42 @@ int main(int argc, char** argv) std::string subscribe_topic_name_1 = "/subscribe_topic_name/invalid_1"; std::string subscribe_topic_name_2 = "/subscribe_topic_name/invalid_2"; - if (argc > 2) - { - if (strcmp(argv[1], "1st") == 0) - { + if (argc > 2) { + if (strcmp(argv[1], "1st") == 0) { publish_topic_name = "heading_interpolate_1st"; subscribe_topic_name_1 = "yaw_rate_offset_stop"; subscribe_topic_name_2 = "heading_1st"; - } - else if (strcmp(argv[1], "2nd") == 0) - { + } else if (strcmp(argv[1], "2nd") == 0) { publish_topic_name = "heading_interpolate_2nd"; subscribe_topic_name_1 = "yaw_rate_offset_1st"; subscribe_topic_name_2 = "heading_2nd"; - } - else if (strcmp(argv[1], "3rd") == 0) - { + } else if (strcmp(argv[1], "3rd") == 0) { publish_topic_name = "heading_interpolate_3rd"; subscribe_topic_name_1 = "yaw_rate_offset_2nd"; subscribe_topic_name_2 = "heading_3rd"; - } - else - { - RCLCPP_ERROR(node->get_logger(),"Invalid argument"); + } else { + RCLCPP_ERROR(node->get_logger(), "Invalid argument"); rclcpp::shutdown(); } - } - else - { - RCLCPP_ERROR(node->get_logger(),"No arguments"); + } else { + RCLCPP_ERROR(node->get_logger(), "No arguments"); rclcpp::shutdown(); } - auto sub1 = node->create_subscription("imu/data_tf_converted", 1000, imu_callback); - auto sub2 = node->create_subscription("velocity", rclcpp::QoS(10), velocity_callback); - auto sub3 = node->create_subscription("velocity_status", rclcpp::QoS(10), velocity_status_callback); - auto sub4 = node->create_subscription("yaw_rate_offset_stop", rclcpp::QoS(10), yaw_rate_offset_stop_callback); - auto sub5 = node->create_subscription(subscribe_topic_name_1, 1000, yaw_rate_offset_callback); - auto sub6 = node->create_subscription(subscribe_topic_name_2, 1000, heading_callback); - auto sub7 = node->create_subscription("slip_angle", rclcpp::QoS(10), slip_angle_callback); + auto sub1 = + node->create_subscription("imu/data_tf_converted", 1000, imu_callback); + auto sub2 = node->create_subscription( + "velocity", rclcpp::QoS(10), velocity_callback); + auto sub3 = node->create_subscription( + "velocity_status", rclcpp::QoS(10), velocity_status_callback); + auto sub4 = node->create_subscription( + "yaw_rate_offset_stop", rclcpp::QoS(10), yaw_rate_offset_stop_callback); + auto sub5 = node->create_subscription( + subscribe_topic_name_1, 1000, yaw_rate_offset_callback); + auto sub6 = node->create_subscription(subscribe_topic_name_2, 1000, + heading_callback); + auto sub7 = node->create_subscription("slip_angle", rclcpp::QoS(10), + slip_angle_callback); pub = node->create_publisher(publish_topic_name, rclcpp::QoS(10)); rclcpp::spin(node); diff --git a/eagleye_rt/src/heading_node.cpp b/eagleye_rt/src/heading_node.cpp index 3543c877..3f636049 100644 --- a/eagleye_rt/src/heading_node.cpp +++ b/eagleye_rt/src/heading_node.cpp @@ -60,85 +60,71 @@ double yaw_rate_offset_stop_in_skip_mode = 0.0; std::string node_name = "eagleye_heading"; -void rtklib_nav_callback(const rtklib_msgs::msg::RtklibNav::ConstSharedPtr msg) -{ +void rtklib_nav_callback(const rtklib_msgs::msg::RtklibNav::ConstSharedPtr msg) { rtklib_nav = *msg; } -void velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) -{ +void velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) { velocity = *msg; // To avoid unnecessary buffering when it's just sitting there right after start-up, we're making it so it doesn't buffer. // Multi-antenna mode is an exception. - if (is_first_correction_velocity == false && msg->twist.linear.x > heading_parameter.moving_judgment_threshold) - { + if (is_first_correction_velocity == false && + msg->twist.linear.x > heading_parameter.moving_judgment_threshold) { is_first_correction_velocity = true; } } -void pose_callback(const geometry_msgs::msg::PoseStamped::ConstSharedPtr msg) -{ +void pose_callback(const geometry_msgs::msg::PoseStamped::ConstSharedPtr msg) { tf2::Quaternion orientation; tf2::fromMsg(msg->pose.orientation, orientation); double roll, pitch, yaw; tf2::Matrix3x3(orientation).getRPY(roll, pitch, yaw); - double heading = - yaw + (90* M_PI / 180); + double heading = -yaw + (90 * M_PI / 180); multi_antenna_heading.header = msg->header; multi_antenna_heading.heading_angle = heading; } -void velocity_status_callback(const eagleye_msgs::msg::StatusStamped::ConstSharedPtr msg) -{ +void velocity_status_callback(const eagleye_msgs::msg::StatusStamped::ConstSharedPtr msg) { velocity_status = *msg; } -void yaw_rate_offset_stop_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) -{ +void yaw_rate_offset_stop_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) { yaw_rate_offset_stop = *msg; } -void yaw_rate_offset_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) -{ +void yaw_rate_offset_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) { yaw_rate_offset = *msg; } -void slip_angle_callback(const eagleye_msgs::msg::SlipAngle::ConstSharedPtr msg) -{ +void slip_angle_callback(const eagleye_msgs::msg::SlipAngle::ConstSharedPtr msg) { slip_angle = *msg; } -void heading_interpolate_callback(const eagleye_msgs::msg::Heading::ConstSharedPtr msg) -{ +void heading_interpolate_callback(const eagleye_msgs::msg::Heading::ConstSharedPtr msg) { heading_interpolate = *msg; } -void rmc_callback(const nmea_msgs::msg::Gprmc::ConstSharedPtr msg) -{ +void rmc_callback(const nmea_msgs::msg::Gprmc::ConstSharedPtr msg) { nmea_rmc = *msg; } -void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) -{ - if (!is_first_correction_velocity) - { +void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) { + if (!is_first_correction_velocity) { RCLCPP_WARN(rclcpp::get_logger(node_name), "is_first_correction_velocity is false."); return; } - if(use_can_less_mode && !velocity_status.status.enabled_status) - { + if (use_can_less_mode && !velocity_status.status.enabled_status) { RCLCPP_WARN(rclcpp::get_logger(node_name), "velocity_status is not enabled."); return; } - if(!yaw_rate_offset_stop.status.enabled_status) - { - if(skip_static_initialization) - { + if (!yaw_rate_offset_stop.status.enabled_status) { + if (skip_static_initialization) { yaw_rate_offset_stop.yaw_rate_offset = yaw_rate_offset_stop_in_skip_mode; - } - else - { - RCLCPP_WARN(rclcpp::get_logger(node_name), "Heading estimation is not started because the stop calibration is not yet completed."); + } else { + RCLCPP_WARN( + rclcpp::get_logger(node_name), + "Heading estimation is not started because the stop calibration is not yet completed."); return; } } @@ -148,23 +134,23 @@ void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) heading.header.frame_id = "base_link"; bool use_rtklib_mode = use_gnss_mode == "rtklib" || use_gnss_mode == "RTKLIB"; bool use_nmea_mode = use_gnss_mode == "nmea" || use_gnss_mode == "NMEA"; - if (use_rtklib_mode && !use_multi_antenna_mode) // use RTKLIB mode - heading_estimate(rtklib_nav,imu,velocity,yaw_rate_offset_stop,yaw_rate_offset,slip_angle,heading_interpolate,heading_parameter,&heading_status,&heading); - else if (use_nmea_mode && !use_multi_antenna_mode) // use NMEA mode - heading_estimate(nmea_rmc,imu,velocity,yaw_rate_offset_stop,yaw_rate_offset,slip_angle,heading_interpolate,heading_parameter,&heading_status,&heading); + if (use_rtklib_mode && !use_multi_antenna_mode) // use RTKLIB mode + heading_estimate(rtklib_nav, imu, velocity, yaw_rate_offset_stop, yaw_rate_offset, slip_angle, + heading_interpolate, heading_parameter, &heading_status, &heading); + else if (use_nmea_mode && !use_multi_antenna_mode) // use NMEA mode + heading_estimate(nmea_rmc, imu, velocity, yaw_rate_offset_stop, yaw_rate_offset, slip_angle, + heading_interpolate, heading_parameter, &heading_status, &heading); else if (use_multi_antenna_mode) - heading_estimate(multi_antenna_heading, imu, velocity, yaw_rate_offset_stop, yaw_rate_offset, slip_angle, - heading_interpolate, heading_parameter, &heading_status, &heading); + heading_estimate(multi_antenna_heading, imu, velocity, yaw_rate_offset_stop, yaw_rate_offset, + slip_angle, heading_interpolate, heading_parameter, &heading_status, &heading); - if (heading.status.estimate_status == true || use_multi_antenna_mode) - { + if (heading.status.estimate_status == true || use_multi_antenna_mode) { pub->publish(heading); } heading.status.estimate_status = false; } -int main(int argc, char** argv) -{ +int main(int argc, char** argv) { rclcpp::init(argc, argv); auto node = rclcpp::Node::make_shared(node_name); @@ -172,55 +158,71 @@ int main(int argc, char** argv) std::string subscribe_rmc_topic_name = "gnss/rmc"; std::string yaml_file; - node->declare_parameter("yaml_file",yaml_file); - node->get_parameter("yaml_file",yaml_file); - node->declare_parameter("use_multi_antenna_mode",use_multi_antenna_mode); - node->get_parameter("use_multi_antenna_mode",use_multi_antenna_mode); + node->declare_parameter("yaml_file", yaml_file); + node->get_parameter("yaml_file", yaml_file); + node->declare_parameter("use_multi_antenna_mode", use_multi_antenna_mode); + node->get_parameter("use_multi_antenna_mode", use_multi_antenna_mode); std::cout << "yaml_file: " << yaml_file << std::endl; std::cout << "use_multi_antenna_mode: " << use_multi_antenna_mode << std::endl; - try - { + try { YAML::Node conf = YAML::LoadFile(yaml_file); use_gnss_mode = conf["/**"]["ros__parameters"]["use_gnss_mode"].as(); heading_parameter.imu_rate = conf["/**"]["ros__parameters"]["common"]["imu_rate"].as(); - heading_parameter.gnss_rate = conf["/**"]["ros__parameters"]["common"]["gnss_rate"].as(); - heading_parameter.stop_judgment_threshold = conf["/**"]["ros__parameters"]["common"]["stop_judgment_threshold"].as(); - heading_parameter.moving_judgment_threshold = conf["/**"]["ros__parameters"]["common"]["moving_judgment_threshold"].as(); - heading_parameter.estimated_minimum_interval = conf["/**"]["ros__parameters"]["heading"]["estimated_minimum_interval"].as(); - heading_parameter.estimated_maximum_interval = conf["/**"]["ros__parameters"]["heading"]["estimated_maximum_interval"].as(); - heading_parameter.gnss_receiving_threshold = conf["/**"]["ros__parameters"]["heading"]["gnss_receiving_threshold"].as(); - heading_parameter.outlier_threshold = conf["/**"]["ros__parameters"]["heading"]["outlier_threshold"].as(); - heading_parameter.outlier_ratio_threshold = conf["/**"]["ros__parameters"]["heading"]["outlier_ratio_threshold"].as(); - heading_parameter.curve_judgment_threshold = conf["/**"]["ros__parameters"]["heading"]["curve_judgment_threshold"].as(); + heading_parameter.gnss_rate = + conf["/**"]["ros__parameters"]["common"]["gnss_rate"].as(); + heading_parameter.stop_judgment_threshold = + conf["/**"]["ros__parameters"]["common"]["stop_judgment_threshold"].as(); + heading_parameter.moving_judgment_threshold = + conf["/**"]["ros__parameters"]["common"]["moving_judgment_threshold"].as(); + heading_parameter.estimated_minimum_interval = + conf["/**"]["ros__parameters"]["heading"]["estimated_minimum_interval"].as(); + heading_parameter.estimated_maximum_interval = + conf["/**"]["ros__parameters"]["heading"]["estimated_maximum_interval"].as(); + heading_parameter.gnss_receiving_threshold = + conf["/**"]["ros__parameters"]["heading"]["gnss_receiving_threshold"].as(); + heading_parameter.outlier_threshold = + conf["/**"]["ros__parameters"]["heading"]["outlier_threshold"].as(); + heading_parameter.outlier_ratio_threshold = + conf["/**"]["ros__parameters"]["heading"]["outlier_ratio_threshold"].as(); + heading_parameter.curve_judgment_threshold = + conf["/**"]["ros__parameters"]["heading"]["curve_judgment_threshold"].as(); heading_parameter.init_STD = conf["/**"]["ros__parameters"]["heading"]["init_STD"].as(); - skip_static_initialization = conf["/**"]["ros__parameters"]["heading"]["skip_static_initialization"].as(); - yaw_rate_offset_stop_in_skip_mode = conf["/**"]["ros__parameters"]["heading"]["yaw_rate_offset_stop_in_skip_mode"].as(); + skip_static_initialization = + conf["/**"]["ros__parameters"]["heading"]["skip_static_initialization"].as(); + yaw_rate_offset_stop_in_skip_mode = + conf["/**"]["ros__parameters"]["heading"]["yaw_rate_offset_stop_in_skip_mode"].as(); - std::cout<< "use_gnss_mode " << use_gnss_mode << std::endl; + std::cout << "use_gnss_mode " << use_gnss_mode << std::endl; - std::cout<< "subscribe_rtklib_nav_topic_name " << subscribe_rtklib_nav_topic_name << std::endl; - std::cout<< "subscribe_rmc_topic_name " << subscribe_rmc_topic_name << std::endl; + std::cout << "subscribe_rtklib_nav_topic_name " << subscribe_rtklib_nav_topic_name << std::endl; + std::cout << "subscribe_rmc_topic_name " << subscribe_rmc_topic_name << std::endl; std::cout << "imu_rate " << heading_parameter.imu_rate << std::endl; std::cout << "gnss_rate " << heading_parameter.gnss_rate << std::endl; - std::cout << "stop_judgment_threshold " << heading_parameter.stop_judgment_threshold << std::endl; - std::cout << "moving_judgment_threshold " << heading_parameter.moving_judgment_threshold << std::endl; - - std::cout << "estimated_minimum_interval " << heading_parameter.estimated_minimum_interval << std::endl; - std::cout << "estimated_maximum_interval " << heading_parameter.estimated_maximum_interval << std::endl; - std::cout << "gnss_receiving_threshold " << heading_parameter.gnss_receiving_threshold << std::endl; + std::cout << "stop_judgment_threshold " << heading_parameter.stop_judgment_threshold + << std::endl; + std::cout << "moving_judgment_threshold " << heading_parameter.moving_judgment_threshold + << std::endl; + + std::cout << "estimated_minimum_interval " << heading_parameter.estimated_minimum_interval + << std::endl; + std::cout << "estimated_maximum_interval " << heading_parameter.estimated_maximum_interval + << std::endl; + std::cout << "gnss_receiving_threshold " << heading_parameter.gnss_receiving_threshold + << std::endl; std::cout << "outlier_threshold " << heading_parameter.outlier_threshold << std::endl; - std::cout << "outlier_ratio_threshold " << heading_parameter.outlier_ratio_threshold << std::endl; - std::cout << "curve_judgment_threshold " << heading_parameter.curve_judgment_threshold << std::endl; + std::cout << "outlier_ratio_threshold " << heading_parameter.outlier_ratio_threshold + << std::endl; + std::cout << "curve_judgment_threshold " << heading_parameter.curve_judgment_threshold + << std::endl; std::cout << "init_STD " << heading_parameter.init_STD << std::endl; std::cout << "skip_static_initialization " << skip_static_initialization << std::endl; - std::cout << "yaw_rate_offset_stop_in_skip_mode " << yaw_rate_offset_stop_in_skip_mode << std::endl; - } - catch (YAML::Exception& e) - { + std::cout << "yaw_rate_offset_stop_in_skip_mode " << yaw_rate_offset_stop_in_skip_mode + << std::endl; + } catch (YAML::Exception& e) { std::cerr << "\033[1;31mheading Node YAML Error: " << e.msg << "\033[0m" << std::endl; exit(3); } @@ -229,58 +231,56 @@ int main(int argc, char** argv) std::string subscribe_topic_name = "/subscribe_topic_name/invalid"; std::string subscribe_topic_name2 = "/subscribe_topic_name2/invalid"; - if (argc > 2) - { - if (strcmp(argv[1], "1st") == 0) - { + if (argc > 2) { + if (strcmp(argv[1], "1st") == 0) { publish_topic_name = "heading_1st"; subscribe_topic_name = "yaw_rate_offset_stop"; subscribe_topic_name2 = "heading_interpolate_1st"; - } - else if (strcmp(argv[1], "2nd") == 0) - { + } else if (strcmp(argv[1], "2nd") == 0) { publish_topic_name = "heading_2nd"; subscribe_topic_name = "yaw_rate_offset_1st"; subscribe_topic_name2 = "heading_interpolate_2nd"; - } - else if (strcmp(argv[1], "3rd") == 0) - { + } else if (strcmp(argv[1], "3rd") == 0) { publish_topic_name = "heading_3rd"; subscribe_topic_name = "yaw_rate_offset_2nd"; subscribe_topic_name2 = "heading_interpolate_3rd"; - } - else - { - RCLCPP_ERROR(node->get_logger(),"Invalid argument"); + } else { + RCLCPP_ERROR(node->get_logger(), "Invalid argument"); rclcpp::shutdown(); } - } - else - { - RCLCPP_ERROR(node->get_logger(),"No arguments"); + } else { + RCLCPP_ERROR(node->get_logger(), "No arguments"); rclcpp::shutdown(); } - if(use_multi_antenna_mode) - { + if (use_multi_antenna_mode) { // When using multi-antenna mode, set is_first_correction_velocity to true even when stationary for the first time. is_first_correction_velocity = true; } - auto sub1 = node->create_subscription("imu/data_tf_converted", 1000, imu_callback); - auto sub2 = node->create_subscription(subscribe_rtklib_nav_topic_name, 1000, rtklib_nav_callback); - auto sub3 = node->create_subscription(subscribe_rmc_topic_name, 1000, rmc_callback); - auto sub4 = node->create_subscription("gnss_compass_pose", 1000, pose_callback); - auto sub5 = node->create_subscription("velocity", rclcpp::QoS(10), velocity_callback); - auto sub6 = node->create_subscription("velocity_status", rclcpp::QoS(10), velocity_status_callback); - auto sub7 = node->create_subscription("yaw_rate_offset_stop", rclcpp::QoS(10), yaw_rate_offset_stop_callback); - auto sub8 = node->create_subscription(subscribe_topic_name, 1000, yaw_rate_offset_callback); - auto sub9 = node->create_subscription("slip_angle", rclcpp::QoS(10), slip_angle_callback); - auto sub10 = node->create_subscription(subscribe_topic_name2 , 1000, heading_interpolate_callback); + auto sub1 = + node->create_subscription("imu/data_tf_converted", 1000, imu_callback); + auto sub2 = node->create_subscription( + subscribe_rtklib_nav_topic_name, 1000, rtklib_nav_callback); + auto sub3 = + node->create_subscription(subscribe_rmc_topic_name, 1000, rmc_callback); + auto sub4 = node->create_subscription("gnss_compass_pose", 1000, + pose_callback); + auto sub5 = node->create_subscription( + "velocity", rclcpp::QoS(10), velocity_callback); + auto sub6 = node->create_subscription( + "velocity_status", rclcpp::QoS(10), velocity_status_callback); + auto sub7 = node->create_subscription( + "yaw_rate_offset_stop", rclcpp::QoS(10), yaw_rate_offset_stop_callback); + auto sub8 = node->create_subscription( + subscribe_topic_name, 1000, yaw_rate_offset_callback); + auto sub9 = node->create_subscription("slip_angle", rclcpp::QoS(10), + slip_angle_callback); + auto sub10 = node->create_subscription(subscribe_topic_name2, 1000, + heading_interpolate_callback); pub = node->create_publisher(publish_topic_name, rclcpp::QoS(10)); rclcpp::spin(node); - return 0; } diff --git a/eagleye_rt/src/height_node.cpp b/eagleye_rt/src/height_node.cpp index ed17c374..b24446bb 100644 --- a/eagleye_rt/src/height_node.cpp +++ b/eagleye_rt/src/height_node.cpp @@ -28,54 +28,50 @@ * Author MapIV Takanose */ - #include "rclcpp/rclcpp.hpp" - #include "eagleye_coordinate/eagleye_coordinate.hpp" - #include "eagleye_navigation/eagleye_navigation.hpp" - - static sensor_msgs::msg::Imu imu; - static nmea_msgs::msg::Gpgga gga; - static geometry_msgs::msg::TwistStamped velocity; - static eagleye_msgs::msg::StatusStamped velocity_status; - static eagleye_msgs::msg::Distance distance; - - rclcpp::Publisher::SharedPtr pub1; - rclcpp::Publisher::SharedPtr pub2; - rclcpp::Publisher::SharedPtr pub3; - rclcpp::Publisher::SharedPtr pub4; - rclcpp::Publisher::SharedPtr pub5; - static eagleye_msgs::msg::Height height; - static eagleye_msgs::msg::Pitching pitching; - static eagleye_msgs::msg::AccXOffset acc_x_offset; - static eagleye_msgs::msg::AccXScaleFactor acc_x_scale_factor; - - struct HeightParameter height_parameter; - struct HeightStatus height_status; - - static bool use_can_less_mode; - -void gga_callback(const nmea_msgs::msg::Gpgga::ConstSharedPtr msg) -{ +#include "rclcpp/rclcpp.hpp" +#include "eagleye_coordinate/eagleye_coordinate.hpp" +#include "eagleye_navigation/eagleye_navigation.hpp" + +static sensor_msgs::msg::Imu imu; +static nmea_msgs::msg::Gpgga gga; +static geometry_msgs::msg::TwistStamped velocity; +static eagleye_msgs::msg::StatusStamped velocity_status; +static eagleye_msgs::msg::Distance distance; + +rclcpp::Publisher::SharedPtr pub1; +rclcpp::Publisher::SharedPtr pub2; +rclcpp::Publisher::SharedPtr pub3; +rclcpp::Publisher::SharedPtr pub4; +rclcpp::Publisher::SharedPtr pub5; +static eagleye_msgs::msg::Height height; +static eagleye_msgs::msg::Pitching pitching; +static eagleye_msgs::msg::AccXOffset acc_x_offset; +static eagleye_msgs::msg::AccXScaleFactor acc_x_scale_factor; + +struct HeightParameter height_parameter; +struct HeightStatus height_status; + +static bool use_can_less_mode; + +void gga_callback(const nmea_msgs::msg::Gpgga::ConstSharedPtr msg) { gga = *msg; } -void velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) -{ +void velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) { velocity = *msg; } -void velocity_status_callback(const eagleye_msgs::msg::StatusStamped::ConstSharedPtr msg) -{ +void velocity_status_callback(const eagleye_msgs::msg::StatusStamped::ConstSharedPtr msg) { velocity_status = *msg; } -void distance_callback(const eagleye_msgs::msg::Distance::ConstSharedPtr msg) -{ +void distance_callback(const eagleye_msgs::msg::Distance::ConstSharedPtr msg) { distance = *msg; } -void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) -{ - if(use_can_less_mode && !velocity_status.status.enabled_status) return; +void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) { + if (use_can_less_mode && !velocity_status.status.enabled_status) + return; imu = *msg; height.header = msg->header; @@ -84,14 +80,14 @@ void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) pitching.header.frame_id = "base_link"; acc_x_offset.header = msg->header; acc_x_scale_factor.header = msg->header; - pitching_estimate(imu,gga,velocity,distance,height_parameter,&height_status,&height,&pitching,&acc_x_offset,&acc_x_scale_factor); + pitching_estimate(imu, gga, velocity, distance, height_parameter, &height_status, &height, + &pitching, &acc_x_offset, &acc_x_scale_factor); pub1->publish(height); pub2->publish(pitching); pub3->publish(acc_x_offset); pub4->publish(acc_x_scale_factor); - if (height_status.flag_reliability == true) - { + if (height_status.flag_reliability == true) { pub5->publish(gga); } @@ -102,58 +98,71 @@ void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) acc_x_scale_factor.status.estimate_status = false; } -int main(int argc, char** argv) -{ +int main(int argc, char** argv) { rclcpp::init(argc, argv); auto node = rclcpp::Node::make_shared("eagleye_height"); std::string subscribe_gga_topic_name = "gnss/gga"; std::string yaml_file; - node->declare_parameter("yaml_file",yaml_file); - node->get_parameter("yaml_file",yaml_file); + node->declare_parameter("yaml_file", yaml_file); + node->get_parameter("yaml_file", yaml_file); std::cout << "yaml_file: " << yaml_file << std::endl; - try - { + try { YAML::Node conf = YAML::LoadFile(yaml_file); height_parameter.imu_rate = conf["/**"]["ros__parameters"]["common"]["imu_rate"].as(); height_parameter.gnss_rate = conf["/**"]["ros__parameters"]["common"]["gnss_rate"].as(); - height_parameter.moving_judgment_threshold = conf["/**"]["ros__parameters"]["common"]["moving_judgment_threshold"].as(); - - height_parameter.estimated_minimum_interval = conf["/**"]["ros__parameters"]["height"]["estimated_minimum_interval"].as(); - height_parameter.estimated_maximum_interval = conf["/**"]["ros__parameters"]["height"]["estimated_maximum_interval"].as(); - height_parameter.update_distance = conf["/**"]["ros__parameters"]["height"]["update_distance"].as(); - height_parameter.gnss_receiving_threshold = conf["/**"]["ros__parameters"]["height"]["gnss_receiving_threshold"].as(); - height_parameter.outlier_threshold = conf["/**"]["ros__parameters"]["height"]["outlier_threshold"].as(); - height_parameter.outlier_ratio_threshold = conf["/**"]["ros__parameters"]["height"]["outlier_ratio_threshold"].as(); - height_parameter.moving_average_time = conf["/**"]["ros__parameters"]["height"]["moving_average_time"].as(); + height_parameter.moving_judgment_threshold = + conf["/**"]["ros__parameters"]["common"]["moving_judgment_threshold"].as(); + + height_parameter.estimated_minimum_interval = + conf["/**"]["ros__parameters"]["height"]["estimated_minimum_interval"].as(); + height_parameter.estimated_maximum_interval = + conf["/**"]["ros__parameters"]["height"]["estimated_maximum_interval"].as(); + height_parameter.update_distance = + conf["/**"]["ros__parameters"]["height"]["update_distance"].as(); + height_parameter.gnss_receiving_threshold = + conf["/**"]["ros__parameters"]["height"]["gnss_receiving_threshold"].as(); + height_parameter.outlier_threshold = + conf["/**"]["ros__parameters"]["height"]["outlier_threshold"].as(); + height_parameter.outlier_ratio_threshold = + conf["/**"]["ros__parameters"]["height"]["outlier_ratio_threshold"].as(); + height_parameter.moving_average_time = + conf["/**"]["ros__parameters"]["height"]["moving_average_time"].as(); std::cout << "imu_rate " << height_parameter.imu_rate << std::endl; std::cout << "gnss_rate " << height_parameter.gnss_rate << std::endl; - std::cout << "moving_judgment_threshold " << height_parameter.moving_judgment_threshold << std::endl; + std::cout << "moving_judgment_threshold " << height_parameter.moving_judgment_threshold + << std::endl; - std::cout << "estimated_minimum_interval " << height_parameter.estimated_minimum_interval << std::endl; - std::cout << "estimated_maximum_interval " << height_parameter.estimated_maximum_interval << std::endl; + std::cout << "estimated_minimum_interval " << height_parameter.estimated_minimum_interval + << std::endl; + std::cout << "estimated_maximum_interval " << height_parameter.estimated_maximum_interval + << std::endl; std::cout << "update_distance " << height_parameter.update_distance << std::endl; - std::cout << "gnss_receiving_threshold " << height_parameter.gnss_receiving_threshold << std::endl; + std::cout << "gnss_receiving_threshold " << height_parameter.gnss_receiving_threshold + << std::endl; std::cout << "outlier_threshold " << height_parameter.outlier_threshold << std::endl; - std::cout << "outlier_ratio_threshold " << height_parameter.outlier_ratio_threshold << std::endl; + std::cout << "outlier_ratio_threshold " << height_parameter.outlier_ratio_threshold + << std::endl; std::cout << "moving_average_time " << height_parameter.moving_average_time << std::endl; - } - catch (YAML::Exception& e) - { + } catch (YAML::Exception& e) { std::cerr << "\033[1;31mheight Node YAML Error: " << e.msg << "\033[0m" << std::endl; exit(3); } - - auto sub1 = node->create_subscription("imu/data_tf_converted", 1000, imu_callback); - auto sub2 = node->create_subscription(subscribe_gga_topic_name, 1000, gga_callback); - auto sub3 = node->create_subscription("velocity", rclcpp::QoS(10), velocity_callback); - auto sub4 = node->create_subscription("velocity_status", rclcpp::QoS(10), velocity_status_callback); - auto sub5 = node->create_subscription("distance", rclcpp::QoS(10), distance_callback); + auto sub1 = + node->create_subscription("imu/data_tf_converted", 1000, imu_callback); + auto sub2 = + node->create_subscription(subscribe_gga_topic_name, 1000, gga_callback); + auto sub3 = node->create_subscription( + "velocity", rclcpp::QoS(10), velocity_callback); + auto sub4 = node->create_subscription( + "velocity_status", rclcpp::QoS(10), velocity_status_callback); + auto sub5 = node->create_subscription("distance", rclcpp::QoS(10), + distance_callback); std::string publish_height_topic_name = "height"; std::string publish_pitching_topic_name = "pitching"; @@ -163,8 +172,10 @@ int main(int argc, char** argv) pub1 = node->create_publisher(publish_height_topic_name, 1000); pub2 = node->create_publisher(publish_pitching_topic_name, 1000); - pub3 = node->create_publisher(publish_acc_x_offset_topic_name, 1000); - pub4 = node->create_publisher(publish_acc_x_scale_factor_topic_name, 1000); + pub3 = + node->create_publisher(publish_acc_x_offset_topic_name, 1000); + pub4 = node->create_publisher( + publish_acc_x_scale_factor_topic_name, 1000); pub5 = node->create_publisher(publish_nav_sat_gga_topic_name, 1000); rclcpp::spin(node); diff --git a/eagleye_rt/src/monitor_node.cpp b/eagleye_rt/src/monitor_node.cpp old mode 100755 new mode 100644 index 457550ff..3eae645d --- a/eagleye_rt/src/monitor_node.cpp +++ b/eagleye_rt/src/monitor_node.cpp @@ -102,145 +102,117 @@ int _th_num_continuous_abnormal_yaw_rate = 10; std::shared_ptr updater_; -void rtklib_nav_callback(const rtklib_msgs::msg::RtklibNav::ConstSharedPtr msg) -{ +void rtklib_nav_callback(const rtklib_msgs::msg::RtklibNav::ConstSharedPtr msg) { _rtklib_nav = *msg; } -void rtklib_fix_callback(const sensor_msgs::msg::NavSatFix::ConstSharedPtr msg) -{ +void rtklib_fix_callback(const sensor_msgs::msg::NavSatFix::ConstSharedPtr msg) { _rtklib_fix = *msg; } -void navsatfix_gga_callback(const nmea_msgs::msg::Gpgga::ConstSharedPtr msg) -{ +void navsatfix_gga_callback(const nmea_msgs::msg::Gpgga::ConstSharedPtr msg) { _gga = *msg; _gga_sub_status = true; } -void velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) -{ +void velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) { _velocity = *msg; } -void correction_velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) -{ +void correction_velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) { _correction_velocity = *msg; } -void velocity_scale_factor_callback(const eagleye_msgs::msg::VelocityScaleFactor::ConstSharedPtr msg) -{ +void velocity_scale_factor_callback( + const eagleye_msgs::msg::VelocityScaleFactor::ConstSharedPtr msg) { _velocity_scale_factor = *msg; } -void distance_callback(const eagleye_msgs::msg::Distance::ConstSharedPtr msg) -{ +void distance_callback(const eagleye_msgs::msg::Distance::ConstSharedPtr msg) { _distance = *msg; } -void heading_1st_callback(const eagleye_msgs::msg::Heading::ConstSharedPtr msg) -{ +void heading_1st_callback(const eagleye_msgs::msg::Heading::ConstSharedPtr msg) { _heading_1st = *msg; } -void heading_interpolate_1st_callback(const eagleye_msgs::msg::Heading::ConstSharedPtr msg) -{ +void heading_interpolate_1st_callback(const eagleye_msgs::msg::Heading::ConstSharedPtr msg) { _heading_interpolate_1st = *msg; } -void heading_2nd_callback(const eagleye_msgs::msg::Heading::ConstSharedPtr msg) -{ +void heading_2nd_callback(const eagleye_msgs::msg::Heading::ConstSharedPtr msg) { _heading_2nd = *msg; } -void heading_interpolate_2nd_callback(const eagleye_msgs::msg::Heading::ConstSharedPtr msg) -{ +void heading_interpolate_2nd_callback(const eagleye_msgs::msg::Heading::ConstSharedPtr msg) { _heading_interpolate_2nd = *msg; } -void heading_3rd_callback(const eagleye_msgs::msg::Heading::ConstSharedPtr msg) -{ +void heading_3rd_callback(const eagleye_msgs::msg::Heading::ConstSharedPtr msg) { _heading_3rd = *msg; } -void heading_interpolate_3rd_callback(const eagleye_msgs::msg::Heading::ConstSharedPtr msg) -{ +void heading_interpolate_3rd_callback(const eagleye_msgs::msg::Heading::ConstSharedPtr msg) { _heading_interpolate_3rd = *msg; } -void yaw_rate_offset_stop_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) -{ +void yaw_rate_offset_stop_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) { _yaw_rate_offset_stop = *msg; } -void yaw_rate_offset_1st_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) -{ +void yaw_rate_offset_1st_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) { _yaw_rate_offset_1st = *msg; } -void yaw_rate_offset_2nd_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) -{ +void yaw_rate_offset_2nd_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) { _yaw_rate_offset_2nd = *msg; } -void slip_angle_callback(const eagleye_msgs::msg::SlipAngle::ConstSharedPtr msg) -{ +void slip_angle_callback(const eagleye_msgs::msg::SlipAngle::ConstSharedPtr msg) { _slip_angle = *msg; } -void enu_relative_pos_callback(const eagleye_msgs::msg::Position::ConstSharedPtr msg) -{ +void enu_relative_pos_callback(const eagleye_msgs::msg::Position::ConstSharedPtr msg) { _enu_relative_pos = *msg; } -void enu_vel_callback(const geometry_msgs::msg::Vector3Stamped::ConstSharedPtr msg) -{ +void enu_vel_callback(const geometry_msgs::msg::Vector3Stamped::ConstSharedPtr msg) { _enu_vel = *msg; } -void enu_absolute_pos_callback(const eagleye_msgs::msg::Position::ConstSharedPtr msg) -{ +void enu_absolute_pos_callback(const eagleye_msgs::msg::Position::ConstSharedPtr msg) { _enu_absolute_pos = *msg; } -void height_callback(const eagleye_msgs::msg::Height::ConstSharedPtr msg) -{ +void height_callback(const eagleye_msgs::msg::Height::ConstSharedPtr msg) { _height = *msg; } -void pitching_callback(const eagleye_msgs::msg::Pitching::ConstSharedPtr msg) -{ +void pitching_callback(const eagleye_msgs::msg::Pitching::ConstSharedPtr msg) { _pitching = *msg; } -void rolling_callback(const eagleye_msgs::msg::Rolling::ConstSharedPtr msg) -{ +void rolling_callback(const eagleye_msgs::msg::Rolling::ConstSharedPtr msg) { _rolling = *msg; } -void enu_absolute_pos_interpolate_callback(const eagleye_msgs::msg::Position::ConstSharedPtr msg) -{ +void enu_absolute_pos_interpolate_callback(const eagleye_msgs::msg::Position::ConstSharedPtr msg) { _enu_absolute_pos_interpolate = *msg; } -void eagleye_fix_callback(const sensor_msgs::msg::NavSatFix::ConstSharedPtr msg) -{ +void eagleye_fix_callback(const sensor_msgs::msg::NavSatFix::ConstSharedPtr msg) { _eagleye_fix = *msg; } -void eagleye_twist_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) -{ +void eagleye_twist_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) { _eagleye_twist = *msg; } -void comparison_velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) -{ +void comparison_velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) { _comparison_velocity_ptr = msg; } - -void imu_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & stat) -{ +void imu_topic_checker(diagnostic_updater::DiagnosticStatusWrapper& stat) { rclcpp::Time ros_clock(_imu.header.stamp); auto imu_time = ros_clock.seconds(); @@ -255,8 +227,7 @@ void imu_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & stat) _imu_time_last = imu_time; stat.summary(level, msg); } -void rtklib_nav_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & stat) -{ +void rtklib_nav_topic_checker(diagnostic_updater::DiagnosticStatusWrapper& stat) { rclcpp::Time ros_clock(_rtklib_nav.header.stamp); auto rtklib_nav_time = ros_clock.seconds(); @@ -271,8 +242,7 @@ void rtklib_nav_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & stat _rtklib_nav_time_last = rtklib_nav_time; stat.summary(level, msg); } -void navsat_gga_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & stat) -{ +void navsat_gga_topic_checker(diagnostic_updater::DiagnosticStatusWrapper& stat) { rclcpp::Time ros_clock(_gga.header.stamp); auto navsat_gga_time = ros_clock.seconds(); @@ -287,8 +257,7 @@ void navsat_gga_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & stat _navsat_gga_time_last = navsat_gga_time; stat.summary(level, msg); } -void velocity_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & stat) -{ +void velocity_topic_checker(diagnostic_updater::DiagnosticStatusWrapper& stat) { rclcpp::Time ros_clock(_velocity.header.stamp); auto velocity_time = ros_clock.seconds(); @@ -303,8 +272,7 @@ void velocity_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & stat) _velocity_time_last = velocity_time; stat.summary(level, msg); } -void velocity_scale_factor_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & stat) -{ +void velocity_scale_factor_topic_checker(diagnostic_updater::DiagnosticStatusWrapper& stat) { rclcpp::Time ros_clock(_velocity_scale_factor.header.stamp); auto velocity_scale_factor_time = ros_clock.seconds(); @@ -314,23 +282,17 @@ void velocity_scale_factor_topic_checker(diagnostic_updater::DiagnosticStatusWra if (_velocity_scale_factor_time_last == velocity_scale_factor_time) { level = diagnostic_msgs::msg::DiagnosticStatus::WARN; msg = "not subscribed to topic"; - } - else if (!_velocity_scale_factor.status.enabled_status) { + } else if (!_velocity_scale_factor.status.enabled_status) { level = diagnostic_msgs::msg::DiagnosticStatus::WARN; msg = "estimates have not started yet"; - } - else if (_velocity_scale_factor.status.is_abnormal) { + } else if (_velocity_scale_factor.status.is_abnormal) { level = diagnostic_msgs::msg::DiagnosticStatus::ERROR; - if (_velocity_scale_factor.status.error_code == eagleye_msgs::msg::Status::NAN_OR_INFINITE) - { + if (_velocity_scale_factor.status.error_code == eagleye_msgs::msg::Status::NAN_OR_INFINITE) { msg = "Estimated velocity scale factor is NaN or infinete"; - } - else if (_velocity_scale_factor.status.error_code == eagleye_msgs::msg::Status::TOO_LARGE_OR_SMALL) - { + } else if (_velocity_scale_factor.status.error_code == + eagleye_msgs::msg::Status::TOO_LARGE_OR_SMALL) { msg = "Estimated velocity scale factor is too large or too small"; - } - else - { + } else { msg = "abnormal error of velocity_scale_factor"; } } @@ -338,23 +300,20 @@ void velocity_scale_factor_topic_checker(diagnostic_updater::DiagnosticStatusWra _velocity_scale_factor_time_last = velocity_scale_factor_time; stat.summary(level, msg); } -void distance_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & stat) -{ +void distance_topic_checker(diagnostic_updater::DiagnosticStatusWrapper& stat) { rclcpp::Time ros_clock(_distance.header.stamp); auto distance_time = ros_clock.seconds(); - + int8_t level = diagnostic_msgs::msg::DiagnosticStatus::OK; std::string msg = "OK"; if (_distance_time_last == distance_time) { level = diagnostic_msgs::msg::DiagnosticStatus::WARN; msg = "not subscribed to topic"; - } - else if (!std::isfinite(_distance.distance)) { + } else if (!std::isfinite(_distance.distance)) { level = diagnostic_msgs::msg::DiagnosticStatus::ERROR; msg = "invalid number"; - } - else if (!_distance.status.enabled_status) { + } else if (!_distance.status.enabled_status) { level = diagnostic_msgs::msg::DiagnosticStatus::WARN; msg = "estimates have not started yet"; } @@ -362,23 +321,20 @@ void distance_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & stat) _distance_time_last = distance_time; stat.summary(level, msg); } -void heading_1st_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & stat) -{ +void heading_1st_topic_checker(diagnostic_updater::DiagnosticStatusWrapper& stat) { rclcpp::Time ros_clock(_heading_1st.header.stamp); auto heading_1st_time = ros_clock.seconds(); - + int8_t level = diagnostic_msgs::msg::DiagnosticStatus::OK; std::string msg = "OK"; if (!std::isfinite(_heading_1st.heading_angle)) { level = diagnostic_msgs::msg::DiagnosticStatus::ERROR; msg = "invalid number"; - } - else if (_heading_1st_time_last - heading_1st_time > _th_gnss_deadrock_time) { + } else if (_heading_1st_time_last - heading_1st_time > _th_gnss_deadrock_time) { level = diagnostic_msgs::msg::DiagnosticStatus::WARN; msg = "not subscribed or deadlock of more than 10 seconds"; - } - else if (!_heading_1st.status.enabled_status) { + } else if (!_heading_1st.status.enabled_status) { level = diagnostic_msgs::msg::DiagnosticStatus::WARN; msg = "estimates have not started yet"; } @@ -386,23 +342,20 @@ void heading_1st_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & sta _heading_1st_time_last = heading_1st_time; stat.summary(level, msg); } -void heading_interpolate_1st_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & stat) -{ +void heading_interpolate_1st_topic_checker(diagnostic_updater::DiagnosticStatusWrapper& stat) { rclcpp::Time ros_clock(_heading_interpolate_1st.header.stamp); auto heading_interpolate_1st_time = ros_clock.seconds(); - + int8_t level = diagnostic_msgs::msg::DiagnosticStatus::OK; std::string msg = "OK"; if (_heading_interpolate_1st_time_last == heading_interpolate_1st_time) { level = diagnostic_msgs::msg::DiagnosticStatus::WARN; msg = "not subscribed to topic"; - } - else if (!std::isfinite(_heading_interpolate_1st.heading_angle)) { + } else if (!std::isfinite(_heading_interpolate_1st.heading_angle)) { level = diagnostic_msgs::msg::DiagnosticStatus::ERROR; msg = "invalid number"; - } - else if (!_heading_interpolate_1st.status.enabled_status) { + } else if (!_heading_interpolate_1st.status.enabled_status) { level = diagnostic_msgs::msg::DiagnosticStatus::WARN; msg = "estimates have not started yet"; } @@ -410,8 +363,7 @@ void heading_interpolate_1st_topic_checker(diagnostic_updater::DiagnosticStatusW _heading_interpolate_1st_time_last = heading_interpolate_1st_time; stat.summary(level, msg); } -void heading_2nd_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & stat) -{ +void heading_2nd_topic_checker(diagnostic_updater::DiagnosticStatusWrapper& stat) { rclcpp::Time ros_clock(_heading_2nd.header.stamp); auto heading_2nd_time = ros_clock.seconds(); @@ -421,12 +373,10 @@ void heading_2nd_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & sta if (!std::isfinite(_heading_2nd.heading_angle)) { level = diagnostic_msgs::msg::DiagnosticStatus::ERROR; msg = "invalid number"; - } - else if (_heading_2nd_time_last - heading_2nd_time > _th_gnss_deadrock_time) { + } else if (_heading_2nd_time_last - heading_2nd_time > _th_gnss_deadrock_time) { level = diagnostic_msgs::msg::DiagnosticStatus::WARN; msg = "not subscribed or deadlock of more than 10 seconds"; - } - else if (!_heading_2nd.status.enabled_status) { + } else if (!_heading_2nd.status.enabled_status) { level = diagnostic_msgs::msg::DiagnosticStatus::WARN; msg = "estimates have not started yet"; } @@ -434,8 +384,7 @@ void heading_2nd_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & sta _heading_2nd_time_last = heading_2nd_time; stat.summary(level, msg); } -void heading_interpolate_2nd_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & stat) -{ +void heading_interpolate_2nd_topic_checker(diagnostic_updater::DiagnosticStatusWrapper& stat) { rclcpp::Time ros_clock(_heading_interpolate_2nd.header.stamp); auto heading_interpolate_2nd_time = ros_clock.seconds(); @@ -445,12 +394,10 @@ void heading_interpolate_2nd_topic_checker(diagnostic_updater::DiagnosticStatusW if (_heading_interpolate_2nd_time_last == heading_interpolate_2nd_time) { level = diagnostic_msgs::msg::DiagnosticStatus::WARN; msg = "not subscribed to topic"; - } - else if (!std::isfinite(_heading_interpolate_2nd.heading_angle)) { + } else if (!std::isfinite(_heading_interpolate_2nd.heading_angle)) { level = diagnostic_msgs::msg::DiagnosticStatus::ERROR; msg = "invalid number"; - } - else if (!_heading_interpolate_2nd.status.enabled_status) { + } else if (!_heading_interpolate_2nd.status.enabled_status) { level = diagnostic_msgs::msg::DiagnosticStatus::WARN; msg = "estimates have not started yet"; } @@ -458,8 +405,7 @@ void heading_interpolate_2nd_topic_checker(diagnostic_updater::DiagnosticStatusW _heading_interpolate_2nd_time_last = heading_interpolate_2nd_time; stat.summary(level, msg); } -void heading_3rd_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & stat) -{ +void heading_3rd_topic_checker(diagnostic_updater::DiagnosticStatusWrapper& stat) { rclcpp::Time ros_clock(_heading_3rd.header.stamp); auto heading_3rd_time = ros_clock.seconds(); @@ -469,12 +415,10 @@ void heading_3rd_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & sta if (!std::isfinite(_heading_3rd.heading_angle)) { level = diagnostic_msgs::msg::DiagnosticStatus::ERROR; msg = "invalid number"; - } - else if (_heading_3rd_time_last - heading_3rd_time > _th_gnss_deadrock_time) { + } else if (_heading_3rd_time_last - heading_3rd_time > _th_gnss_deadrock_time) { level = diagnostic_msgs::msg::DiagnosticStatus::WARN; msg = "not subscribed or deadlock of more than 10 seconds"; - } - else if (!_heading_3rd.status.enabled_status) { + } else if (!_heading_3rd.status.enabled_status) { level = diagnostic_msgs::msg::DiagnosticStatus::WARN; msg = "estimates have not started yet"; } @@ -482,8 +426,7 @@ void heading_3rd_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & sta _heading_3rd_time_last = heading_3rd_time; stat.summary(level, msg); } -void heading_interpolate_3rd_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & stat) -{ +void heading_interpolate_3rd_topic_checker(diagnostic_updater::DiagnosticStatusWrapper& stat) { rclcpp::Time ros_clock(_heading_interpolate_3rd.header.stamp); auto heading_interpolate_3rd_time = ros_clock.seconds(); @@ -493,12 +436,10 @@ void heading_interpolate_3rd_topic_checker(diagnostic_updater::DiagnosticStatusW if (_heading_interpolate_3rd_time_last == heading_interpolate_3rd_time) { level = diagnostic_msgs::msg::DiagnosticStatus::WARN; msg = "not subscribed to topic"; - } - else if (!std::isfinite(_heading_interpolate_3rd.heading_angle)) { + } else if (!std::isfinite(_heading_interpolate_3rd.heading_angle)) { level = diagnostic_msgs::msg::DiagnosticStatus::ERROR; msg = "invalid number"; - } - else if (!_heading_interpolate_3rd.status.enabled_status) { + } else if (!_heading_interpolate_3rd.status.enabled_status) { level = diagnostic_msgs::msg::DiagnosticStatus::WARN; msg = "estimates have not started yet"; } @@ -506,8 +447,7 @@ void heading_interpolate_3rd_topic_checker(diagnostic_updater::DiagnosticStatusW _heading_interpolate_3rd_time_last = heading_interpolate_3rd_time; stat.summary(level, msg); } -void yaw_rate_offset_stop_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & stat) -{ +void yaw_rate_offset_stop_topic_checker(diagnostic_updater::DiagnosticStatusWrapper& stat) { rclcpp::Time ros_clock(_yaw_rate_offset_stop.header.stamp); auto yaw_rate_offset_stop_time = ros_clock.seconds(); @@ -517,19 +457,14 @@ void yaw_rate_offset_stop_topic_checker(diagnostic_updater::DiagnosticStatusWrap if (_yaw_rate_offset_stop_time_last == yaw_rate_offset_stop_time) { level = diagnostic_msgs::msg::DiagnosticStatus::WARN; msg = "not subscribed to topic"; - } - else if (!_yaw_rate_offset_stop.status.enabled_status) { + } else if (!_yaw_rate_offset_stop.status.enabled_status) { level = diagnostic_msgs::msg::DiagnosticStatus::WARN; msg = "estimates have not started yet"; - } - else if (_yaw_rate_offset_stop.status.is_abnormal) { + } else if (_yaw_rate_offset_stop.status.is_abnormal) { level = diagnostic_msgs::msg::DiagnosticStatus::ERROR; - if(_yaw_rate_offset_stop.status.error_code == eagleye_msgs::msg::Status::NAN_OR_INFINITE) - { + if (_yaw_rate_offset_stop.status.error_code == eagleye_msgs::msg::Status::NAN_OR_INFINITE) { msg = "estimate value is NaN or infinete"; - } - else - { + } else { msg = "abnormal error of yaw_rate_offset_stop"; } } @@ -537,8 +472,7 @@ void yaw_rate_offset_stop_topic_checker(diagnostic_updater::DiagnosticStatusWrap _yaw_rate_offset_stop_time_last = yaw_rate_offset_stop_time; stat.summary(level, msg); } -void yaw_rate_offset_1st_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & stat) -{ +void yaw_rate_offset_1st_topic_checker(diagnostic_updater::DiagnosticStatusWrapper& stat) { rclcpp::Time ros_clock(_yaw_rate_offset_1st.header.stamp); auto yaw_rate_offset_1st_time = ros_clock.seconds(); @@ -548,19 +482,14 @@ void yaw_rate_offset_1st_topic_checker(diagnostic_updater::DiagnosticStatusWrapp if (_yaw_rate_offset_1st_time_last == yaw_rate_offset_1st_time) { level = diagnostic_msgs::msg::DiagnosticStatus::WARN; msg = "not subscribed to topic"; - } - else if (!_yaw_rate_offset_1st.status.enabled_status) { + } else if (!_yaw_rate_offset_1st.status.enabled_status) { level = diagnostic_msgs::msg::DiagnosticStatus::WARN; msg = "estimates have not started yet"; - } - else if (_yaw_rate_offset_1st.status.is_abnormal) { + } else if (_yaw_rate_offset_1st.status.is_abnormal) { level = diagnostic_msgs::msg::DiagnosticStatus::ERROR; - if(_yaw_rate_offset_1st.status.error_code == eagleye_msgs::msg::Status::NAN_OR_INFINITE) - { + if (_yaw_rate_offset_1st.status.error_code == eagleye_msgs::msg::Status::NAN_OR_INFINITE) { msg = "estimate value is NaN or infinete"; - } - else - { + } else { msg = "abnormal error of yaw_rate_offset_1st"; } } @@ -568,8 +497,7 @@ void yaw_rate_offset_1st_topic_checker(diagnostic_updater::DiagnosticStatusWrapp _yaw_rate_offset_1st_time_last = yaw_rate_offset_1st_time; stat.summary(level, msg); } -void yaw_rate_offset_2nd_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & stat) -{ +void yaw_rate_offset_2nd_topic_checker(diagnostic_updater::DiagnosticStatusWrapper& stat) { rclcpp::Time ros_clock(_yaw_rate_offset_2nd.header.stamp); auto yaw_rate_offset_2nd_time = ros_clock.seconds(); @@ -579,19 +507,14 @@ void yaw_rate_offset_2nd_topic_checker(diagnostic_updater::DiagnosticStatusWrapp if (_yaw_rate_offset_2nd_time_last == yaw_rate_offset_2nd_time) { level = diagnostic_msgs::msg::DiagnosticStatus::WARN; msg = "not subscribed to topic"; - } - else if (!_yaw_rate_offset_2nd.status.enabled_status) { + } else if (!_yaw_rate_offset_2nd.status.enabled_status) { level = diagnostic_msgs::msg::DiagnosticStatus::WARN; msg = "estimates have not started yet"; - } - else if (_yaw_rate_offset_2nd.status.is_abnormal) { + } else if (_yaw_rate_offset_2nd.status.is_abnormal) { level = diagnostic_msgs::msg::DiagnosticStatus::ERROR; - if(_yaw_rate_offset_2nd.status.error_code == eagleye_msgs::msg::Status::NAN_OR_INFINITE) - { + if (_yaw_rate_offset_2nd.status.error_code == eagleye_msgs::msg::Status::NAN_OR_INFINITE) { msg = "estimate value is NaN or infinete"; - } - else - { + } else { msg = "abnormal error of yaw_rate_offset_2nd"; } } @@ -599,8 +522,7 @@ void yaw_rate_offset_2nd_topic_checker(diagnostic_updater::DiagnosticStatusWrapp _yaw_rate_offset_2nd_time_last = yaw_rate_offset_2nd_time; stat.summary(level, msg); } -void slip_angle_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & stat) -{ +void slip_angle_topic_checker(diagnostic_updater::DiagnosticStatusWrapper& stat) { rclcpp::Time ros_clock(_slip_angle.header.stamp); auto slip_angle_time = ros_clock.seconds(); @@ -610,16 +532,13 @@ void slip_angle_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & stat if (_slip_angle_time_last == slip_angle_time) { level = diagnostic_msgs::msg::DiagnosticStatus::WARN; msg = "not subscribed to topic"; - } - else if (!std::isfinite(_slip_angle.slip_angle)) { + } else if (!std::isfinite(_slip_angle.slip_angle)) { level = diagnostic_msgs::msg::DiagnosticStatus::ERROR; msg = "invalid number"; - } - else if (_slip_angle.coefficient == 0) { + } else if (_slip_angle.coefficient == 0) { level = diagnostic_msgs::msg::DiagnosticStatus::WARN; msg = "/slip_angle/manual_coefficient is not set"; - } - else if (!_slip_angle.status.enabled_status) { + } else if (!_slip_angle.status.enabled_status) { level = diagnostic_msgs::msg::DiagnosticStatus::WARN; msg = "estimates have not started yet"; } @@ -627,19 +546,18 @@ void slip_angle_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & stat _slip_angle_time_last = slip_angle_time; stat.summary(level, msg); } -void enu_vel_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & stat) -{ +void enu_vel_topic_checker(diagnostic_updater::DiagnosticStatusWrapper& stat) { rclcpp::Time ros_clock(_enu_vel.header.stamp); auto enu_vel_time = ros_clock.seconds(); int8_t level = diagnostic_msgs::msg::DiagnosticStatus::OK; std::string msg = "OK"; - if (!std::isfinite(_enu_vel.vector.x)||!std::isfinite(_enu_vel.vector.y)||!std::isfinite(_enu_vel.vector.z)) { + if (!std::isfinite(_enu_vel.vector.x) || !std::isfinite(_enu_vel.vector.y) || + !std::isfinite(_enu_vel.vector.z)) { level = diagnostic_msgs::msg::DiagnosticStatus::ERROR; msg = "invalid number"; - } - else if (_enu_vel_time_last == enu_vel_time) { + } else if (_enu_vel_time_last == enu_vel_time) { level = diagnostic_msgs::msg::DiagnosticStatus::WARN; msg = "not subscribed to topic"; } @@ -647,8 +565,7 @@ void enu_vel_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & stat) _enu_vel_time_last = enu_vel_time; stat.summary(level, msg); } -void height_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & stat) -{ +void height_topic_checker(diagnostic_updater::DiagnosticStatusWrapper& stat) { rclcpp::Time ros_clock(_height.header.stamp); auto height_time = ros_clock.seconds(); @@ -658,12 +575,10 @@ void height_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & stat) if (_height_time_last == height_time) { level = diagnostic_msgs::msg::DiagnosticStatus::WARN; msg = "not subscribed to topic"; - } - else if (!std::isfinite(_height.height)) { + } else if (!std::isfinite(_height.height)) { level = diagnostic_msgs::msg::DiagnosticStatus::ERROR; msg = "invalid number"; - } - else if (!_height.status.enabled_status) { + } else if (!_height.status.enabled_status) { level = diagnostic_msgs::msg::DiagnosticStatus::WARN; msg = "estimates have not started yet"; } @@ -671,8 +586,7 @@ void height_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & stat) _height_time_last = height_time; stat.summary(level, msg); } -void pitching_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & stat) -{ +void pitching_topic_checker(diagnostic_updater::DiagnosticStatusWrapper& stat) { rclcpp::Time ros_clock(_pitching.header.stamp); auto pitching_time = ros_clock.seconds(); @@ -682,12 +596,10 @@ void pitching_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & stat) if (_pitching_time_last == pitching_time) { level = diagnostic_msgs::msg::DiagnosticStatus::WARN; msg = "not subscribed to topic"; - } - else if (!std::isfinite(_pitching.pitching_angle)) { + } else if (!std::isfinite(_pitching.pitching_angle)) { level = diagnostic_msgs::msg::DiagnosticStatus::ERROR; msg = "invalid number"; - } - else if (!_pitching.status.enabled_status) { + } else if (!_pitching.status.enabled_status) { level = diagnostic_msgs::msg::DiagnosticStatus::WARN; msg = "estimates have not started yet"; } @@ -695,23 +607,21 @@ void pitching_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & stat) _pitching_time_last = pitching_time; stat.summary(level, msg); } -void enu_absolute_pos_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & stat) -{ +void enu_absolute_pos_topic_checker(diagnostic_updater::DiagnosticStatusWrapper& stat) { rclcpp::Time ros_clock(_enu_absolute_pos.header.stamp); auto enu_absolute_pos_time = ros_clock.seconds(); int8_t level = diagnostic_msgs::msg::DiagnosticStatus::OK; std::string msg = "OK"; - if (!std::isfinite(_enu_absolute_pos.enu_pos.x)||!std::isfinite(_enu_absolute_pos.enu_pos.y)||!std::isfinite(_enu_absolute_pos.enu_pos.z)) { + if (!std::isfinite(_enu_absolute_pos.enu_pos.x) || !std::isfinite(_enu_absolute_pos.enu_pos.y) || + !std::isfinite(_enu_absolute_pos.enu_pos.z)) { level = diagnostic_msgs::msg::DiagnosticStatus::ERROR; msg = "invalid number"; - } - else if (_enu_absolute_pos_time_last - enu_absolute_pos_time > _th_gnss_deadrock_time) { + } else if (_enu_absolute_pos_time_last - enu_absolute_pos_time > _th_gnss_deadrock_time) { level = diagnostic_msgs::msg::DiagnosticStatus::WARN; msg = "not subscribed or deadlock of more than 10 seconds"; - } - else if (!_enu_absolute_pos.status.enabled_status) { + } else if (!_enu_absolute_pos.status.enabled_status) { level = diagnostic_msgs::msg::DiagnosticStatus::WARN; msg = "estimates have not started yet"; } @@ -719,23 +629,22 @@ void enu_absolute_pos_topic_checker(diagnostic_updater::DiagnosticStatusWrapper _enu_absolute_pos_time_last = enu_absolute_pos_time; stat.summary(level, msg); } -void enu_absolute_pos_interpolate_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & stat) -{ +void enu_absolute_pos_interpolate_topic_checker(diagnostic_updater::DiagnosticStatusWrapper& stat) { rclcpp::Time ros_clock(_enu_absolute_pos_interpolate.header.stamp); auto enu_absolute_pos_interpolate_time = ros_clock.seconds(); int8_t level = diagnostic_msgs::msg::DiagnosticStatus::OK; std::string msg = "OK"; - if (!std::isfinite(_enu_absolute_pos_interpolate.enu_pos.x)||!std::isfinite(_enu_absolute_pos_interpolate.enu_pos.y)||!std::isfinite(_enu_absolute_pos_interpolate.enu_pos.z)) { + if (!std::isfinite(_enu_absolute_pos_interpolate.enu_pos.x) || + !std::isfinite(_enu_absolute_pos_interpolate.enu_pos.y) || + !std::isfinite(_enu_absolute_pos_interpolate.enu_pos.z)) { level = diagnostic_msgs::msg::DiagnosticStatus::ERROR; msg = "invalid number"; - } - else if (_enu_absolute_pos_interpolate_time_last == enu_absolute_pos_interpolate_time) { + } else if (_enu_absolute_pos_interpolate_time_last == enu_absolute_pos_interpolate_time) { level = diagnostic_msgs::msg::DiagnosticStatus::WARN; msg = "not subscribed or deadlock of more than 10 seconds"; - } - else if (!_enu_absolute_pos_interpolate.status.enabled_status) { + } else if (!_enu_absolute_pos_interpolate.status.enabled_status) { level = diagnostic_msgs::msg::DiagnosticStatus::WARN; msg = "estimates have not started yet"; } @@ -743,8 +652,7 @@ void enu_absolute_pos_interpolate_topic_checker(diagnostic_updater::DiagnosticSt _enu_absolute_pos_interpolate_time_last = enu_absolute_pos_interpolate_time; stat.summary(level, msg); } -void twist_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & stat) -{ +void twist_topic_checker(diagnostic_updater::DiagnosticStatusWrapper& stat) { rclcpp::Time ros_clock(_eagleye_twist.header.stamp); auto eagleye_twist_time = ros_clock.seconds(); @@ -754,9 +662,12 @@ void twist_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & stat) if (_eagleye_twist_time_last == eagleye_twist_time) { level = diagnostic_msgs::msg::DiagnosticStatus::ERROR; msg = "not subscribed or deadlock of more than 10 seconds"; - } - else if (!std::isfinite(_eagleye_twist.twist.linear.x)||!std::isfinite(_eagleye_twist.twist.linear.y)||!std::isfinite(_eagleye_twist.twist.linear.z) - ||!std::isfinite(_eagleye_twist.twist.angular.x)||!std::isfinite(_eagleye_twist.twist.angular.y)||!std::isfinite(_eagleye_twist.twist.angular.z)) { + } else if (!std::isfinite(_eagleye_twist.twist.linear.x) || + !std::isfinite(_eagleye_twist.twist.linear.y) || + !std::isfinite(_eagleye_twist.twist.linear.z) || + !std::isfinite(_eagleye_twist.twist.angular.x) || + !std::isfinite(_eagleye_twist.twist.angular.y) || + !std::isfinite(_eagleye_twist.twist.angular.z)) { level = diagnostic_msgs::msg::DiagnosticStatus::ERROR; msg = "invalid number"; } @@ -765,23 +676,19 @@ void twist_topic_checker(diagnostic_updater::DiagnosticStatusWrapper & stat) stat.summary(level, msg); } -void imu_comparison_checker(diagnostic_updater::DiagnosticStatusWrapper & stat) -{ - if(_comparison_velocity_ptr == nullptr) - { +void imu_comparison_checker(diagnostic_updater::DiagnosticStatusWrapper& stat) { + if (_comparison_velocity_ptr == nullptr) { return; } int8_t level = diagnostic_msgs::msg::DiagnosticStatus::OK; std::string msg = "OK"; - if(_use_compare_yaw_rate && _th_diff_rad_per_sec < - std::abs(_corrected_imu.angular_velocity.z - _comparison_velocity_ptr->twist.angular.z)) - { + if (_use_compare_yaw_rate && + _th_diff_rad_per_sec < + std::abs(_corrected_imu.angular_velocity.z - _comparison_velocity_ptr->twist.angular.z)) { _num_continuous_abnormal_yaw_rate++; - } - else - { + } else { _num_continuous_abnormal_yaw_rate = 0; } @@ -792,104 +699,146 @@ void imu_comparison_checker(diagnostic_updater::DiagnosticStatusWrapper & stat) stat.summary(level, msg); } -void printStatus(void) -{ +void printStatus(void) { std::cout << std::endl; - std::cout<<"\033[1;33m Eagleye status \033[m"<::max_digits10) << _imu.angular_velocity.x << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _imu.angular_velocity.y << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _imu.angular_velocity.z << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _imu.linear_acceleration.x << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _imu.linear_acceleration.y << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _imu.linear_acceleration.z << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _rtklib_nav.tow << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _rtklib_nav.ecef_pos.x << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _rtklib_nav.ecef_pos.y << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _rtklib_nav.ecef_pos.z << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _rtklib_nav.ecef_vel.x << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _rtklib_nav.ecef_vel.y << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _rtklib_nav.ecef_vel.z << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << int(_rtklib_nav.status.status.status) << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _rtklib_nav.status.status.service << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _rtklib_nav.status.latitude << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _rtklib_nav.status.longitude << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _rtklib_nav.status.altitude << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _velocity.twist.linear.x << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _velocity.twist.linear.y << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _velocity.twist.linear.z << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _velocity.twist.angular.x << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _velocity.twist.angular.y << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _velocity.twist.angular.z << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _velocity_scale_factor.scale_factor << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _correction_velocity.twist.linear.x << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _correction_velocity.twist.linear.y << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _correction_velocity.twist.linear.z << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _correction_velocity.twist.angular.x << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _correction_velocity.twist.angular.y << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _correction_velocity.twist.angular.z << ","; - output_log_file << (_velocity_scale_factor.status.enabled_status ? "1" : "0") << ","; - output_log_file << (_velocity_scale_factor.status.estimate_status ? "1" : "0") << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _distance.distance << ","; - output_log_file << (_distance.status.enabled_status ? "1" : "0") << ","; - output_log_file << (_distance.status.estimate_status ? "1" : "0") << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _heading_1st.heading_angle << ","; - output_log_file << (_heading_1st.status.enabled_status ? "1" : "0") << ","; - output_log_file << (_heading_1st.status.estimate_status ? "1" : "0") << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _heading_interpolate_1st.heading_angle << ","; - output_log_file << (_heading_interpolate_1st.status.enabled_status ? "1" : "0") << ","; - output_log_file << (_heading_interpolate_1st.status.estimate_status ? "1" : "0") << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _heading_2nd.heading_angle << ","; - output_log_file << (_heading_2nd.status.enabled_status ? "1" : "0") << ","; - output_log_file << (_heading_2nd.status.estimate_status ? "1" : "0") << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _heading_interpolate_2nd.heading_angle << ","; - output_log_file << (_heading_interpolate_2nd.status.enabled_status ? "1" : "0") << ","; - output_log_file << (_heading_interpolate_2nd.status.estimate_status ? "1" : "0") << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _heading_3rd.heading_angle << ","; - output_log_file << (_heading_3rd.status.enabled_status ? "1" : "0") << ","; - output_log_file << (_heading_3rd.status.estimate_status ? "1" : "0") << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _heading_interpolate_3rd.heading_angle << ","; - output_log_file << (_heading_interpolate_3rd.status.enabled_status ? "1" : "0") << ","; - output_log_file << (_heading_interpolate_3rd.status.estimate_status ? "1" : "0") << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _yaw_rate_offset_stop.yaw_rate_offset << ","; - output_log_file << (_yaw_rate_offset_stop.status.enabled_status ? "1" : "0") << ","; - output_log_file << (_yaw_rate_offset_stop.status.estimate_status ? "1" : "0") << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _yaw_rate_offset_1st.yaw_rate_offset << ","; - output_log_file << (_yaw_rate_offset_1st.status.enabled_status ? "1" : "0") << ","; - output_log_file << (_yaw_rate_offset_1st.status.estimate_status ? "1" : "0") << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _yaw_rate_offset_2nd.yaw_rate_offset << ","; - output_log_file << (_yaw_rate_offset_2nd.status.enabled_status ? "1" : "0") << ","; - output_log_file << (_yaw_rate_offset_2nd.status.estimate_status ? "1" : "0") << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _slip_angle.coefficient << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _slip_angle.slip_angle << ","; - output_log_file << (_slip_angle.status.enabled_status ? "1" : "0") << ","; - output_log_file << (_slip_angle.status.estimate_status ? "1" : "0") << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _enu_vel.vector.x << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _enu_vel.vector.y << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _enu_vel.vector.z << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _enu_absolute_pos.enu_pos.x << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _enu_absolute_pos.enu_pos.y << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _enu_absolute_pos.enu_pos.z << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _enu_absolute_pos.ecef_base_pos.x << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _enu_absolute_pos.ecef_base_pos.y << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _enu_absolute_pos.ecef_base_pos.z << ","; - output_log_file << (_enu_absolute_pos.status.enabled_status ? "1" : "0") << ","; - output_log_file << (_enu_absolute_pos.status.estimate_status ? "1" : "0") << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _enu_absolute_pos_interpolate.enu_pos.x << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _enu_absolute_pos_interpolate.enu_pos.y << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _enu_absolute_pos_interpolate.enu_pos.z << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _enu_absolute_pos_interpolate.ecef_base_pos.x << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _enu_absolute_pos_interpolate.ecef_base_pos.y << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _enu_absolute_pos_interpolate.ecef_base_pos.z << ","; - output_log_file << (_enu_absolute_pos_interpolate.status.enabled_status ? "1" : "0") << ","; - output_log_file << (_enu_absolute_pos_interpolate.status.estimate_status ? "1" : "0") << ","; - // output_log_file << std::setprecision(std::numeric_limits::max_digits10) << angular_velocity_offset_stop.rollrate_offset << ","; - // output_log_file << std::setprecision(std::numeric_limits::max_digits10) << angular_velocity_offset_stop.pitch_rate_offset << ","; - // output_log_file << std::setprecision(std::numeric_limits::max_digits10) << angular_velocity_offset_stop.yaw_rate_offset << ","; - // output_log_file << (angular_velocity_offset_stop.status.enabled_status ? "1" : "0") << ","; - // output_log_file << (angular_velocity_offset_stop.status.estimate_status ? "1" : "0") << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _height.height << ","; - output_log_file << (_height.status.enabled_status ? "1" : "0") << ","; - output_log_file << (_height.status.estimate_status ? "1" : "0") << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _pitching.pitching_angle << ","; - output_log_file << (_pitching.status.enabled_status ? "1" : "0") << ","; - output_log_file << (_pitching.status.estimate_status ? "1" : "0") << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << 0 << ","; // acc_x_offset - output_log_file << 0 << ","; // acc_x_offset.status.enabled_status - output_log_file << 0 << ","; // acc_x_offset.status.estimate_status - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << 0 << ","; // acc_x_scale_factor.acc_x_scale_factor - output_log_file << 0 << ","; // acc_x_scale_factor.status.enabled_status - output_log_file << 0 << ","; // acc_x_scale_factor.status.estimate_status - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _rolling.rolling_angle << ","; - output_log_file << (_rolling.status.enabled_status ? "1" : "0") << ","; - output_log_file << (_rolling.status.estimate_status ? "1" : "0") << ","; - rclcpp::Time gga_clock(_gga.header.stamp); - double gga_time = gga_clock.seconds(); - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << gga_time << ","; //timestamp - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _gga.lat << ","; //gga_llh.latitude - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _gga.lon << ","; //gga_llh.longitude - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _gga.alt + _gga.undulation<< ","; //gga_llh.altitude - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << int(_gga.gps_qual) << ","; //gga_llh.gps_qual - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _eagleye_fix.latitude << ","; //eagleye_pp_llh.latitude - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _eagleye_fix.longitude << ","; //eagleye_pp_llh.longitude - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _eagleye_fix.altitude << ","; //eagleye_pp_llh.altitude - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << 0 << ","; //eagleye_pp_llh.orientation_covariance[0] - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << 0 << ","; //eagleye_pp_llh.orientation_covariance[1] - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << 0 << ","; //eagleye_pp_llh.orientation_covariance[2] - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << 0 << ","; //eagleye_pp_llh.orientation_covariance[3] - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << 0 << ","; //eagleye_pp_llh.orientation_covariance[4] - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << 0 << ","; //eagleye_pp_llh.orientation_covariance[5] - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << 0 << ","; //eagleye_pp_llh.orientation_covariance[6] - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << 0 << ","; //eagleye_pp_llh.orientation_covariance[7] - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << 0 << ","; //eagleye_pp_llh.orientation_covariance[8] - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << 0 << ","; //eagleye_pp_llh.status - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << 0 << ","; //eagleye_pp_llh.status - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _enu_relative_pos.enu_pos.x << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _enu_relative_pos.enu_pos.y << ","; - output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _enu_relative_pos.enu_pos.z << ","; - output_log_file << (_enu_relative_pos.status.enabled_status ? "1" : "0"); - output_log_file << "\n"; + _log_header_make = true; + } else { + std::ofstream output_log_file(_output_log_dir, std::ios_base::app); + rclcpp::Time imu_clock(_imu.header.stamp); + long double nano_sec = imu_clock.nanoseconds(); + long double sec_digits = std::pow(10, 9); + long double imu_time = nano_sec / sec_digits; + output_log_file << std::fixed << std::setprecision(9) << imu_time << ","; // timestamp + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _imu.angular_velocity.x << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _imu.angular_velocity.y << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _imu.angular_velocity.z << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _imu.linear_acceleration.x << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _imu.linear_acceleration.y << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _imu.linear_acceleration.z << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _rtklib_nav.tow + << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _rtklib_nav.ecef_pos.x << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _rtklib_nav.ecef_pos.y << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _rtklib_nav.ecef_pos.z << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _rtklib_nav.ecef_vel.x << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _rtklib_nav.ecef_vel.y << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _rtklib_nav.ecef_vel.z << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << int(_rtklib_nav.status.status.status) << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _rtklib_nav.status.status.service << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _rtklib_nav.status.latitude << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _rtklib_nav.status.longitude << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _rtklib_nav.status.altitude << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _velocity.twist.linear.x << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _velocity.twist.linear.y << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _velocity.twist.linear.z << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _velocity.twist.angular.x << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _velocity.twist.angular.y << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _velocity.twist.angular.z << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _velocity_scale_factor.scale_factor << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _correction_velocity.twist.linear.x << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _correction_velocity.twist.linear.y << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _correction_velocity.twist.linear.z << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _correction_velocity.twist.angular.x << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _correction_velocity.twist.angular.y << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _correction_velocity.twist.angular.z << ","; + output_log_file << (_velocity_scale_factor.status.enabled_status ? "1" : "0") << ","; + output_log_file << (_velocity_scale_factor.status.estimate_status ? "1" : "0") << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _distance.distance << ","; + output_log_file << (_distance.status.enabled_status ? "1" : "0") << ","; + output_log_file << (_distance.status.estimate_status ? "1" : "0") << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _heading_1st.heading_angle << ","; + output_log_file << (_heading_1st.status.enabled_status ? "1" : "0") << ","; + output_log_file << (_heading_1st.status.estimate_status ? "1" : "0") << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _heading_interpolate_1st.heading_angle << ","; + output_log_file << (_heading_interpolate_1st.status.enabled_status ? "1" : "0") << ","; + output_log_file << (_heading_interpolate_1st.status.estimate_status ? "1" : "0") << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _heading_2nd.heading_angle << ","; + output_log_file << (_heading_2nd.status.enabled_status ? "1" : "0") << ","; + output_log_file << (_heading_2nd.status.estimate_status ? "1" : "0") << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _heading_interpolate_2nd.heading_angle << ","; + output_log_file << (_heading_interpolate_2nd.status.enabled_status ? "1" : "0") << ","; + output_log_file << (_heading_interpolate_2nd.status.estimate_status ? "1" : "0") << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _heading_3rd.heading_angle << ","; + output_log_file << (_heading_3rd.status.enabled_status ? "1" : "0") << ","; + output_log_file << (_heading_3rd.status.estimate_status ? "1" : "0") << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _heading_interpolate_3rd.heading_angle << ","; + output_log_file << (_heading_interpolate_3rd.status.enabled_status ? "1" : "0") << ","; + output_log_file << (_heading_interpolate_3rd.status.estimate_status ? "1" : "0") << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _yaw_rate_offset_stop.yaw_rate_offset << ","; + output_log_file << (_yaw_rate_offset_stop.status.enabled_status ? "1" : "0") << ","; + output_log_file << (_yaw_rate_offset_stop.status.estimate_status ? "1" : "0") << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _yaw_rate_offset_1st.yaw_rate_offset << ","; + output_log_file << (_yaw_rate_offset_1st.status.enabled_status ? "1" : "0") << ","; + output_log_file << (_yaw_rate_offset_1st.status.estimate_status ? "1" : "0") << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _yaw_rate_offset_2nd.yaw_rate_offset << ","; + output_log_file << (_yaw_rate_offset_2nd.status.enabled_status ? "1" : "0") << ","; + output_log_file << (_yaw_rate_offset_2nd.status.estimate_status ? "1" : "0") << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _slip_angle.coefficient << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _slip_angle.slip_angle << ","; + output_log_file << (_slip_angle.status.enabled_status ? "1" : "0") << ","; + output_log_file << (_slip_angle.status.estimate_status ? "1" : "0") << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _enu_vel.vector.x << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _enu_vel.vector.y << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _enu_vel.vector.z << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _enu_absolute_pos.enu_pos.x << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _enu_absolute_pos.enu_pos.y << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _enu_absolute_pos.enu_pos.z << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _enu_absolute_pos.ecef_base_pos.x << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _enu_absolute_pos.ecef_base_pos.y << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _enu_absolute_pos.ecef_base_pos.z << ","; + output_log_file << (_enu_absolute_pos.status.enabled_status ? "1" : "0") << ","; + output_log_file << (_enu_absolute_pos.status.estimate_status ? "1" : "0") << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _enu_absolute_pos_interpolate.enu_pos.x << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _enu_absolute_pos_interpolate.enu_pos.y << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _enu_absolute_pos_interpolate.enu_pos.z << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _enu_absolute_pos_interpolate.ecef_base_pos.x << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _enu_absolute_pos_interpolate.ecef_base_pos.y << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _enu_absolute_pos_interpolate.ecef_base_pos.z << ","; + output_log_file << (_enu_absolute_pos_interpolate.status.enabled_status ? "1" : "0") << ","; + output_log_file << (_enu_absolute_pos_interpolate.status.estimate_status ? "1" : "0") << ","; + // output_log_file << std::setprecision(std::numeric_limits::max_digits10) << angular_velocity_offset_stop.rollrate_offset << ","; + // output_log_file << std::setprecision(std::numeric_limits::max_digits10) << angular_velocity_offset_stop.pitch_rate_offset << ","; + // output_log_file << std::setprecision(std::numeric_limits::max_digits10) << angular_velocity_offset_stop.yaw_rate_offset << ","; + // output_log_file << (angular_velocity_offset_stop.status.enabled_status ? "1" : "0") << ","; + // output_log_file << (angular_velocity_offset_stop.status.estimate_status ? "1" : "0") << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _height.height << ","; + output_log_file << (_height.status.enabled_status ? "1" : "0") << ","; + output_log_file << (_height.status.estimate_status ? "1" : "0") << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _pitching.pitching_angle << ","; + output_log_file << (_pitching.status.enabled_status ? "1" : "0") << ","; + output_log_file << (_pitching.status.estimate_status ? "1" : "0") << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) << 0 + << ","; // acc_x_offset + output_log_file << 0 << ","; // acc_x_offset.status.enabled_status + output_log_file << 0 << ","; // acc_x_offset.status.estimate_status + output_log_file << std::setprecision(std::numeric_limits::max_digits10) << 0 + << ","; // acc_x_scale_factor.acc_x_scale_factor + output_log_file << 0 << ","; // acc_x_scale_factor.status.enabled_status + output_log_file << 0 << ","; // acc_x_scale_factor.status.estimate_status + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _rolling.rolling_angle << ","; + output_log_file << (_rolling.status.enabled_status ? "1" : "0") << ","; + output_log_file << (_rolling.status.estimate_status ? "1" : "0") << ","; + rclcpp::Time gga_clock(_gga.header.stamp); + double gga_time = gga_clock.seconds(); + output_log_file << std::setprecision(std::numeric_limits::max_digits10) << gga_time + << ","; //timestamp + output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _gga.lat + << ","; //gga_llh.latitude + output_log_file << std::setprecision(std::numeric_limits::max_digits10) << _gga.lon + << ","; //gga_llh.longitude + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _gga.alt + _gga.undulation << ","; //gga_llh.altitude + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << int(_gga.gps_qual) << ","; //gga_llh.gps_qual + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _eagleye_fix.latitude << ","; //eagleye_pp_llh.latitude + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _eagleye_fix.longitude << ","; //eagleye_pp_llh.longitude + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _eagleye_fix.altitude << ","; //eagleye_pp_llh.altitude + output_log_file << std::setprecision(std::numeric_limits::max_digits10) << 0 + << ","; //eagleye_pp_llh.orientation_covariance[0] + output_log_file << std::setprecision(std::numeric_limits::max_digits10) << 0 + << ","; //eagleye_pp_llh.orientation_covariance[1] + output_log_file << std::setprecision(std::numeric_limits::max_digits10) << 0 + << ","; //eagleye_pp_llh.orientation_covariance[2] + output_log_file << std::setprecision(std::numeric_limits::max_digits10) << 0 + << ","; //eagleye_pp_llh.orientation_covariance[3] + output_log_file << std::setprecision(std::numeric_limits::max_digits10) << 0 + << ","; //eagleye_pp_llh.orientation_covariance[4] + output_log_file << std::setprecision(std::numeric_limits::max_digits10) << 0 + << ","; //eagleye_pp_llh.orientation_covariance[5] + output_log_file << std::setprecision(std::numeric_limits::max_digits10) << 0 + << ","; //eagleye_pp_llh.orientation_covariance[6] + output_log_file << std::setprecision(std::numeric_limits::max_digits10) << 0 + << ","; //eagleye_pp_llh.orientation_covariance[7] + output_log_file << std::setprecision(std::numeric_limits::max_digits10) << 0 + << ","; //eagleye_pp_llh.orientation_covariance[8] + output_log_file << std::setprecision(std::numeric_limits::max_digits10) << 0 + << ","; //eagleye_pp_llh.status + output_log_file << std::setprecision(std::numeric_limits::max_digits10) << 0 + << ","; //eagleye_pp_llh.status + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _enu_relative_pos.enu_pos.x << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _enu_relative_pos.enu_pos.y << ","; + output_log_file << std::setprecision(std::numeric_limits::max_digits10) + << _enu_relative_pos.enu_pos.z << ","; + output_log_file << (_enu_relative_pos.status.enabled_status ? "1" : "0"); + output_log_file << "\n"; } return; } -void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) -{ +void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) { _imu.header = msg->header; _imu.orientation = msg->orientation; _imu.orientation_covariance = msg->orientation_covariance; @@ -1078,20 +1109,16 @@ void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) _imu.linear_acceleration = msg->linear_acceleration; _imu.linear_acceleration_covariance = msg->linear_acceleration_covariance; - if (_print_status) - { + if (_print_status) { printStatus(); } - if(_log_output_status) - { + if (_log_output_status) { outputLog(); } - } -int main(int argc, char** argv) -{ +int main(int argc, char** argv) { rclcpp::init(argc, argv); auto node = rclcpp::Node::make_shared("eagleye_monitor"); @@ -1101,33 +1128,36 @@ int main(int argc, char** argv) std::string subscribe_gga_topic_name = "gnss/gga"; std::string comparison_twist_topic_name = "/calculated_twist"; - node->declare_parameter("rtklib_nav_topic",subscribe_rtklib_nav_topic_name); - node->declare_parameter("gga_topic",subscribe_gga_topic_name); - node->declare_parameter("monitor.comparison_twist_topic",comparison_twist_topic_name); - node->declare_parameter("monitor.print_status",_print_status); - node->declare_parameter("monitor.log_output_status",_log_output_status); - node->declare_parameter("monitor.use_compare_yaw_rate",_use_compare_yaw_rate); - node->declare_parameter("monitor.th_diff_rad_per_sec",_th_diff_rad_per_sec); - node->declare_parameter("monitor.th_num_continuous_abnormal_yaw_rate",_th_num_continuous_abnormal_yaw_rate); - - node->get_parameter("rtklib_nav_topic",subscribe_rtklib_nav_topic_name); - node->get_parameter("gga_topic",subscribe_gga_topic_name); - node->get_parameter("monitor.comparison_twist_topic",comparison_twist_topic_name); - node->get_parameter("monitor.print_status",_print_status); - node->get_parameter("monitor.log_output_status",_log_output_status); - node->get_parameter("monitor.use_compare_yaw_rate",_use_compare_yaw_rate); - node->get_parameter("monitor.th_diff_rad_per_sec",_th_diff_rad_per_sec); - node->get_parameter("monitor.th_num_continuous_abnormal_yaw_rate",_th_num_continuous_abnormal_yaw_rate); - - std::cout<< "subscribe_rtklib_nav_topic_name "<declare_parameter("rtklib_nav_topic", subscribe_rtklib_nav_topic_name); + node->declare_parameter("gga_topic", subscribe_gga_topic_name); + node->declare_parameter("monitor.comparison_twist_topic", comparison_twist_topic_name); + node->declare_parameter("monitor.print_status", _print_status); + node->declare_parameter("monitor.log_output_status", _log_output_status); + node->declare_parameter("monitor.use_compare_yaw_rate", _use_compare_yaw_rate); + node->declare_parameter("monitor.th_diff_rad_per_sec", _th_diff_rad_per_sec); + node->declare_parameter("monitor.th_num_continuous_abnormal_yaw_rate", + _th_num_continuous_abnormal_yaw_rate); + + node->get_parameter("rtklib_nav_topic", subscribe_rtklib_nav_topic_name); + node->get_parameter("gga_topic", subscribe_gga_topic_name); + node->get_parameter("monitor.comparison_twist_topic", comparison_twist_topic_name); + node->get_parameter("monitor.print_status", _print_status); + node->get_parameter("monitor.log_output_status", _log_output_status); + node->get_parameter("monitor.use_compare_yaw_rate", _use_compare_yaw_rate); + node->get_parameter("monitor.th_diff_rad_per_sec", _th_diff_rad_per_sec); + node->get_parameter("monitor.th_num_continuous_abnormal_yaw_rate", + _th_num_continuous_abnormal_yaw_rate); + + std::cout << "subscribe_rtklib_nav_topic_name " << subscribe_rtklib_nav_topic_name << std::endl; + std::cout << "subscribe_gga_topic_name " << subscribe_gga_topic_name << std::endl; + std::cout << "print_status " << _print_status << std::endl; + std::cout << "log_output_status " << _log_output_status << std::endl; + std::cout << "use_compare_yaw_rate " << _use_compare_yaw_rate << std::endl; + if (_use_compare_yaw_rate) { + std::cout << "comparison_twist_topic_name " << comparison_twist_topic_name << std::endl; + std::cout << "th_diff_rad_per_sec " << _th_diff_rad_per_sec << std::endl; + std::cout << "th_num_continuous_abnormal_yaw_rate " << _th_num_continuous_abnormal_yaw_rate + << std::endl; } // // Diagnostic Updater @@ -1157,44 +1187,75 @@ int main(int argc, char** argv) updater_->add("eagleye_enu_absolute_pos", enu_absolute_pos_topic_checker); updater_->add("eagleye_enu_absolute_pos_interpolate", enu_absolute_pos_interpolate_topic_checker); updater_->add("eagleye_twist", twist_topic_checker); - if(_use_compare_yaw_rate) updater_->add("eagleye_imu_comparison", imu_comparison_checker); + if (_use_compare_yaw_rate) + updater_->add("eagleye_imu_comparison", imu_comparison_checker); time_t time_; time_ = time(NULL); std::stringstream time_ss; time_ss << time_; std::string time_str = time_ss.str(); - _output_log_dir = ament_index_cpp::get_package_share_directory("eagleye_rt") + "/log/eagleye_log_" + time_str + ".csv"; - if(_log_output_status) std::cout << _output_log_dir << std::endl; - - auto sub1 = node->create_subscription("imu/data_tf_converted", 1000, imu_callback); - auto sub2 = node->create_subscription(subscribe_rtklib_nav_topic_name, 1000, rtklib_nav_callback); - auto sub3 = node->create_subscription("rtklib/fix", rclcpp::QoS(10), rtklib_fix_callback); - auto sub4 = node->create_subscription(subscribe_gga_topic_name, 1000, navsatfix_gga_callback); - auto sub5 = node->create_subscription(subscribe_twist_topic_name, 1000, velocity_callback); - auto sub6 = node->create_subscription("velocity_scale_factor", rclcpp::QoS(10), velocity_scale_factor_callback); - auto sub7 = node->create_subscription("distance", rclcpp::QoS(10), distance_callback); - auto sub8 = node->create_subscription("heading_1st", rclcpp::QoS(10), heading_1st_callback); - auto sub9 = node->create_subscription("heading_interpolate_1st", rclcpp::QoS(10), heading_interpolate_1st_callback); - auto sub10 = node->create_subscription("heading_2nd", rclcpp::QoS(10), heading_2nd_callback); - auto sub11 = node->create_subscription("heading_interpolate_2nd", rclcpp::QoS(10), heading_interpolate_2nd_callback); - auto sub12 = node->create_subscription("heading_3rd", rclcpp::QoS(10), heading_3rd_callback); - auto sub13 = node->create_subscription("heading_interpolate_3rd", rclcpp::QoS(10), heading_interpolate_3rd_callback); - auto sub14 = node->create_subscription("yaw_rate_offset_stop", rclcpp::QoS(10), yaw_rate_offset_stop_callback); - auto sub15 = node->create_subscription("yaw_rate_offset_1st", rclcpp::QoS(10), yaw_rate_offset_1st_callback); - auto sub16 = node->create_subscription("yaw_rate_offset_2nd", rclcpp::QoS(10), yaw_rate_offset_2nd_callback); - auto sub17 = node->create_subscription("slip_angle", rclcpp::QoS(10), slip_angle_callback); - auto sub18 = node->create_subscription("enu_relative_pos", rclcpp::QoS(10), enu_relative_pos_callback); - auto sub19 = node->create_subscription("enu_vel", rclcpp::QoS(10), enu_vel_callback); - auto sub20 = node->create_subscription("height", rclcpp::QoS(10), height_callback); - auto sub21 = node->create_subscription("pitching", rclcpp::QoS(10), pitching_callback); - auto sub22 = node->create_subscription("enu_absolute_pos", rclcpp::QoS(10), enu_absolute_pos_callback); - auto sub23 = node->create_subscription("enu_absolute_pos_interpolate", rclcpp::QoS(10), enu_absolute_pos_interpolate_callback); - auto sub24 = node->create_subscription("fix", rclcpp::QoS(10), eagleye_fix_callback); - auto sub25 = node->create_subscription("twist", rclcpp::QoS(10), eagleye_twist_callback); - auto sub26 = node->create_subscription("rolling", rclcpp::QoS(10), rolling_callback); - auto sub27 = node->create_subscription(comparison_twist_topic_name, 1000, comparison_velocity_callback); - auto sub28 = node->create_subscription("velocity", 1000, correction_velocity_callback); + _output_log_dir = ament_index_cpp::get_package_share_directory("eagleye_rt") + + "/log/eagleye_log_" + time_str + ".csv"; + if (_log_output_status) + std::cout << _output_log_dir << std::endl; + + auto sub1 = + node->create_subscription("imu/data_tf_converted", 1000, imu_callback); + auto sub2 = node->create_subscription( + subscribe_rtklib_nav_topic_name, 1000, rtklib_nav_callback); + auto sub3 = node->create_subscription("rtklib/fix", rclcpp::QoS(10), + rtklib_fix_callback); + auto sub4 = node->create_subscription(subscribe_gga_topic_name, 1000, + navsatfix_gga_callback); + auto sub5 = node->create_subscription( + subscribe_twist_topic_name, 1000, velocity_callback); + auto sub6 = node->create_subscription( + "velocity_scale_factor", rclcpp::QoS(10), velocity_scale_factor_callback); + auto sub7 = node->create_subscription("distance", rclcpp::QoS(10), + distance_callback); + auto sub8 = node->create_subscription("heading_1st", rclcpp::QoS(10), + heading_1st_callback); + auto sub9 = node->create_subscription( + "heading_interpolate_1st", rclcpp::QoS(10), heading_interpolate_1st_callback); + auto sub10 = node->create_subscription("heading_2nd", rclcpp::QoS(10), + heading_2nd_callback); + auto sub11 = node->create_subscription( + "heading_interpolate_2nd", rclcpp::QoS(10), heading_interpolate_2nd_callback); + auto sub12 = node->create_subscription("heading_3rd", rclcpp::QoS(10), + heading_3rd_callback); + auto sub13 = node->create_subscription( + "heading_interpolate_3rd", rclcpp::QoS(10), heading_interpolate_3rd_callback); + auto sub14 = node->create_subscription( + "yaw_rate_offset_stop", rclcpp::QoS(10), yaw_rate_offset_stop_callback); + auto sub15 = node->create_subscription( + "yaw_rate_offset_1st", rclcpp::QoS(10), yaw_rate_offset_1st_callback); + auto sub16 = node->create_subscription( + "yaw_rate_offset_2nd", rclcpp::QoS(10), yaw_rate_offset_2nd_callback); + auto sub17 = node->create_subscription( + "slip_angle", rclcpp::QoS(10), slip_angle_callback); + auto sub18 = node->create_subscription( + "enu_relative_pos", rclcpp::QoS(10), enu_relative_pos_callback); + auto sub19 = node->create_subscription( + "enu_vel", rclcpp::QoS(10), enu_vel_callback); + auto sub20 = node->create_subscription("height", rclcpp::QoS(10), + height_callback); + auto sub21 = node->create_subscription("pitching", rclcpp::QoS(10), + pitching_callback); + auto sub22 = node->create_subscription( + "enu_absolute_pos", rclcpp::QoS(10), enu_absolute_pos_callback); + auto sub23 = node->create_subscription( + "enu_absolute_pos_interpolate", rclcpp::QoS(10), enu_absolute_pos_interpolate_callback); + auto sub24 = node->create_subscription("fix", rclcpp::QoS(10), + eagleye_fix_callback); + auto sub25 = node->create_subscription("twist", rclcpp::QoS(10), + eagleye_twist_callback); + auto sub26 = node->create_subscription("rolling", rclcpp::QoS(10), + rolling_callback); + auto sub27 = node->create_subscription( + comparison_twist_topic_name, 1000, comparison_velocity_callback); + auto sub28 = node->create_subscription( + "velocity", 1000, correction_velocity_callback); rclcpp::spin(node); diff --git a/eagleye_rt/src/position_interpolate_node.cpp b/eagleye_rt/src/position_interpolate_node.cpp index 097dd85e..b20a7e08 100644 --- a/eagleye_rt/src/position_interpolate_node.cpp +++ b/eagleye_rt/src/position_interpolate_node.cpp @@ -49,33 +49,27 @@ struct PositionInterpolateStatus position_interpolate_status; std::string node_name = "eagleye_position_interpolate"; -void gga_callback(const nmea_msgs::msg::Gpgga::ConstSharedPtr msg) -{ +void gga_callback(const nmea_msgs::msg::Gpgga::ConstSharedPtr msg) { gga = *msg; } -void enu_absolute_pos_callback(const eagleye_msgs::msg::Position::ConstSharedPtr msg) -{ +void enu_absolute_pos_callback(const eagleye_msgs::msg::Position::ConstSharedPtr msg) { enu_absolute_pos = *msg; } -void gnss_smooth_pos_enu_callback(const eagleye_msgs::msg::Position::ConstSharedPtr msg) -{ +void gnss_smooth_pos_enu_callback(const eagleye_msgs::msg::Position::ConstSharedPtr msg) { gnss_smooth_pos = *msg; } -void height_callback(const eagleye_msgs::msg::Height::ConstSharedPtr msg) -{ +void height_callback(const eagleye_msgs::msg::Height::ConstSharedPtr msg) { height = *msg; } -void heading_interpolate_3rd_callback(const eagleye_msgs::msg::Heading::ConstSharedPtr msg) -{ +void heading_interpolate_3rd_callback(const eagleye_msgs::msg::Heading::ConstSharedPtr msg) { heading_interpolate_3rd = *msg; } -void enu_vel_callback(const geometry_msgs::msg::Vector3Stamped::ConstSharedPtr msg) -{ +void enu_vel_callback(const geometry_msgs::msg::Vector3Stamped::ConstSharedPtr msg) { rclcpp::Time ros_clock(gga.header.stamp); auto gga_time = ros_clock.seconds(); @@ -84,21 +78,19 @@ void enu_vel_callback(const geometry_msgs::msg::Vector3Stamped::ConstSharedPtr m enu_absolute_pos_interpolate.header.frame_id = "base_link"; eagleye_fix.header = msg->header; eagleye_fix.header.frame_id = "gnss"; - position_interpolate_estimate(enu_absolute_pos,enu_vel,gnss_smooth_pos,height,heading_interpolate_3rd,position_interpolate_parameter,&position_interpolate_status,&enu_absolute_pos_interpolate,&eagleye_fix); - if (enu_absolute_pos.status.enabled_status == true) - { - if(eagleye_fix.latitude == 0 && eagleye_fix.longitude == 0) - { - RCLCPP_WARN(rclcpp::get_logger(node_name), "eagleye_fix is not published because latitude and longitude are 0."); - } - else - { + position_interpolate_estimate(enu_absolute_pos, enu_vel, gnss_smooth_pos, height, + heading_interpolate_3rd, position_interpolate_parameter, + &position_interpolate_status, &enu_absolute_pos_interpolate, + &eagleye_fix); + if (enu_absolute_pos.status.enabled_status == true) { + if (eagleye_fix.latitude == 0 && eagleye_fix.longitude == 0) { + RCLCPP_WARN(rclcpp::get_logger(node_name), + "eagleye_fix is not published because latitude and longitude are 0."); + } else { pub1->publish(enu_absolute_pos_interpolate); pub2->publish(eagleye_fix); } - } - else if (gga_time != 0) - { + } else if (gga_time != 0) { sensor_msgs::msg::NavSatFix fix; fix.header = gga.header; fix.latitude = gga.lat; @@ -108,45 +100,57 @@ void enu_vel_callback(const geometry_msgs::msg::Vector3Stamped::ConstSharedPtr m } } -int main(int argc, char** argv) -{ +int main(int argc, char** argv) { rclcpp::init(argc, argv); auto node = rclcpp::Node::make_shared(node_name); std::string subscribe_gga_topic_name = "gnss/gga"; std::string yaml_file; - node->declare_parameter("yaml_file",yaml_file); - node->get_parameter("yaml_file",yaml_file); + node->declare_parameter("yaml_file", yaml_file); + node->get_parameter("yaml_file", yaml_file); std::cout << "yaml_file: " << yaml_file << std::endl; - try - { + try { YAML::Node conf = YAML::LoadFile(yaml_file); - position_interpolate_parameter.imu_rate = conf["/**"]["ros__parameters"]["common"]["imu_rate"].as(); - position_interpolate_parameter.stop_judgment_threshold = conf["/**"]["ros__parameters"]["common"]["stop_judgment_threshold"].as(); - position_interpolate_parameter.sync_search_period = conf["/**"]["ros__parameters"]["position_interpolate"]["sync_search_period"].as(); - position_interpolate_parameter.proc_noise = conf["/**"]["ros__parameters"]["position_interpolate"]["proc_noise"].as(); + position_interpolate_parameter.imu_rate = + conf["/**"]["ros__parameters"]["common"]["imu_rate"].as(); + position_interpolate_parameter.stop_judgment_threshold = + conf["/**"]["ros__parameters"]["common"]["stop_judgment_threshold"].as(); + position_interpolate_parameter.sync_search_period = + conf["/**"]["ros__parameters"]["position_interpolate"]["sync_search_period"].as(); + position_interpolate_parameter.proc_noise = + conf["/**"]["ros__parameters"]["position_interpolate"]["proc_noise"].as(); std::cout << "imu_rate " << position_interpolate_parameter.imu_rate << std::endl; - std::cout << "stop_judgment_threshold " << position_interpolate_parameter.stop_judgment_threshold << std::endl; - std::cout << "sync_search_period " << position_interpolate_parameter.sync_search_period << std::endl; - } - catch (YAML::Exception& e) - { - std::cerr << "\033[1;31mheading_interpolate Node YAML Error: " << e.msg << "\033[0m" << std::endl; + std::cout << "stop_judgment_threshold " + << position_interpolate_parameter.stop_judgment_threshold << std::endl; + std::cout << "sync_search_period " << position_interpolate_parameter.sync_search_period + << std::endl; + } catch (YAML::Exception& e) { + std::cerr << "\033[1;31mheading_interpolate Node YAML Error: " << e.msg << "\033[0m" + << std::endl; exit(3); } - - auto sub1 = node->create_subscription("enu_vel", rclcpp::QoS(10), enu_vel_callback); //ros::TransportHints().tcpNoDelay() - auto sub2 = node->create_subscription("enu_absolute_pos", rclcpp::QoS(10), enu_absolute_pos_callback); //ros::TransportHints().tcpNoDelay() - auto sub3 = node->create_subscription("gnss_smooth_pos_enu", rclcpp::QoS(10), gnss_smooth_pos_enu_callback); //ros::TransportHints().tcpNoDelay() - auto sub4 = node->create_subscription("height", rclcpp::QoS(10), height_callback); //ros::TransportHints().tcpNoDelay() - auto sub5 = node->create_subscription(subscribe_gga_topic_name, rclcpp::QoS(10), gga_callback); //ros::TransportHints().tcpNoDelay() - auto sub6 = node->create_subscription("heading_interpolate_3rd", rclcpp::QoS(10), heading_interpolate_3rd_callback); //ros::TransportHints().tcpNoDelay() - pub1 = node->create_publisher("enu_absolute_pos_interpolate", rclcpp::QoS(10)); + auto sub1 = node->create_subscription( + "enu_vel", rclcpp::QoS(10), enu_vel_callback); //ros::TransportHints().tcpNoDelay() + auto sub2 = node->create_subscription( + "enu_absolute_pos", rclcpp::QoS(10), + enu_absolute_pos_callback); //ros::TransportHints().tcpNoDelay() + auto sub3 = node->create_subscription( + "gnss_smooth_pos_enu", rclcpp::QoS(10), + gnss_smooth_pos_enu_callback); //ros::TransportHints().tcpNoDelay() + auto sub4 = node->create_subscription( + "height", rclcpp::QoS(10), height_callback); //ros::TransportHints().tcpNoDelay() + auto sub5 = node->create_subscription( + subscribe_gga_topic_name, rclcpp::QoS(10), gga_callback); //ros::TransportHints().tcpNoDelay() + auto sub6 = node->create_subscription( + "heading_interpolate_3rd", rclcpp::QoS(10), + heading_interpolate_3rd_callback); //ros::TransportHints().tcpNoDelay() + pub1 = node->create_publisher("enu_absolute_pos_interpolate", + rclcpp::QoS(10)); pub2 = node->create_publisher("fix", rclcpp::QoS(10)); rclcpp::spin(node); diff --git a/eagleye_rt/src/position_node.cpp b/eagleye_rt/src/position_node.cpp index c681c1bb..abfd0c73 100644 --- a/eagleye_rt/src/position_node.cpp +++ b/eagleye_rt/src/position_node.cpp @@ -62,48 +62,41 @@ tf2_ros::Buffer tfBuffer_(std::make_shared(clock_)); std::string node_name = "eagleye_position"; -void rtklib_nav_callback(const rtklib_msgs::msg::RtklibNav::ConstSharedPtr msg) -{ +void rtklib_nav_callback(const rtklib_msgs::msg::RtklibNav::ConstSharedPtr msg) { rtklib_nav = *msg; } -void velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) -{ +void velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) { velocity = *msg; } -void velocity_status_callback(const eagleye_msgs::msg::StatusStamped::ConstSharedPtr msg) -{ +void velocity_status_callback(const eagleye_msgs::msg::StatusStamped::ConstSharedPtr msg) { velocity_status = *msg; } -void velocity_scale_factor_callback(const eagleye_msgs::msg::VelocityScaleFactor::ConstSharedPtr msg) -{ +void velocity_scale_factor_callback( + const eagleye_msgs::msg::VelocityScaleFactor::ConstSharedPtr msg) { velocity_scale_factor = *msg; } -void distance_callback(const eagleye_msgs::msg::Distance::ConstSharedPtr msg) -{ +void distance_callback(const eagleye_msgs::msg::Distance::ConstSharedPtr msg) { distance = *msg; } -void heading_interpolate_3rd_callback(const eagleye_msgs::msg::Heading::ConstSharedPtr msg) -{ +void heading_interpolate_3rd_callback(const eagleye_msgs::msg::Heading::ConstSharedPtr msg) { heading_interpolate_3rd = *msg; } -void gga_callback(const nmea_msgs::msg::Gpgga::ConstSharedPtr msg) -{ +void gga_callback(const nmea_msgs::msg::Gpgga::ConstSharedPtr msg) { gga = *msg; } - -void on_timer() -{ +void on_timer() { geometry_msgs::msg::TransformStamped transformStamped; - try - { - transformStamped = tfBuffer_.lookupTransform(position_parameter.tf_gnss_parent_frame, position_parameter.tf_gnss_child_frame, tf2::TimePointZero); + try { + transformStamped = + tfBuffer_.lookupTransform(position_parameter.tf_gnss_parent_frame, + position_parameter.tf_gnss_child_frame, tf2::TimePointZero); position_parameter.tf_gnss_translation_x = transformStamped.transform.translation.x; position_parameter.tf_gnss_translation_y = transformStamped.transform.translation.y; @@ -112,25 +105,20 @@ void on_timer() position_parameter.tf_gnss_rotation_y = transformStamped.transform.rotation.y; position_parameter.tf_gnss_rotation_z = transformStamped.transform.rotation.z; position_parameter.tf_gnss_rotation_w = transformStamped.transform.rotation.w; - } - catch (tf2::TransformException& ex) - { + } catch (tf2::TransformException& ex) { RCLCPP_WARN(rclcpp::get_logger(node_name), "%s", ex.what()); return; } } -void enu_vel_callback(const geometry_msgs::msg::Vector3Stamped::ConstSharedPtr msg) -{ - if(use_can_less_mode && !velocity_status.status.enabled_status) return; +void enu_vel_callback(const geometry_msgs::msg::Vector3Stamped::ConstSharedPtr msg) { + if (use_can_less_mode && !velocity_status.status.enabled_status) + return; eagleye_msgs::msg::StatusStamped velocity_enable_status; - if(use_can_less_mode) - { + if (use_can_less_mode) { velocity_enable_status = velocity_status; - } - else - { + } else { velocity_enable_status.header = velocity_scale_factor.header; velocity_enable_status.status = velocity_scale_factor.status; } @@ -138,21 +126,20 @@ void enu_vel_callback(const geometry_msgs::msg::Vector3Stamped::ConstSharedPtr m enu_vel = *msg; enu_absolute_pos.header = msg->header; enu_absolute_pos.header.frame_id = "base_link"; - if (use_gnss_mode == "rtklib" || use_gnss_mode == "RTKLIB") // use RTKLIB mode - position_estimate(rtklib_nav, velocity, velocity_enable_status, distance, heading_interpolate_3rd, enu_vel, - position_parameter, &position_status, &enu_absolute_pos); - else if (use_gnss_mode == "nmea" || use_gnss_mode == "NMEA") // use NMEA mode - position_estimate(gga, velocity, velocity_enable_status, distance, heading_interpolate_3rd, enu_vel, - position_parameter, &position_status, &enu_absolute_pos); - if (enu_absolute_pos.status.estimate_status == true) - { + if (use_gnss_mode == "rtklib" || use_gnss_mode == "RTKLIB") // use RTKLIB mode + position_estimate(rtklib_nav, velocity, velocity_enable_status, distance, + heading_interpolate_3rd, enu_vel, position_parameter, &position_status, + &enu_absolute_pos); + else if (use_gnss_mode == "nmea" || use_gnss_mode == "NMEA") // use NMEA mode + position_estimate(gga, velocity, velocity_enable_status, distance, heading_interpolate_3rd, + enu_vel, position_parameter, &position_status, &enu_absolute_pos); + if (enu_absolute_pos.status.estimate_status == true) { pub->publish(enu_absolute_pos); } enu_absolute_pos.status.estimate_status = false; } -int main(int argc, char** argv) -{ +int main(int argc, char** argv) { rclcpp::init(argc, argv); auto node = rclcpp::Node::make_shared(node_name); @@ -160,79 +147,99 @@ int main(int argc, char** argv) std::string subscribe_gga_topic_name = "gnss/gga"; std::string yaml_file; - node->declare_parameter("yaml_file",yaml_file); - node->get_parameter("yaml_file",yaml_file); + node->declare_parameter("yaml_file", yaml_file); + node->get_parameter("yaml_file", yaml_file); std::cout << "yaml_file: " << yaml_file << std::endl; - try - { + try { YAML::Node conf = YAML::LoadFile(yaml_file); use_gnss_mode = conf["/**"]["ros__parameters"]["use_gnss_mode"].as(); use_can_less_mode = conf["/**"]["ros__parameters"]["use_can_less_mode"].as(); - position_parameter.ecef_base_pos_x = conf["/**"]["ros__parameters"]["ecef_base_pos"]["x"].as(); - position_parameter.ecef_base_pos_y = conf["/**"]["ros__parameters"]["ecef_base_pos"]["y"].as(); - position_parameter.ecef_base_pos_z = conf["/**"]["ros__parameters"]["ecef_base_pos"]["z"].as(); + position_parameter.ecef_base_pos_x = + conf["/**"]["ros__parameters"]["ecef_base_pos"]["x"].as(); + position_parameter.ecef_base_pos_y = + conf["/**"]["ros__parameters"]["ecef_base_pos"]["y"].as(); + position_parameter.ecef_base_pos_z = + conf["/**"]["ros__parameters"]["ecef_base_pos"]["z"].as(); - position_parameter.tf_gnss_parent_frame = conf["/**"]["ros__parameters"]["tf_gnss_frame"]["parent"].as(); - position_parameter.tf_gnss_child_frame = conf["/**"]["ros__parameters"]["tf_gnss_frame"]["child"].as(); + position_parameter.tf_gnss_parent_frame = + conf["/**"]["ros__parameters"]["tf_gnss_frame"]["parent"].as(); + position_parameter.tf_gnss_child_frame = + conf["/**"]["ros__parameters"]["tf_gnss_frame"]["child"].as(); position_parameter.imu_rate = conf["/**"]["ros__parameters"]["common"]["imu_rate"].as(); - position_parameter.gnss_rate = conf["/**"]["ros__parameters"]["common"]["gnss_rate"].as(); - position_parameter.moving_judgment_threshold = conf["/**"]["ros__parameters"]["common"]["moving_judgment_threshold"].as(); + position_parameter.gnss_rate = + conf["/**"]["ros__parameters"]["common"]["gnss_rate"].as(); + position_parameter.moving_judgment_threshold = + conf["/**"]["ros__parameters"]["common"]["moving_judgment_threshold"].as(); - position_parameter.estimated_interval = conf["/**"]["ros__parameters"]["position"]["estimated_interval"].as(); - position_parameter.update_distance = conf["/**"]["ros__parameters"]["position"]["update_distance"].as(); - position_parameter.outlier_threshold = conf["/**"]["ros__parameters"]["position"]["outlier_threshold"].as(); + position_parameter.estimated_interval = + conf["/**"]["ros__parameters"]["position"]["estimated_interval"].as(); + position_parameter.update_distance = + conf["/**"]["ros__parameters"]["position"]["update_distance"].as(); + position_parameter.outlier_threshold = + conf["/**"]["ros__parameters"]["position"]["outlier_threshold"].as(); - position_parameter.gnss_receiving_threshold = conf["/**"]["ros__parameters"]["position"]["gnss_receiving_threshold"].as(); - position_parameter.outlier_ratio_threshold = conf["/**"]["ros__parameters"]["position"]["outlier_ratio_threshold"].as(); + position_parameter.gnss_receiving_threshold = + conf["/**"]["ros__parameters"]["position"]["gnss_receiving_threshold"].as(); + position_parameter.outlier_ratio_threshold = + conf["/**"]["ros__parameters"]["position"]["outlier_ratio_threshold"].as(); - position_parameter.gnss_error_covariance = conf["/**"]["ros__parameters"]["position"]["gnss_error_covariance"].as(); + position_parameter.gnss_error_covariance = + conf["/**"]["ros__parameters"]["position"]["gnss_error_covariance"].as(); - std::cout<< "use_gnss_mode " << use_gnss_mode << std::endl; - std::cout<< "use_can_less_mode " << use_can_less_mode << std::endl; + std::cout << "use_gnss_mode " << use_gnss_mode << std::endl; + std::cout << "use_can_less_mode " << use_can_less_mode << std::endl; - std::cout<< "subscribe_rtklib_nav_topic_name " << subscribe_rtklib_nav_topic_name << std::endl; + std::cout << "subscribe_rtklib_nav_topic_name " << subscribe_rtklib_nav_topic_name << std::endl; - std::cout<< "ecef_base_pos_x " << position_parameter.ecef_base_pos_x << std::endl; - std::cout<< "ecef_base_pos_y " << position_parameter.ecef_base_pos_y << std::endl; - std::cout<< "ecef_base_pos_z " << position_parameter.ecef_base_pos_z << std::endl; + std::cout << "ecef_base_pos_x " << position_parameter.ecef_base_pos_x << std::endl; + std::cout << "ecef_base_pos_y " << position_parameter.ecef_base_pos_y << std::endl; + std::cout << "ecef_base_pos_z " << position_parameter.ecef_base_pos_z << std::endl; - std::cout<< "tf_gnss_frame/parent " << position_parameter.tf_gnss_parent_frame << std::endl; - std::cout<< "tf_gnss_frame/child " << position_parameter.tf_gnss_child_frame << std::endl; + std::cout << "tf_gnss_frame/parent " << position_parameter.tf_gnss_parent_frame << std::endl; + std::cout << "tf_gnss_frame/child " << position_parameter.tf_gnss_child_frame << std::endl; std::cout << "imu_rate " << position_parameter.imu_rate << std::endl; std::cout << "gnss_rate " << position_parameter.gnss_rate << std::endl; - std::cout << "moving_judgment_threshold " << position_parameter.moving_judgment_threshold << std::endl; + std::cout << "moving_judgment_threshold " << position_parameter.moving_judgment_threshold + << std::endl; std::cout << "estimated_interval " << position_parameter.estimated_interval << std::endl; std::cout << "update_distance " << position_parameter.update_distance << std::endl; std::cout << "outlier_threshold " << position_parameter.outlier_threshold << std::endl; - std::cout << "gnss_receiving_threshold " << position_parameter.gnss_receiving_threshold << std::endl; - std::cout << "outlier_ratio_threshold " << position_parameter.outlier_ratio_threshold << std::endl; - } - catch (YAML::Exception& e) - { + std::cout << "gnss_receiving_threshold " << position_parameter.gnss_receiving_threshold + << std::endl; + std::cout << "outlier_ratio_threshold " << position_parameter.outlier_ratio_threshold + << std::endl; + } catch (YAML::Exception& e) { std::cerr << "\033[1;31mposition Node YAML Error: " << e.msg << "\033[0m" << std::endl; exit(3); } - - auto sub1 = node->create_subscription("enu_vel", 1000, enu_vel_callback); - auto sub2 = node->create_subscription(subscribe_rtklib_nav_topic_name, 1000, rtklib_nav_callback); - auto sub3 = node->create_subscription("velocity", rclcpp::QoS(10), velocity_callback); - auto sub4 = node->create_subscription("velocity_status", rclcpp::QoS(10), velocity_status_callback); - auto sub5 = node->create_subscription("velocity_scale_factor", 1000, velocity_scale_factor_callback); - auto sub6 = node->create_subscription("distance", 1000, distance_callback); - auto sub7 = node->create_subscription("heading_interpolate_3rd", 1000, heading_interpolate_3rd_callback); - auto sub8 = node->create_subscription(subscribe_gga_topic_name, 1000, gga_callback); + auto sub1 = node->create_subscription("enu_vel", 1000, + enu_vel_callback); + auto sub2 = node->create_subscription( + subscribe_rtklib_nav_topic_name, 1000, rtklib_nav_callback); + auto sub3 = node->create_subscription( + "velocity", rclcpp::QoS(10), velocity_callback); + auto sub4 = node->create_subscription( + "velocity_status", rclcpp::QoS(10), velocity_status_callback); + auto sub5 = node->create_subscription( + "velocity_scale_factor", 1000, velocity_scale_factor_callback); + auto sub6 = + node->create_subscription("distance", 1000, distance_callback); + auto sub7 = node->create_subscription( + "heading_interpolate_3rd", 1000, heading_interpolate_3rd_callback); + auto sub8 = + node->create_subscription(subscribe_gga_topic_name, 1000, gga_callback); pub = node->create_publisher("enu_absolute_pos", 1000); const auto period_ns = - std::chrono::duration_cast(std::chrono::duration(0.5)); + std::chrono::duration_cast(std::chrono::duration(0.5)); // auto timer_callback = std::bind(&on_timer, node); auto timer_callback = std::bind(on_timer); auto timer = std::make_shared>( diff --git a/eagleye_rt/src/rolling_node.cpp b/eagleye_rt/src/rolling_node.cpp index e029b26d..e90692ad 100644 --- a/eagleye_rt/src/rolling_node.cpp +++ b/eagleye_rt/src/rolling_node.cpp @@ -46,85 +46,80 @@ struct RollingStatus _rolling_status; static bool _use_can_less_mode; -void velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) -{ +void velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) { _velocity_msg = *msg; } -void velocity_status_callback(const eagleye_msgs::msg::StatusStamped::ConstSharedPtr msg) -{ +void velocity_status_callback(const eagleye_msgs::msg::StatusStamped::ConstSharedPtr msg) { _velocity_status_msg = *msg; } -void yaw_rate_offset_stop_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) -{ +void yaw_rate_offset_stop_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) { _yaw_rate_offset_stop_msg = *msg; } -void yaw_rate_offset_2nd_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) -{ +void yaw_rate_offset_2nd_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) { _yaw_rate_offset_2nd_msg = *msg; } -void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) -{ - if(_use_can_less_mode && !_velocity_status_msg.status.enabled_status) return; +void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) { + if (_use_can_less_mode && !_velocity_status_msg.status.enabled_status) + return; _imu_msg = *msg; rolling_estimate(_imu_msg, _velocity_msg, _yaw_rate_offset_stop_msg, _yaw_rate_offset_2nd_msg, _rolling_parameter, &_rolling_status, &_rolling_msg); _rolling_pub->publish(_rolling_msg); } -void setParam(rclcpp::Node::SharedPtr node) -{ +void setParam(rclcpp::Node::SharedPtr node) { std::string yaml_file; - node->declare_parameter("yaml_file",yaml_file); - node->get_parameter("yaml_file",yaml_file); + node->declare_parameter("yaml_file", yaml_file); + node->get_parameter("yaml_file", yaml_file); std::cout << "yaml_file: " << yaml_file << std::endl; - try - { + try { YAML::Node conf = YAML::LoadFile(yaml_file); _use_can_less_mode = conf["/**"]["ros__parameters"]["use_can_less_mode"].as(); - _rolling_parameter.stop_judgment_threshold = conf["/**"]["ros__parameters"]["common"]["stop_judgment_threshold"].as(); - _rolling_parameter.filter_process_noise = conf["/**"]["ros__parameters"]["rolling"]["filter_process_noise"].as(); - _rolling_parameter.filter_observation_noise = conf["/**"]["ros__parameters"]["rolling"]["filter_observation_noise"].as(); - - std::cout<< "use_can_less_mode " << _use_can_less_mode << std::endl; - std::cout << "stop_judgment_threshold " << _rolling_parameter.stop_judgment_threshold << std::endl; + _rolling_parameter.stop_judgment_threshold = + conf["/**"]["ros__parameters"]["common"]["stop_judgment_threshold"].as(); + _rolling_parameter.filter_process_noise = + conf["/**"]["ros__parameters"]["rolling"]["filter_process_noise"].as(); + _rolling_parameter.filter_observation_noise = + conf["/**"]["ros__parameters"]["rolling"]["filter_observation_noise"].as(); + + std::cout << "use_can_less_mode " << _use_can_less_mode << std::endl; + std::cout << "stop_judgment_threshold " << _rolling_parameter.stop_judgment_threshold + << std::endl; std::cout << "filter_process_noise " << _rolling_parameter.filter_process_noise << std::endl; - std::cout << "filter_observation_noise " << _rolling_parameter.filter_observation_noise << std::endl; - } - catch (YAML::Exception& e) - { + std::cout << "filter_observation_noise " << _rolling_parameter.filter_observation_noise + << std::endl; + } catch (YAML::Exception& e) { std::cerr << "\033[1;31mrolling Node YAML Error: " << e.msg << "\033[0m" << std::endl; exit(3); } } -void rolling_node(rclcpp::Node::SharedPtr node) -{ +void rolling_node(rclcpp::Node::SharedPtr node) { setParam(node); auto imu_sub = - node->create_subscription("imu/data_tf_converted", 1000, imu_callback); - auto velocity_sub = - node->create_subscription("velocity", rclcpp::QoS(10), velocity_callback); - auto velocity_status_sub = - node->create_subscription("velocity_status", rclcpp::QoS(10), velocity_status_callback); - auto yaw_rate_offset_2nd_sub = - node->create_subscription("yaw_rate_offset_2nd", 1000, yaw_rate_offset_2nd_callback); - auto yaw_rate_offset_stop_sub = - node->create_subscription("yaw_rate_offset_stop", 1000, yaw_rate_offset_stop_callback); + node->create_subscription("imu/data_tf_converted", 1000, imu_callback); + auto velocity_sub = node->create_subscription( + "velocity", rclcpp::QoS(10), velocity_callback); + auto velocity_status_sub = node->create_subscription( + "velocity_status", rclcpp::QoS(10), velocity_status_callback); + auto yaw_rate_offset_2nd_sub = node->create_subscription( + "yaw_rate_offset_2nd", 1000, yaw_rate_offset_2nd_callback); + auto yaw_rate_offset_stop_sub = node->create_subscription( + "yaw_rate_offset_stop", 1000, yaw_rate_offset_stop_callback); _rolling_pub = node->create_publisher("rolling", 1000); rclcpp::spin(node); } -int main(int argc, char** argv) -{ +int main(int argc, char** argv) { rclcpp::init(argc, argv); auto node = rclcpp::Node::make_shared("eagleye_rolling"); diff --git a/eagleye_rt/src/rtk_dead_reckoning_node.cpp b/eagleye_rt/src/rtk_dead_reckoning_node.cpp index c8b8d18b..77977b63 100644 --- a/eagleye_rt/src/rtk_dead_reckoning_node.cpp +++ b/eagleye_rt/src/rtk_dead_reckoning_node.cpp @@ -59,28 +59,24 @@ std::string use_gnss_mode; rclcpp::Clock clock_(RCL_ROS_TIME); tf2_ros::Buffer tfBuffer_(std::make_shared(clock_)); -void rtklib_nav_callback(const rtklib_msgs::msg::RtklibNav::ConstSharedPtr msg) -{ +void rtklib_nav_callback(const rtklib_msgs::msg::RtklibNav::ConstSharedPtr msg) { rtklib_nav = *msg; } -void gga_callback(const nmea_msgs::msg::Gpgga::ConstSharedPtr msg) -{ +void gga_callback(const nmea_msgs::msg::Gpgga::ConstSharedPtr msg) { gga = *msg; } -void heading_interpolate_3rd_callback(const eagleye_msgs::msg::Heading::ConstSharedPtr msg) -{ +void heading_interpolate_3rd_callback(const eagleye_msgs::msg::Heading::ConstSharedPtr msg) { heading_interpolate_3rd = *msg; } - -void on_timer() -{ +void on_timer() { geometry_msgs::msg::TransformStamped transformStamped; - try - { - transformStamped = tfBuffer_.lookupTransform(rtk_dead_reckoning_parameter.tf_gnss_parent_frame, rtk_dead_reckoning_parameter.tf_gnss_child_frame, tf2::TimePointZero); + try { + transformStamped = tfBuffer_.lookupTransform(rtk_dead_reckoning_parameter.tf_gnss_parent_frame, + rtk_dead_reckoning_parameter.tf_gnss_child_frame, + tf2::TimePointZero); rtk_dead_reckoning_parameter.tf_gnss_translation_x = transformStamped.transform.translation.x; rtk_dead_reckoning_parameter.tf_gnss_translation_y = transformStamped.transform.translation.y; @@ -89,16 +85,13 @@ void on_timer() rtk_dead_reckoning_parameter.tf_gnss_rotation_y = transformStamped.transform.rotation.y; rtk_dead_reckoning_parameter.tf_gnss_rotation_z = transformStamped.transform.rotation.z; rtk_dead_reckoning_parameter.tf_gnss_rotation_w = transformStamped.transform.rotation.w; - } - catch (tf2::TransformException& ex) - { + } catch (tf2::TransformException& ex) { // RCLCPP_ERROR(this->get_logger(), "%s", ex.what()); return; } } -void enu_vel_callback(const geometry_msgs::msg::Vector3Stamped::ConstSharedPtr msg) -{ +void enu_vel_callback(const geometry_msgs::msg::Vector3Stamped::ConstSharedPtr msg) { rclcpp::Time ros_clock(gga.header.stamp); auto gga_time = ros_clock.seconds(); @@ -108,17 +101,18 @@ void enu_vel_callback(const geometry_msgs::msg::Vector3Stamped::ConstSharedPtr m enu_absolute_rtk_dead_reckoning.header.frame_id = "base_link"; eagleye_fix.header = msg->header; eagleye_fix.header.frame_id = "gnss"; - if (use_gnss_mode == "rtklib" || use_gnss_mode == "RTKLIB") // use RTKLIB mode - rtk_dead_reckoning_estimate(rtklib_nav,enu_vel,gga,heading_interpolate_3rd,rtk_dead_reckoning_parameter,&rtk_dead_reckoning_status,&enu_absolute_rtk_dead_reckoning,&eagleye_fix); - else if (use_gnss_mode == "nmea" || use_gnss_mode == "NMEA") // use NMEA mode - rtk_dead_reckoning_estimate(enu_vel,gga,heading_interpolate_3rd,rtk_dead_reckoning_parameter,&rtk_dead_reckoning_status,&enu_absolute_rtk_dead_reckoning,&eagleye_fix); - if (enu_absolute_rtk_dead_reckoning.status.enabled_status == true) - { + if (use_gnss_mode == "rtklib" || use_gnss_mode == "RTKLIB") // use RTKLIB mode + rtk_dead_reckoning_estimate(rtklib_nav, enu_vel, gga, heading_interpolate_3rd, + rtk_dead_reckoning_parameter, &rtk_dead_reckoning_status, + &enu_absolute_rtk_dead_reckoning, &eagleye_fix); + else if (use_gnss_mode == "nmea" || use_gnss_mode == "NMEA") // use NMEA mode + rtk_dead_reckoning_estimate(enu_vel, gga, heading_interpolate_3rd, rtk_dead_reckoning_parameter, + &rtk_dead_reckoning_status, &enu_absolute_rtk_dead_reckoning, + &eagleye_fix); + if (enu_absolute_rtk_dead_reckoning.status.enabled_status == true) { pub1->publish(enu_absolute_rtk_dead_reckoning); pub2->publish(eagleye_fix); - } - else if (gga_time != 0) - { + } else if (gga_time != 0) { sensor_msgs::msg::NavSatFix fix; fix.header = gga.header; fix.latitude = gga.lat; @@ -128,8 +122,7 @@ void enu_vel_callback(const geometry_msgs::msg::Vector3Stamped::ConstSharedPtr m } } -int main(int argc, char** argv) -{ +int main(int argc, char** argv) { rclcpp::init(argc, argv); auto node = rclcpp::Node::make_shared("eagleye_rtk_dead_reckoning"); @@ -137,54 +130,69 @@ int main(int argc, char** argv) std::string subscribe_gga_topic_name = "gnss/gga"; std::string yaml_file; - node->declare_parameter("yaml_file",yaml_file); - node->get_parameter("yaml_file",yaml_file); + node->declare_parameter("yaml_file", yaml_file); + node->get_parameter("yaml_file", yaml_file); std::cout << "yaml_file: " << yaml_file << std::endl; - try - { + try { YAML::Node conf = YAML::LoadFile(yaml_file); use_gnss_mode = conf["/**"]["ros__parameters"]["use_gnss_mode"].as(); - rtk_dead_reckoning_parameter.ecef_base_pos_x = conf["/**"]["ros__parameters"]["ecef_base_pos"]["x"].as(); - rtk_dead_reckoning_parameter.ecef_base_pos_y = conf["/**"]["ros__parameters"]["ecef_base_pos"]["y"].as(); - rtk_dead_reckoning_parameter.ecef_base_pos_z = conf["/**"]["ros__parameters"]["ecef_base_pos"]["z"].as(); - rtk_dead_reckoning_parameter.use_ecef_base_position = conf["/**"]["ros__parameters"]["ecef_base_pos"]["use_ecef_base_position"].as(); - rtk_dead_reckoning_parameter.tf_gnss_parent_frame = conf["/**"]["ros__parameters"]["tf_gnss_frame"]["parent"].as(); - rtk_dead_reckoning_parameter.tf_gnss_child_frame = conf["/**"]["ros__parameters"]["tf_gnss_frame"]["child"].as(); - rtk_dead_reckoning_parameter.stop_judgment_threshold = conf["/**"]["ros__parameters"]["common"]["stop_judgment_threshold"].as(); - rtk_dead_reckoning_parameter.rtk_fix_STD = conf["/**"]["ros__parameters"]["rtk_dead_reckoning"]["rtk_fix_STD"].as(); - rtk_dead_reckoning_parameter.proc_noise = conf["/**"]["ros__parameters"]["rtk_dead_reckoning"]["proc_noise"].as(); + rtk_dead_reckoning_parameter.ecef_base_pos_x = + conf["/**"]["ros__parameters"]["ecef_base_pos"]["x"].as(); + rtk_dead_reckoning_parameter.ecef_base_pos_y = + conf["/**"]["ros__parameters"]["ecef_base_pos"]["y"].as(); + rtk_dead_reckoning_parameter.ecef_base_pos_z = + conf["/**"]["ros__parameters"]["ecef_base_pos"]["z"].as(); + rtk_dead_reckoning_parameter.use_ecef_base_position = + conf["/**"]["ros__parameters"]["ecef_base_pos"]["use_ecef_base_position"].as(); + rtk_dead_reckoning_parameter.tf_gnss_parent_frame = + conf["/**"]["ros__parameters"]["tf_gnss_frame"]["parent"].as(); + rtk_dead_reckoning_parameter.tf_gnss_child_frame = + conf["/**"]["ros__parameters"]["tf_gnss_frame"]["child"].as(); + rtk_dead_reckoning_parameter.stop_judgment_threshold = + conf["/**"]["ros__parameters"]["common"]["stop_judgment_threshold"].as(); + rtk_dead_reckoning_parameter.rtk_fix_STD = + conf["/**"]["ros__parameters"]["rtk_dead_reckoning"]["rtk_fix_STD"].as(); + rtk_dead_reckoning_parameter.proc_noise = + conf["/**"]["ros__parameters"]["rtk_dead_reckoning"]["proc_noise"].as(); std::cout << "use_gnss_mode " << use_gnss_mode << std::endl; std::cout << "ecef_base_pos_x " << rtk_dead_reckoning_parameter.ecef_base_pos_x << std::endl; std::cout << "ecef_base_pos_y " << rtk_dead_reckoning_parameter.ecef_base_pos_y << std::endl; std::cout << "ecef_base_pos_z " << rtk_dead_reckoning_parameter.ecef_base_pos_z << std::endl; - std::cout << "use_ecef_base_position " << rtk_dead_reckoning_parameter.use_ecef_base_position << std::endl; - std::cout << "tf_gnss_frame/parent " << rtk_dead_reckoning_parameter.tf_gnss_parent_frame << std::endl; - std::cout << "tf_gnss_frame/child " << rtk_dead_reckoning_parameter.tf_gnss_child_frame << std::endl; - std::cout << "stop_judgment_threshold " << rtk_dead_reckoning_parameter.stop_judgment_threshold << std::endl; + std::cout << "use_ecef_base_position " << rtk_dead_reckoning_parameter.use_ecef_base_position + << std::endl; + std::cout << "tf_gnss_frame/parent " << rtk_dead_reckoning_parameter.tf_gnss_parent_frame + << std::endl; + std::cout << "tf_gnss_frame/child " << rtk_dead_reckoning_parameter.tf_gnss_child_frame + << std::endl; + std::cout << "stop_judgment_threshold " << rtk_dead_reckoning_parameter.stop_judgment_threshold + << std::endl; std::cout << "rtk_fix_STD " << rtk_dead_reckoning_parameter.rtk_fix_STD << std::endl; std::cout << "proc_noise " << rtk_dead_reckoning_parameter.proc_noise << std::endl; - } - catch (YAML::Exception& e) - { - std::cerr << "\033[1;31mrtk_dead_reckoning Node YAML Error: " << e.msg << "\033[0m" << std::endl; + } catch (YAML::Exception& e) { + std::cerr << "\033[1;31mrtk_dead_reckoning Node YAML Error: " << e.msg << "\033[0m" + << std::endl; exit(3); } - auto sub1 = node->create_subscription(subscribe_rtklib_nav_topic_name, 1000, rtklib_nav_callback); - auto sub2 = node->create_subscription("enu_vel", 1000, enu_vel_callback); - auto sub3 = node->create_subscription(subscribe_gga_topic_name, 1000, gga_callback); - auto sub4 = node->create_subscription("heading_interpolate_3rd", 1000, heading_interpolate_3rd_callback); - + auto sub1 = node->create_subscription( + subscribe_rtklib_nav_topic_name, 1000, rtklib_nav_callback); + auto sub2 = node->create_subscription("enu_vel", 1000, + enu_vel_callback); + auto sub3 = + node->create_subscription(subscribe_gga_topic_name, 1000, gga_callback); + auto sub4 = node->create_subscription( + "heading_interpolate_3rd", 1000, heading_interpolate_3rd_callback); + pub1 = node->create_publisher("enu_absolute_pos_interpolate", 1000); pub2 = node->create_publisher("fix", 1000); const auto period_ns = - std::chrono::duration_cast(std::chrono::duration(0.5)); + std::chrono::duration_cast(std::chrono::duration(0.5)); auto timer_callback = std::bind(on_timer); auto timer = std::make_shared>( node->get_clock(), period_ns, std::move(timer_callback), diff --git a/eagleye_rt/src/rtk_heading_node.cpp b/eagleye_rt/src/rtk_heading_node.cpp index bb0abfdb..245198b6 100644 --- a/eagleye_rt/src/rtk_heading_node.cpp +++ b/eagleye_rt/src/rtk_heading_node.cpp @@ -50,112 +50,117 @@ struct RtkHeadingStatus heading_status; static bool use_can_less_mode; -void velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) -{ +void velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) { velocity = *msg; } -void gga_callback(const nmea_msgs::msg::Gpgga::ConstSharedPtr msg) -{ +void gga_callback(const nmea_msgs::msg::Gpgga::ConstSharedPtr msg) { gga = *msg; } -void velocity_status_callback(const eagleye_msgs::msg::StatusStamped::ConstSharedPtr msg) -{ +void velocity_status_callback(const eagleye_msgs::msg::StatusStamped::ConstSharedPtr msg) { velocity_status = *msg; } -void yaw_rate_offset_stop_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) -{ +void yaw_rate_offset_stop_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) { yaw_rate_offset_stop = *msg; } -void yaw_rate_offset_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) -{ +void yaw_rate_offset_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) { yaw_rate_offset = *msg; } -void slip_angle_callback(const eagleye_msgs::msg::SlipAngle::ConstSharedPtr msg) -{ +void slip_angle_callback(const eagleye_msgs::msg::SlipAngle::ConstSharedPtr msg) { slip_angle = *msg; } -void heading_interpolate_callback(const eagleye_msgs::msg::Heading::ConstSharedPtr msg) -{ +void heading_interpolate_callback(const eagleye_msgs::msg::Heading::ConstSharedPtr msg) { heading_interpolate = *msg; } -void distance_callback(const eagleye_msgs::msg::Distance::ConstSharedPtr msg) -{ +void distance_callback(const eagleye_msgs::msg::Distance::ConstSharedPtr msg) { distance = *msg; } -void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) -{ - if(use_can_less_mode && !velocity_status.status.enabled_status) return; +void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) { + if (use_can_less_mode && !velocity_status.status.enabled_status) + return; imu = *msg; heading.header = msg->header; heading.header.frame_id = "base_link"; - rtk_heading_estimate(gga,imu,velocity,distance,yaw_rate_offset_stop,yaw_rate_offset,slip_angle,heading_interpolate,heading_parameter,&heading_status,&heading); + rtk_heading_estimate(gga, imu, velocity, distance, yaw_rate_offset_stop, yaw_rate_offset, + slip_angle, heading_interpolate, heading_parameter, &heading_status, + &heading); - if (heading.status.estimate_status == true) - { + if (heading.status.estimate_status == true) { pub->publish(heading); } heading.status.estimate_status = false; } -int main(int argc, char** argv) -{ +int main(int argc, char** argv) { rclcpp::init(argc, argv); auto node = rclcpp::Node::make_shared("eagleye_rtk_heading"); - std::string subscribe_gga_topic_name = "gnss/gga"; std::string yaml_file; - node->declare_parameter("yaml_file",yaml_file); - node->get_parameter("yaml_file",yaml_file); + node->declare_parameter("yaml_file", yaml_file); + node->get_parameter("yaml_file", yaml_file); std::cout << "yaml_file: " << yaml_file << std::endl; - try - { + try { YAML::Node conf = YAML::LoadFile(yaml_file); use_can_less_mode = conf["/**"]["ros__parameters"]["use_can_less_mode"].as(); heading_parameter.imu_rate = conf["/**"]["ros__parameters"]["common"]["imu_rate"].as(); - heading_parameter.gnss_rate = conf["/**"]["ros__parameters"]["common"]["gnss_rate"].as(); - heading_parameter.stop_judgment_threshold = conf["/**"]["ros__parameters"]["common"]["stop_judgment_threshold"].as(); - heading_parameter.slow_judgment_threshold = conf["/**"]["ros__parameters"]["common"]["slow_judgment_threshold"].as(); - - heading_parameter.update_distance = conf["/**"]["ros__parameters"]["rtk_heading"]["update_distance"].as(); - heading_parameter.estimated_minimum_interval = conf["/**"]["ros__parameters"]["rtk_heading"]["estimated_minimum_interval"].as(); - heading_parameter.estimated_maximum_interval = conf["/**"]["ros__parameters"]["rtk_heading"]["estimated_maximum_interval"].as(); - heading_parameter.gnss_receiving_threshold = conf["/**"]["ros__parameters"]["rtk_heading"]["gnss_receiving_threshold"].as(); - heading_parameter.outlier_threshold = conf["/**"]["ros__parameters"]["rtk_heading"]["outlier_threshold"].as(); - heading_parameter.outlier_ratio_threshold = conf["/**"]["ros__parameters"]["rtk_heading"]["outlier_ratio_threshold"].as(); - heading_parameter.curve_judgment_threshold = conf["/**"]["ros__parameters"]["rtk_heading"]["curve_judgment_threshold"].as(); - - std::cout<< "use_can_less_mode " << use_can_less_mode << std::endl; - - std::cout<< "subscribe_gga_topic_name " << subscribe_gga_topic_name << std::endl; + heading_parameter.gnss_rate = + conf["/**"]["ros__parameters"]["common"]["gnss_rate"].as(); + heading_parameter.stop_judgment_threshold = + conf["/**"]["ros__parameters"]["common"]["stop_judgment_threshold"].as(); + heading_parameter.slow_judgment_threshold = + conf["/**"]["ros__parameters"]["common"]["slow_judgment_threshold"].as(); + + heading_parameter.update_distance = + conf["/**"]["ros__parameters"]["rtk_heading"]["update_distance"].as(); + heading_parameter.estimated_minimum_interval = + conf["/**"]["ros__parameters"]["rtk_heading"]["estimated_minimum_interval"].as(); + heading_parameter.estimated_maximum_interval = + conf["/**"]["ros__parameters"]["rtk_heading"]["estimated_maximum_interval"].as(); + heading_parameter.gnss_receiving_threshold = + conf["/**"]["ros__parameters"]["rtk_heading"]["gnss_receiving_threshold"].as(); + heading_parameter.outlier_threshold = + conf["/**"]["ros__parameters"]["rtk_heading"]["outlier_threshold"].as(); + heading_parameter.outlier_ratio_threshold = + conf["/**"]["ros__parameters"]["rtk_heading"]["outlier_ratio_threshold"].as(); + heading_parameter.curve_judgment_threshold = + conf["/**"]["ros__parameters"]["rtk_heading"]["curve_judgment_threshold"].as(); + + std::cout << "use_can_less_mode " << use_can_less_mode << std::endl; + + std::cout << "subscribe_gga_topic_name " << subscribe_gga_topic_name << std::endl; std::cout << "imu_rate " << heading_parameter.imu_rate << std::endl; std::cout << "gnss_rate " << heading_parameter.gnss_rate << std::endl; - std::cout << "stop_judgment_threshold " << heading_parameter.stop_judgment_threshold << std::endl; - std::cout << "slow_judgment_threshold " << heading_parameter.slow_judgment_threshold << std::endl; + std::cout << "stop_judgment_threshold " << heading_parameter.stop_judgment_threshold + << std::endl; + std::cout << "slow_judgment_threshold " << heading_parameter.slow_judgment_threshold + << std::endl; std::cout << "update_distance " << heading_parameter.update_distance << std::endl; - std::cout << "estimated_minimum_interval " << heading_parameter.estimated_minimum_interval << std::endl; - std::cout << "estimated_maximum_interval " << heading_parameter.estimated_maximum_interval << std::endl; - std::cout << "gnss_receiving_threshold " << heading_parameter.gnss_receiving_threshold << std::endl; + std::cout << "estimated_minimum_interval " << heading_parameter.estimated_minimum_interval + << std::endl; + std::cout << "estimated_maximum_interval " << heading_parameter.estimated_maximum_interval + << std::endl; + std::cout << "gnss_receiving_threshold " << heading_parameter.gnss_receiving_threshold + << std::endl; std::cout << "outlier_threshold " << heading_parameter.outlier_threshold << std::endl; - std::cout << "outlier_ratio_threshold " << heading_parameter.outlier_ratio_threshold << std::endl; - std::cout << "curve_judgment_threshold " << heading_parameter.curve_judgment_threshold << std::endl; - } - catch (YAML::Exception& e) - { + std::cout << "outlier_ratio_threshold " << heading_parameter.outlier_ratio_threshold + << std::endl; + std::cout << "curve_judgment_threshold " << heading_parameter.curve_judgment_threshold + << std::endl; + } catch (YAML::Exception& e) { std::cerr << "\033[1;31mrtk_heading Node YAML Error: " << e.msg << "\033[0m" << std::endl; exit(3); } @@ -164,47 +169,46 @@ int main(int argc, char** argv) std::string subscribe_topic_name = "/subscribe_topic_name/invalid"; std::string subscribe_topic_name2 = "/subscribe_topic_name2/invalid"; - if (argc > 2) - { - if (strcmp(argv[1], "1st") == 0) - { + if (argc > 2) { + if (strcmp(argv[1], "1st") == 0) { publish_topic_name = "heading_1st"; subscribe_topic_name = "yaw_rate_offset_stop"; subscribe_topic_name2 = "heading_interpolate_1st"; - } - else if (strcmp(argv[1], "2nd") == 0) - { + } else if (strcmp(argv[1], "2nd") == 0) { publish_topic_name = "heading_2nd"; subscribe_topic_name = "yaw_rate_offset_1st"; subscribe_topic_name2 = "heading_interpolate_2nd"; - } - else if (strcmp(argv[1], "3rd") == 0) - { + } else if (strcmp(argv[1], "3rd") == 0) { publish_topic_name = "heading_3rd"; subscribe_topic_name = "yaw_rate_offset_2nd"; subscribe_topic_name2 = "heading_interpolate_3rd"; - } - else - { - RCLCPP_ERROR(node->get_logger(),"Invalid argument"); + } else { + RCLCPP_ERROR(node->get_logger(), "Invalid argument"); rclcpp::shutdown(); } - } - else - { - RCLCPP_ERROR(node->get_logger(),"No arguments"); + } else { + RCLCPP_ERROR(node->get_logger(), "No arguments"); rclcpp::shutdown(); } - auto sub1 = node->create_subscription("imu/data_tf_converted", 1000, imu_callback); - auto sub2 = node->create_subscription(subscribe_gga_topic_name, 1000, gga_callback); - auto sub3 = node->create_subscription("velocity", rclcpp::QoS(10), velocity_callback); - auto sub4 = node->create_subscription("velocity_status", rclcpp::QoS(10), velocity_status_callback); - auto sub5 = node->create_subscription("yaw_rate_offset_stop", 1000, yaw_rate_offset_stop_callback); - auto sub6 = node->create_subscription(subscribe_topic_name, 1000, yaw_rate_offset_callback); - auto sub7 = node->create_subscription("slip_angle", 1000, slip_angle_callback); - auto sub8 = node->create_subscription(subscribe_topic_name2, 1000, heading_interpolate_callback); - auto sub9 = node->create_subscription("distance", 1000, distance_callback); + auto sub1 = + node->create_subscription("imu/data_tf_converted", 1000, imu_callback); + auto sub2 = + node->create_subscription(subscribe_gga_topic_name, 1000, gga_callback); + auto sub3 = node->create_subscription( + "velocity", rclcpp::QoS(10), velocity_callback); + auto sub4 = node->create_subscription( + "velocity_status", rclcpp::QoS(10), velocity_status_callback); + auto sub5 = node->create_subscription( + "yaw_rate_offset_stop", 1000, yaw_rate_offset_stop_callback); + auto sub6 = node->create_subscription( + subscribe_topic_name, 1000, yaw_rate_offset_callback); + auto sub7 = node->create_subscription("slip_angle", 1000, + slip_angle_callback); + auto sub8 = node->create_subscription(subscribe_topic_name2, 1000, + heading_interpolate_callback); + auto sub9 = + node->create_subscription("distance", 1000, distance_callback); pub = node->create_publisher(publish_topic_name, 1000); diff --git a/eagleye_rt/src/slip_angle_node.cpp b/eagleye_rt/src/slip_angle_node.cpp index ed4374f6..776e5875 100644 --- a/eagleye_rt/src/slip_angle_node.cpp +++ b/eagleye_rt/src/slip_angle_node.cpp @@ -46,42 +46,35 @@ struct SlipangleParameter slip_angle_parameter; static bool use_can_less_mode; -void velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) -{ +void velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) { velocity = *msg; } -void velocity_status_callback(const eagleye_msgs::msg::StatusStamped::ConstSharedPtr msg) -{ +void velocity_status_callback(const eagleye_msgs::msg::StatusStamped::ConstSharedPtr msg) { velocity_status = *msg; } -void velocity_scale_factor_callback(const eagleye_msgs::msg::VelocityScaleFactor::ConstSharedPtr msg) -{ +void velocity_scale_factor_callback( + const eagleye_msgs::msg::VelocityScaleFactor::ConstSharedPtr msg) { velocity_scale_factor = *msg; } -void yaw_rate_offset_stop_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) -{ +void yaw_rate_offset_stop_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) { yaw_rate_offset_stop = *msg; } -void yaw_rate_offset_2nd_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) -{ +void yaw_rate_offset_2nd_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) { yaw_rate_offset_2nd = *msg; } -void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) -{ - if(use_can_less_mode && !velocity_status.status.enabled_status) return; +void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) { + if (use_can_less_mode && !velocity_status.status.enabled_status) + return; eagleye_msgs::msg::StatusStamped velocity_enable_status; - if(use_can_less_mode) - { + if (use_can_less_mode) { velocity_enable_status = velocity_status; - } - else - { + } else { velocity_enable_status.header = velocity_scale_factor.header; velocity_enable_status.status = velocity_scale_factor.status; } @@ -89,46 +82,53 @@ void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) imu = *msg; slip_angle.header = msg->header; slip_angle.header.frame_id = "base_link"; - slip_angle_estimate(imu,velocity,velocity_enable_status,yaw_rate_offset_stop,yaw_rate_offset_2nd,slip_angle_parameter,&slip_angle); + slip_angle_estimate(imu, velocity, velocity_enable_status, yaw_rate_offset_stop, + yaw_rate_offset_2nd, slip_angle_parameter, &slip_angle); pub->publish(slip_angle); slip_angle.status.estimate_status = false; } -int main(int argc, char** argv) -{ +int main(int argc, char** argv) { rclcpp::init(argc, argv); auto node = rclcpp::Node::make_shared("eagleye_slip_angle"); - + std::string yaml_file; - node->declare_parameter("yaml_file",yaml_file); - node->get_parameter("yaml_file",yaml_file); + node->declare_parameter("yaml_file", yaml_file); + node->get_parameter("yaml_file", yaml_file); std::cout << "yaml_file: " << yaml_file << std::endl; - try - { + try { YAML::Node conf = YAML::LoadFile(yaml_file); - slip_angle_parameter.stop_judgment_threshold = conf["/**"]["ros__parameters"]["common"]["stop_judgment_threshold"].as(); - slip_angle_parameter.manual_coefficient = conf["/**"]["ros__parameters"]["slip_angle"]["manual_coefficient"].as(); + slip_angle_parameter.stop_judgment_threshold = + conf["/**"]["ros__parameters"]["common"]["stop_judgment_threshold"].as(); + slip_angle_parameter.manual_coefficient = + conf["/**"]["ros__parameters"]["slip_angle"]["manual_coefficient"].as(); - std::cout << "stop_judgment_threshold " << slip_angle_parameter.stop_judgment_threshold << std::endl; + std::cout << "stop_judgment_threshold " << slip_angle_parameter.stop_judgment_threshold + << std::endl; std::cout << "manual_coefficient " << slip_angle_parameter.manual_coefficient << std::endl; - } - catch (YAML::Exception& e) - { + } catch (YAML::Exception& e) { std::cerr << "\033[1;31mslip_angle Node YAML Error: " << e.msg << "\033[0m" << std::endl; exit(3); } - auto sub1 = node->create_subscription("imu/data_tf_converted", rclcpp::QoS(10), imu_callback); //ros::TransportHints().tcpNoDelay() - auto sub2 = node->create_subscription("velocity_scale_factor", rclcpp::QoS(10), velocity_scale_factor_callback); //ros::TransportHints().tcpNoDelay() - auto sub3 = node->create_subscription("yaw_rate_offset_stop", rclcpp::QoS(10), yaw_rate_offset_stop_callback); //ros::TransportHints().tcpNoDelay() - auto sub4 = node->create_subscription("yaw_rate_offset_2nd", rclcpp::QoS(10), yaw_rate_offset_2nd_callback); //ros::TransportHints().tcpNoDelay() - auto sub5 = node->create_subscription("velocity", rclcpp::QoS(10), velocity_callback); //ros::TransportHints().tcpNoDelay() + auto sub1 = node->create_subscription( + "imu/data_tf_converted", rclcpp::QoS(10), imu_callback); //ros::TransportHints().tcpNoDelay() + auto sub2 = node->create_subscription( + "velocity_scale_factor", rclcpp::QoS(10), + velocity_scale_factor_callback); //ros::TransportHints().tcpNoDelay() + auto sub3 = node->create_subscription( + "yaw_rate_offset_stop", rclcpp::QoS(10), + yaw_rate_offset_stop_callback); //ros::TransportHints().tcpNoDelay() + auto sub4 = node->create_subscription( + "yaw_rate_offset_2nd", rclcpp::QoS(10), + yaw_rate_offset_2nd_callback); //ros::TransportHints().tcpNoDelay() + auto sub5 = node->create_subscription( + "velocity", rclcpp::QoS(10), velocity_callback); //ros::TransportHints().tcpNoDelay() pub = node->create_publisher("slip_angle", rclcpp::QoS(10)); rclcpp::spin(node); - return 0; } diff --git a/eagleye_rt/src/slip_coefficient_node.cpp b/eagleye_rt/src/slip_coefficient_node.cpp index fb8b9612..87be487c 100644 --- a/eagleye_rt/src/slip_coefficient_node.cpp +++ b/eagleye_rt/src/slip_coefficient_node.cpp @@ -52,104 +52,116 @@ static double estimate_coefficient; bool is_first_correction_velocity = false; static bool use_can_less_mode; -void rtklib_nav_callback(const rtklib_msgs::msg::RtklibNav::ConstSharedPtr msg) -{ +void rtklib_nav_callback(const rtklib_msgs::msg::RtklibNav::ConstSharedPtr msg) { rtklib_nav = *msg; } -void velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) -{ +void velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) { velocity = *msg; - if (is_first_correction_velocity == false && msg->twist.linear.x > slip_coefficient_parameter.moving_judgment_threshold) - { + if (is_first_correction_velocity == false && + msg->twist.linear.x > slip_coefficient_parameter.moving_judgment_threshold) { is_first_correction_velocity = true; } } -void velocity_status_callback(const eagleye_msgs::msg::StatusStamped::ConstSharedPtr msg) -{ +void velocity_status_callback(const eagleye_msgs::msg::StatusStamped::ConstSharedPtr msg) { velocity_status = *msg; } -void yaw_rate_offset_stop_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) -{ +void yaw_rate_offset_stop_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) { yaw_rate_offset_stop = *msg; } -void yaw_rate_offset_2nd_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) -{ +void yaw_rate_offset_2nd_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) { yaw_rate_offset_2nd = *msg; } -void heading_interpolate_3rd_callback(const eagleye_msgs::msg::Heading::ConstSharedPtr msg) -{ +void heading_interpolate_3rd_callback(const eagleye_msgs::msg::Heading::ConstSharedPtr msg) { heading_interpolate_3rd = *msg; } -void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) -{ - if (is_first_correction_velocity == false) return; - if (use_can_less_mode && !velocity_status.status.enabled_status) return; +void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) { + if (is_first_correction_velocity == false) + return; + if (use_can_less_mode && !velocity_status.status.enabled_status) + return; imu = *msg; - slip_coefficient_estimate(imu,rtklib_nav,velocity,yaw_rate_offset_stop,yaw_rate_offset_2nd,heading_interpolate_3rd,slip_coefficient_parameter,&slip_coefficient_status,&estimate_coefficient); + slip_coefficient_estimate(imu, rtklib_nav, velocity, yaw_rate_offset_stop, yaw_rate_offset_2nd, + heading_interpolate_3rd, slip_coefficient_parameter, + &slip_coefficient_status, &estimate_coefficient); - std::cout << "--- \033[1;34m slip_coefficient \033[m ------------------------------"<< std::endl; - std::cout<<"\033[1m estimate_coefficient \033[m "<declare_parameter("yaml_file",yaml_file); - node->get_parameter("yaml_file",yaml_file); + node->declare_parameter("yaml_file", yaml_file); + node->get_parameter("yaml_file", yaml_file); std::cout << "yaml_file: " << yaml_file << std::endl; - try - { + try { YAML::Node conf = YAML::LoadFile(yaml_file); use_can_less_mode = conf["/**"]["ros__parameters"]["use_can_less_mode"].as(); - slip_coefficient_parameter.imu_rate = conf["/**"]["ros__parameters"]["common"]["imu_rate"].as(); - slip_coefficient_parameter.stop_judgment_threshold = conf["/**"]["ros__parameters"]["common"]["stop_judgment_threshold"].as(); - slip_coefficient_parameter.moving_judgment_threshold = conf["/**"]["ros__parameters"]["common"]["moving_judgment_threshold"].as(); + slip_coefficient_parameter.imu_rate = + conf["/**"]["ros__parameters"]["common"]["imu_rate"].as(); + slip_coefficient_parameter.stop_judgment_threshold = + conf["/**"]["ros__parameters"]["common"]["stop_judgment_threshold"].as(); + slip_coefficient_parameter.moving_judgment_threshold = + conf["/**"]["ros__parameters"]["common"]["moving_judgment_threshold"].as(); - slip_coefficient_parameter.estimated_minimum_interval = conf["/**"]["ros__parameters"]["slip_coefficient"]["estimated_minimum_interval"].as(); - slip_coefficient_parameter.estimated_maximum_interval = conf["/**"]["ros__parameters"]["slip_coefficient"]["estimated_maximum_interval"].as(); - slip_coefficient_parameter.curve_judgment_threshold = conf["/**"]["ros__parameters"]["slip_coefficient"]["curve_judgment_threshold"].as(); - slip_coefficient_parameter.lever_arm = conf["/**"]["ros__parameters"]["slip_coefficient"]["lever_arm"].as(); + slip_coefficient_parameter.estimated_minimum_interval = + conf["/**"]["ros__parameters"]["slip_coefficient"]["estimated_minimum_interval"].as(); + slip_coefficient_parameter.estimated_maximum_interval = + conf["/**"]["ros__parameters"]["slip_coefficient"]["estimated_maximum_interval"].as(); + slip_coefficient_parameter.curve_judgment_threshold = + conf["/**"]["ros__parameters"]["slip_coefficient"]["curve_judgment_threshold"].as(); + slip_coefficient_parameter.lever_arm = + conf["/**"]["ros__parameters"]["slip_coefficient"]["lever_arm"].as(); - std::cout<< "use_can_less_mode " << use_can_less_mode << std::endl; + std::cout << "use_can_less_mode " << use_can_less_mode << std::endl; std::cout << "imu_rate " << slip_coefficient_parameter.imu_rate << std::endl; - std::cout << "stop_judgment_threshold " << slip_coefficient_parameter.stop_judgment_threshold << std::endl; - std::cout << "moving_judgment_threshold " << slip_coefficient_parameter.moving_judgment_threshold << std::endl; - - std::cout << "estimated_minimum_interval " << slip_coefficient_parameter.estimated_minimum_interval << std::endl; - std::cout << "estimated_maximum_interval " << slip_coefficient_parameter.estimated_maximum_interval << std::endl; - std::cout << "curve_judgment_threshold " << slip_coefficient_parameter.curve_judgment_threshold << std::endl; + std::cout << "stop_judgment_threshold " << slip_coefficient_parameter.stop_judgment_threshold + << std::endl; + std::cout << "moving_judgment_threshold " + << slip_coefficient_parameter.moving_judgment_threshold << std::endl; + + std::cout << "estimated_minimum_interval " + << slip_coefficient_parameter.estimated_minimum_interval << std::endl; + std::cout << "estimated_maximum_interval " + << slip_coefficient_parameter.estimated_maximum_interval << std::endl; + std::cout << "curve_judgment_threshold " << slip_coefficient_parameter.curve_judgment_threshold + << std::endl; std::cout << "lever_arm " << slip_coefficient_parameter.lever_arm << std::endl; - } - catch (YAML::Exception& e) - { + } catch (YAML::Exception& e) { std::cerr << "\033[1;31mslip_coefficient Node YAML Error: " << e.msg << "\033[0m" << std::endl; exit(3); } - auto sub1 = node->create_subscription("imu/data_tf_converted", 1000, imu_callback); - auto sub2 = node->create_subscription(subscribe_rtklib_nav_topic_name, 1000, rtklib_nav_callback); - auto sub3 = node->create_subscription("velocity", rclcpp::QoS(10), velocity_callback); - auto sub4 = node->create_subscription("velocity_status", rclcpp::QoS(10), velocity_status_callback); - auto sub5 = node->create_subscription("yaw_rate_offset_stop", rclcpp::QoS(10), yaw_rate_offset_stop_callback); - auto sub6 = node->create_subscription("yaw_rate_offset_2nd", rclcpp::QoS(10), yaw_rate_offset_2nd_callback); - auto sub7 = node->create_subscription("heading_interpolate_3rd", rclcpp::QoS(10), heading_interpolate_3rd_callback); + auto sub1 = + node->create_subscription("imu/data_tf_converted", 1000, imu_callback); + auto sub2 = node->create_subscription( + subscribe_rtklib_nav_topic_name, 1000, rtklib_nav_callback); + auto sub3 = node->create_subscription( + "velocity", rclcpp::QoS(10), velocity_callback); + auto sub4 = node->create_subscription( + "velocity_status", rclcpp::QoS(10), velocity_status_callback); + auto sub5 = node->create_subscription( + "yaw_rate_offset_stop", rclcpp::QoS(10), yaw_rate_offset_stop_callback); + auto sub6 = node->create_subscription( + "yaw_rate_offset_2nd", rclcpp::QoS(10), yaw_rate_offset_2nd_callback); + auto sub7 = node->create_subscription( + "heading_interpolate_3rd", rclcpp::QoS(10), heading_interpolate_3rd_callback); rclcpp::spin(node); diff --git a/eagleye_rt/src/smoothing_node.cpp b/eagleye_rt/src/smoothing_node.cpp index 3e5767e5..d3ba0ea8 100644 --- a/eagleye_rt/src/smoothing_node.cpp +++ b/eagleye_rt/src/smoothing_node.cpp @@ -33,7 +33,7 @@ #include "eagleye_navigation/eagleye_navigation.hpp" static rtklib_msgs::msg::RtklibNav rtklib_nav; -static eagleye_msgs::msg::Position enu_absolute_pos,gnss_smooth_pos_enu; +static eagleye_msgs::msg::Position enu_absolute_pos, gnss_smooth_pos_enu; static geometry_msgs::msg::TwistStamped velocity; static eagleye_msgs::msg::StatusStamped velocity_status; rclcpp::Publisher::SharedPtr pub; @@ -49,34 +49,33 @@ tf2_ros::Buffer tfBuffer_(std::make_shared(clock_)); const std::string node_name = "eagleye_smoothing"; -void velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) -{ +void velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) { velocity = *msg; } -void velocity_status_callback(const eagleye_msgs::msg::StatusStamped::ConstSharedPtr msg) -{ +void velocity_status_callback(const eagleye_msgs::msg::StatusStamped::ConstSharedPtr msg) { velocity_status = *msg; } -void rtklib_nav_callback(const rtklib_msgs::msg::RtklibNav::ConstSharedPtr msg) -{ - if(use_can_less_mode && !velocity_status.status.enabled_status) return; +void rtklib_nav_callback(const rtklib_msgs::msg::RtklibNav::ConstSharedPtr msg) { + if (use_can_less_mode && !velocity_status.status.enabled_status) + return; rtklib_nav = *msg; gnss_smooth_pos_enu.header = msg->header; gnss_smooth_pos_enu.header.frame_id = "base_link"; - smoothing_estimate(rtklib_nav,velocity,smoothing_parameter,&smoothing_status,&gnss_smooth_pos_enu); + smoothing_estimate(rtklib_nav, velocity, smoothing_parameter, &smoothing_status, + &gnss_smooth_pos_enu); gnss_smooth_pos_enu.enu_pos.z -= position_parameter.tf_gnss_translation_z; pub->publish(gnss_smooth_pos_enu); } -void on_timer() -{ +void on_timer() { geometry_msgs::msg::TransformStamped transformStamped; - try - { - transformStamped = tfBuffer_.lookupTransform(position_parameter.tf_gnss_parent_frame, position_parameter.tf_gnss_child_frame, tf2::TimePointZero); + try { + transformStamped = + tfBuffer_.lookupTransform(position_parameter.tf_gnss_parent_frame, + position_parameter.tf_gnss_child_frame, tf2::TimePointZero); position_parameter.tf_gnss_translation_x = transformStamped.transform.translation.x; position_parameter.tf_gnss_translation_y = transformStamped.transform.translation.y; @@ -85,71 +84,78 @@ void on_timer() position_parameter.tf_gnss_rotation_y = transformStamped.transform.rotation.y; position_parameter.tf_gnss_rotation_z = transformStamped.transform.rotation.z; position_parameter.tf_gnss_rotation_w = transformStamped.transform.rotation.w; - } - catch (tf2::TransformException& ex) - { + } catch (tf2::TransformException& ex) { RCLCPP_WARN(rclcpp::get_logger(node_name), "%s", ex.what()); return; } } - -int main(int argc, char** argv) -{ +int main(int argc, char** argv) { rclcpp::init(argc, argv); auto node = rclcpp::Node::make_shared(node_name); std::string subscribe_rtklib_nav_topic_name = "gnss/rtklib_nav"; std::string yaml_file; - node->declare_parameter("yaml_file",yaml_file); - node->get_parameter("yaml_file",yaml_file); + node->declare_parameter("yaml_file", yaml_file); + node->get_parameter("yaml_file", yaml_file); std::cout << "yaml_file: " << yaml_file << std::endl; - try - { + try { YAML::Node conf = YAML::LoadFile(yaml_file); use_can_less_mode = conf["/**"]["ros__parameters"]["use_can_less_mode"].as(); - position_parameter.tf_gnss_parent_frame = conf["/**"]["ros__parameters"]["tf_gnss_frame"]["parent"].as(); - position_parameter.tf_gnss_child_frame = conf["/**"]["ros__parameters"]["tf_gnss_frame"]["child"].as(); + position_parameter.tf_gnss_parent_frame = + conf["/**"]["ros__parameters"]["tf_gnss_frame"]["parent"].as(); + position_parameter.tf_gnss_child_frame = + conf["/**"]["ros__parameters"]["tf_gnss_frame"]["child"].as(); - smoothing_parameter.ecef_base_pos_x = conf["/**"]["ros__parameters"]["ecef_base_pos"]["x"].as(); - smoothing_parameter.ecef_base_pos_y = conf["/**"]["ros__parameters"]["ecef_base_pos"]["y"].as(); - smoothing_parameter.ecef_base_pos_z = conf["/**"]["ros__parameters"]["ecef_base_pos"]["z"].as(); + smoothing_parameter.ecef_base_pos_x = + conf["/**"]["ros__parameters"]["ecef_base_pos"]["x"].as(); + smoothing_parameter.ecef_base_pos_y = + conf["/**"]["ros__parameters"]["ecef_base_pos"]["y"].as(); + smoothing_parameter.ecef_base_pos_z = + conf["/**"]["ros__parameters"]["ecef_base_pos"]["z"].as(); - smoothing_parameter.gnss_rate = conf["/**"]["ros__parameters"]["common"]["gnss_rate"].as(); - smoothing_parameter.moving_judgment_threshold = conf["/**"]["ros__parameters"]["common"]["moving_judgment_threshold"].as(); - smoothing_parameter.moving_average_time = conf["/**"]["ros__parameters"]["smoothing"]["moving_average_time"].as(); - smoothing_parameter.moving_ratio_threshold = conf["/**"]["ros__parameters"]["smoothing"]["moving_ratio_threshold"].as(); + smoothing_parameter.gnss_rate = + conf["/**"]["ros__parameters"]["common"]["gnss_rate"].as(); + smoothing_parameter.moving_judgment_threshold = + conf["/**"]["ros__parameters"]["common"]["moving_judgment_threshold"].as(); + smoothing_parameter.moving_average_time = + conf["/**"]["ros__parameters"]["smoothing"]["moving_average_time"].as(); + smoothing_parameter.moving_ratio_threshold = + conf["/**"]["ros__parameters"]["smoothing"]["moving_ratio_threshold"].as(); - std::cout<< "use_can_less_mode " << use_can_less_mode << std::endl; + std::cout << "use_can_less_mode " << use_can_less_mode << std::endl; - std::cout<< "subscribe_rtklib_nav_topic_name " << subscribe_rtklib_nav_topic_name << std::endl; + std::cout << "subscribe_rtklib_nav_topic_name " << subscribe_rtklib_nav_topic_name << std::endl; - std::cout<< "ecef_base_pos_x " << smoothing_parameter.ecef_base_pos_x << std::endl; - std::cout<< "ecef_base_pos_y " << smoothing_parameter.ecef_base_pos_y << std::endl; - std::cout<< "ecef_base_pos_z " << smoothing_parameter.ecef_base_pos_z << std::endl; + std::cout << "ecef_base_pos_x " << smoothing_parameter.ecef_base_pos_x << std::endl; + std::cout << "ecef_base_pos_y " << smoothing_parameter.ecef_base_pos_y << std::endl; + std::cout << "ecef_base_pos_z " << smoothing_parameter.ecef_base_pos_z << std::endl; std::cout << "gnss_rate " << smoothing_parameter.gnss_rate << std::endl; - std::cout << "moving_judgment_threshold " << smoothing_parameter.moving_judgment_threshold << std::endl; + std::cout << "moving_judgment_threshold " << smoothing_parameter.moving_judgment_threshold + << std::endl; std::cout << "moving_average_time " << smoothing_parameter.moving_average_time << std::endl; - std::cout << "moving_ratio_threshold " << smoothing_parameter.moving_ratio_threshold << std::endl; - } - catch (YAML::Exception& e) - { + std::cout << "moving_ratio_threshold " << smoothing_parameter.moving_ratio_threshold + << std::endl; + } catch (YAML::Exception& e) { std::cerr << "\033[1;31msmoothing Node YAML Error: " << e.msg << "\033[0m" << std::endl; exit(3); } - auto sub1 = node->create_subscription("velocity", rclcpp::QoS(10), velocity_callback); - auto sub2 = node->create_subscription("velocity_status", rclcpp::QoS(10), velocity_status_callback); - auto sub3 = node->create_subscription(subscribe_rtklib_nav_topic_name, 1000, rtklib_nav_callback); + auto sub1 = node->create_subscription( + "velocity", rclcpp::QoS(10), velocity_callback); + auto sub2 = node->create_subscription( + "velocity_status", rclcpp::QoS(10), velocity_status_callback); + auto sub3 = node->create_subscription( + subscribe_rtklib_nav_topic_name, 1000, rtklib_nav_callback); pub = node->create_publisher("gnss_smooth_pos_enu", rclcpp::QoS(10)); const auto period_ns = - std::chrono::duration_cast(std::chrono::duration(0.5)); + std::chrono::duration_cast(std::chrono::duration(0.5)); auto timer_callback = std::bind(on_timer); auto timer = std::make_shared>( node->get_clock(), period_ns, std::move(timer_callback), diff --git a/eagleye_rt/src/tf_converted_imu.cpp b/eagleye_rt/src/tf_converted_imu.cpp index 43dd4f86..a72e65b9 100644 --- a/eagleye_rt/src/tf_converted_imu.cpp +++ b/eagleye_rt/src/tf_converted_imu.cpp @@ -45,8 +45,7 @@ #include #include -class TFConvertedIMU : public rclcpp::Node -{ +class TFConvertedIMU : public rclcpp::Node { public: TFConvertedIMU(); ~TFConvertedIMU(); @@ -67,12 +66,12 @@ class TFConvertedIMU : public rclcpp::Node void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg); }; -TFConvertedIMU::TFConvertedIMU() : Node("eagleye_tf_converted_imu"), - clock_(RCL_ROS_TIME), - tfbuffer_(std::make_shared(clock_)), - tflistener_(tfbuffer_), - logger_(get_logger()) -{ +TFConvertedIMU::TFConvertedIMU() + : Node("eagleye_tf_converted_imu") + , clock_(RCL_ROS_TIME) + , tfbuffer_(std::make_shared(clock_)) + , tflistener_(tfbuffer_) + , logger_(get_logger()) { std::string subscribe_imu_topic_name = "/imu/data_raw"; std::string publish_imu_topic_name = "imu/data_tf_converted"; @@ -88,23 +87,24 @@ TFConvertedIMU::TFConvertedIMU() : Node("eagleye_tf_converted_imu"), std::cout << "publish_imu_topic_name: " << publish_imu_topic_name << std::endl; std::cout << "tf_base_link_frame: " << tf_base_link_frame_ << std::endl; - sub_ = create_subscription(subscribe_imu_topic_name, rclcpp::QoS(10), std::bind(&TFConvertedIMU::imu_callback, this, std::placeholders::_1)); + sub_ = create_subscription( + subscribe_imu_topic_name, rclcpp::QoS(10), + std::bind(&TFConvertedIMU::imu_callback, this, std::placeholders::_1)); pub_ = create_publisher("imu/data_tf_converted", rclcpp::QoS(10)); }; TFConvertedIMU::~TFConvertedIMU() {}; -void TFConvertedIMU::imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) -{ +void TFConvertedIMU::imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) { imu_ = *msg; tf_converted_imu_.header = imu_.header; - try - { - const geometry_msgs::msg::TransformStamped transform = tfbuffer_.lookupTransform( - tf_base_link_frame_, msg->header.frame_id, tf2::TimePointZero); + try { + const geometry_msgs::msg::TransformStamped transform = + tfbuffer_.lookupTransform(tf_base_link_frame_, msg->header.frame_id, tf2::TimePointZero); - geometry_msgs::msg::Vector3Stamped angular_velocity, linear_acceleration, transformed_angular_velocity, transformed_linear_acceleration; + geometry_msgs::msg::Vector3Stamped angular_velocity, linear_acceleration, + transformed_angular_velocity, transformed_linear_acceleration; geometry_msgs::msg::Quaternion transformed_quaternion; angular_velocity.header = imu_.header; @@ -126,9 +126,7 @@ void TFConvertedIMU::imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr ms tf_converted_imu_.linear_acceleration = transformed_linear_acceleration.vector; tf_converted_imu_.orientation = transformed_quaternion; - } - catch (tf2::TransformException &ex) - { + } catch (tf2::TransformException& ex) { std::cout << "Failed to lookup transform" << std::endl; RCLCPP_WARN(rclcpp::get_logger("tf_converted_imu"), "Failed to lookup transform."); return; @@ -136,8 +134,7 @@ void TFConvertedIMU::imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr ms pub_->publish(tf_converted_imu_); }; -int main(int argc, char **argv) -{ +int main(int argc, char** argv) { rclcpp::init(argc, argv); rclcpp::spin(std::make_shared()); diff --git a/eagleye_rt/src/trajectory_node.cpp b/eagleye_rt/src/trajectory_node.cpp index 966835a4..4239efa9 100644 --- a/eagleye_rt/src/trajectory_node.cpp +++ b/eagleye_rt/src/trajectory_node.cpp @@ -57,93 +57,80 @@ struct TrajectoryStatus trajectory_status; static double timer_update_rate = 10; static double th_deadlock_time = 1; -static double imu_time_last,velocity_time_last; +static double imu_time_last, velocity_time_last; static bool input_status; static bool use_can_less_mode; static std::string node_name = "eagleye_trajectory"; -void correction_velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) -{ +void correction_velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) { correction_velocity = *msg; } -void velocity_status_callback(const eagleye_msgs::msg::StatusStamped::ConstSharedPtr msg) -{ +void velocity_status_callback(const eagleye_msgs::msg::StatusStamped::ConstSharedPtr msg) { velocity_status = *msg; } -void velocity_scale_factor_callback(const eagleye_msgs::msg::VelocityScaleFactor::ConstSharedPtr msg) -{ +void velocity_scale_factor_callback( + const eagleye_msgs::msg::VelocityScaleFactor::ConstSharedPtr msg) { velocity_scale_factor = *msg; } -void heading_interpolate_3rd_callback(const eagleye_msgs::msg::Heading::ConstSharedPtr msg) -{ +void heading_interpolate_3rd_callback(const eagleye_msgs::msg::Heading::ConstSharedPtr msg) { heading_interpolate_3rd = *msg; } -void yaw_rate_offset_stop_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) -{ +void yaw_rate_offset_stop_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) { yaw_rate_offset_stop = *msg; } -void yaw_rate_offset_2nd_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) -{ +void yaw_rate_offset_2nd_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) { yaw_rate_offset_2nd = *msg; } -void pitching_callback(const eagleye_msgs::msg::Pitching::ConstSharedPtr msg) -{ +void pitching_callback(const eagleye_msgs::msg::Pitching::ConstSharedPtr msg) { pitching = *msg; } -void velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) -{ +void velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) { velocity = *msg; } -void on_timer() -{ +void on_timer() { rclcpp::Time imu_clock(imu.header.stamp); double imu_time = imu_clock.seconds(); rclcpp::Time velocity_clock(velocity.header.stamp); double velocity_time = velocity_clock.seconds(); if (std::abs(imu_time - imu_time_last) < th_deadlock_time && std::abs(velocity_time - velocity_time_last) < th_deadlock_time && - std::abs(velocity_time - imu_time) < th_deadlock_time) - { + std::abs(velocity_time - imu_time) < th_deadlock_time) { input_status = true; - } - else - { + } else { input_status = false; RCLCPP_WARN(rclcpp::get_logger(node_name), "Twist is missing the required input topics."); } - if (imu_time != imu_time_last) imu_time_last = imu_time; - if (velocity_time != velocity_time_last) velocity_time_last = velocity_time; + if (imu_time != imu_time_last) + imu_time_last = imu_time; + if (velocity_time != velocity_time_last) + velocity_time_last = velocity_time; } -void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) -{ - if(use_can_less_mode && !velocity_status.status.enabled_status) return; +void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) { + if (use_can_less_mode && !velocity_status.status.enabled_status) + return; eagleye_msgs::msg::StatusStamped velocity_enable_status; - if(use_can_less_mode) - { + if (use_can_less_mode) { velocity_enable_status = velocity_status; - } - else - { + } else { velocity_enable_status.header = velocity_scale_factor.header; velocity_enable_status.status = velocity_scale_factor.status; } imu = *msg; - if(input_status) - { + if (input_status) { enu_vel.header = msg->header; enu_vel.header.frame_id = "gnss"; enu_relative_pos.header = msg->header; @@ -152,11 +139,12 @@ void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) eagleye_twist.header.frame_id = "base_link"; eagleye_twist_with_covariance.header = msg->header; eagleye_twist_with_covariance.header.frame_id = "base_link"; - trajectory3d_estimate(imu,correction_velocity,velocity_enable_status,heading_interpolate_3rd,yaw_rate_offset_stop,yaw_rate_offset_2nd,pitching, - trajectory_parameter,&trajectory_status,&enu_vel,&enu_relative_pos,&eagleye_twist, &eagleye_twist_with_covariance); + trajectory3d_estimate(imu, correction_velocity, velocity_enable_status, heading_interpolate_3rd, + yaw_rate_offset_stop, yaw_rate_offset_2nd, pitching, trajectory_parameter, + &trajectory_status, &enu_vel, &enu_relative_pos, &eagleye_twist, + &eagleye_twist_with_covariance); - if (heading_interpolate_3rd.status.enabled_status) - { + if (heading_interpolate_3rd.status.enabled_status) { pub1->publish(enu_vel); pub2->publish(enu_relative_pos); } @@ -165,67 +153,86 @@ void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) } } -int main(int argc, char** argv) -{ +int main(int argc, char** argv) { rclcpp::init(argc, argv); auto node = rclcpp::Node::make_shared(node_name); std::string subscribe_twist_topic_name = "vehicle/twist"; std::string yaml_file; - node->declare_parameter("yaml_file",yaml_file); - node->get_parameter("yaml_file",yaml_file); + node->declare_parameter("yaml_file", yaml_file); + node->get_parameter("yaml_file", yaml_file); std::cout << "yaml_file: " << yaml_file << std::endl; - try - { + try { YAML::Node conf = YAML::LoadFile(yaml_file); use_can_less_mode = conf["/**"]["ros__parameters"]["use_can_less_mode"].as(); - trajectory_parameter.stop_judgment_threshold = conf["/**"]["ros__parameters"]["common"]["stop_judgment_threshold"].as(); - trajectory_parameter.curve_judgment_threshold = conf["/**"]["ros__parameters"]["trajectory"]["curve_judgment_threshold"].as(); - trajectory_parameter.sensor_noise_velocity = conf["/**"]["ros__parameters"]["trajectory"]["sensor_noise_velocity"].as(); - trajectory_parameter.sensor_scale_noise_velocity = conf["/**"]["ros__parameters"]["trajectory"]["sensor_scale_noise_velocity"].as(); - trajectory_parameter.sensor_noise_yaw_rate = conf["/**"]["ros__parameters"]["trajectory"]["sensor_noise_yaw_rate"].as(); - trajectory_parameter.sensor_bias_noise_yaw_rate = conf["/**"]["ros__parameters"]["trajectory"]["sensor_bias_noise_yaw_rate"].as(); - timer_update_rate = conf["/**"]["ros__parameters"]["trajectory"]["timer_update_rate"].as(); + trajectory_parameter.stop_judgment_threshold = + conf["/**"]["ros__parameters"]["common"]["stop_judgment_threshold"].as(); + trajectory_parameter.curve_judgment_threshold = + conf["/**"]["ros__parameters"]["trajectory"]["curve_judgment_threshold"].as(); + trajectory_parameter.sensor_noise_velocity = + conf["/**"]["ros__parameters"]["trajectory"]["sensor_noise_velocity"].as(); + trajectory_parameter.sensor_scale_noise_velocity = + conf["/**"]["ros__parameters"]["trajectory"]["sensor_scale_noise_velocity"].as(); + trajectory_parameter.sensor_noise_yaw_rate = + conf["/**"]["ros__parameters"]["trajectory"]["sensor_noise_yaw_rate"].as(); + trajectory_parameter.sensor_bias_noise_yaw_rate = + conf["/**"]["ros__parameters"]["trajectory"]["sensor_bias_noise_yaw_rate"].as(); + timer_update_rate = + conf["/**"]["ros__parameters"]["trajectory"]["timer_update_rate"].as(); // deadlock_threshold = conf["/**"]["ros__parameters"]["trajectory"]["deadlock_threshold"].as(); - std::cout<< "use_can_less_mode " << use_can_less_mode << std::endl; + std::cout << "use_can_less_mode " << use_can_less_mode << std::endl; - std::cout<< "subscribe_twist_topic_name " << subscribe_twist_topic_name << std::endl; + std::cout << "subscribe_twist_topic_name " << subscribe_twist_topic_name << std::endl; - std::cout << "stop_judgment_threshold " << trajectory_parameter.stop_judgment_threshold << std::endl; + std::cout << "stop_judgment_threshold " << trajectory_parameter.stop_judgment_threshold + << std::endl; - std::cout << "curve_judgment_threshold " << trajectory_parameter.curve_judgment_threshold << std::endl; + std::cout << "curve_judgment_threshold " << trajectory_parameter.curve_judgment_threshold + << std::endl; - std::cout << "sensor_noise_velocity " << trajectory_parameter.sensor_noise_velocity << std::endl; - std::cout << "sensor_scale_noise_velocity " << trajectory_parameter.sensor_scale_noise_velocity << std::endl; - std::cout << "sensor_noise_yaw_rate " << trajectory_parameter.sensor_noise_yaw_rate << std::endl; - std::cout << "sensor_bias_noise_yaw_rate " << trajectory_parameter.sensor_bias_noise_yaw_rate << std::endl; + std::cout << "sensor_noise_velocity " << trajectory_parameter.sensor_noise_velocity + << std::endl; + std::cout << "sensor_scale_noise_velocity " << trajectory_parameter.sensor_scale_noise_velocity + << std::endl; + std::cout << "sensor_noise_yaw_rate " << trajectory_parameter.sensor_noise_yaw_rate + << std::endl; + std::cout << "sensor_bias_noise_yaw_rate " << trajectory_parameter.sensor_bias_noise_yaw_rate + << std::endl; std::cout << "timer_update_rate " << timer_update_rate << std::endl; // std::cout << "deadlock_threshold " << deadlock_threshold << std::endl; - } - catch (YAML::Exception& e) - { + } catch (YAML::Exception& e) { std::cerr << "\033[1;31mtrajectory Node YAML Error: " << e.msg << "\033[0m" << std::endl; exit(3); } - auto sub1 = node->create_subscription("imu/data_tf_converted", 1000, imu_callback); - auto sub2 = node->create_subscription(subscribe_twist_topic_name, rclcpp::QoS(10), velocity_callback); - auto sub3 = node->create_subscription("velocity", rclcpp::QoS(10), correction_velocity_callback); - auto sub4 = node->create_subscription("velocity_status", rclcpp::QoS(10), velocity_status_callback); - auto sub5 = node->create_subscription("velocity_scale_factor", rclcpp::QoS(10), velocity_scale_factor_callback); - auto sub6 = node->create_subscription("heading_interpolate_3rd", rclcpp::QoS(10), heading_interpolate_3rd_callback); - auto sub7 = node->create_subscription("yaw_rate_offset_stop", rclcpp::QoS(10), yaw_rate_offset_stop_callback); - auto sub8 = node->create_subscription("yaw_rate_offset_2nd", rclcpp::QoS(10), yaw_rate_offset_2nd_callback); - auto sub9 = node->create_subscription("pitching", rclcpp::QoS(10), pitching_callback); + auto sub1 = + node->create_subscription("imu/data_tf_converted", 1000, imu_callback); + auto sub2 = node->create_subscription( + subscribe_twist_topic_name, rclcpp::QoS(10), velocity_callback); + auto sub3 = node->create_subscription( + "velocity", rclcpp::QoS(10), correction_velocity_callback); + auto sub4 = node->create_subscription( + "velocity_status", rclcpp::QoS(10), velocity_status_callback); + auto sub5 = node->create_subscription( + "velocity_scale_factor", rclcpp::QoS(10), velocity_scale_factor_callback); + auto sub6 = node->create_subscription( + "heading_interpolate_3rd", rclcpp::QoS(10), heading_interpolate_3rd_callback); + auto sub7 = node->create_subscription( + "yaw_rate_offset_stop", rclcpp::QoS(10), yaw_rate_offset_stop_callback); + auto sub8 = node->create_subscription( + "yaw_rate_offset_2nd", rclcpp::QoS(10), yaw_rate_offset_2nd_callback); + auto sub9 = node->create_subscription("pitching", rclcpp::QoS(10), + pitching_callback); pub1 = node->create_publisher("enu_vel", 1000); pub2 = node->create_publisher("enu_relative_pos", 1000); pub3 = node->create_publisher("twist", 1000); - pub4 = node->create_publisher("twist_with_covariance", 1000); + pub4 = node->create_publisher( + "twist_with_covariance", 1000); double delta_time = 1.0 / static_cast(timer_update_rate); auto timer_callback = std::bind(on_timer); diff --git a/eagleye_rt/src/twist_relay.cpp b/eagleye_rt/src/twist_relay.cpp index 465170c8..ae6747b6 100644 --- a/eagleye_rt/src/twist_relay.cpp +++ b/eagleye_rt/src/twist_relay.cpp @@ -32,8 +32,7 @@ #include "eagleye_coordinate/eagleye_coordinate.hpp" #include "eagleye_navigation/eagleye_navigation.hpp" -class TwistRelay: public rclcpp::Node -{ +class TwistRelay : public rclcpp::Node { public: TwistRelay(); ~TwistRelay(); @@ -41,20 +40,19 @@ class TwistRelay: public rclcpp::Node private: rclcpp::Publisher::SharedPtr pub_; rclcpp::Subscription::SharedPtr twist_sub_; - rclcpp::Subscription::SharedPtr twist_with_covariance_sub_; + rclcpp::Subscription::SharedPtr + twist_with_covariance_sub_; rclcpp::Logger logger_; rclcpp::Clock clock_; void twist_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg); - void twist_with_covariance_callback(const geometry_msgs::msg::TwistWithCovarianceStamped::ConstSharedPtr msg); - + void twist_with_covariance_callback( + const geometry_msgs::msg::TwistWithCovarianceStamped::ConstSharedPtr msg); }; -TwistRelay::TwistRelay() : Node("eagleye_twist_relay"), - clock_(RCL_ROS_TIME), - logger_(get_logger()) -{ +TwistRelay::TwistRelay() + : Node("eagleye_twist_relay"), clock_(RCL_ROS_TIME), logger_(get_logger()) { int subscribe_twist_topic_type = 0; std::string subscribe_twist_topic_name = "/can_twist"; std::string publish_twist_topic_name = "vehicle/twist"; @@ -65,46 +63,43 @@ TwistRelay::TwistRelay() : Node("eagleye_twist_relay"), get_parameter("twist.twist_type", subscribe_twist_topic_type); get_parameter("twist.twist_topic", subscribe_twist_topic_name); - std::cout<< "subscribe_twist_topic_type: " << subscribe_twist_topic_type << std::endl; - std::cout<< "subscribe_twist_topic_name: " << subscribe_twist_topic_name << std::endl; + std::cout << "subscribe_twist_topic_type: " << subscribe_twist_topic_type << std::endl; + std::cout << "subscribe_twist_topic_name: " << subscribe_twist_topic_name << std::endl; // TwistStamped : 0, TwistWithCovarianceStamped: 1 - if(subscribe_twist_topic_type == 0) - { - twist_sub_ = create_subscription(subscribe_twist_topic_name, rclcpp::QoS(10), - std::bind(&TwistRelay::twist_callback, this, std::placeholders::_1)); - } - else if(subscribe_twist_topic_type == 1) - { - twist_with_covariance_sub_ = create_subscription(subscribe_twist_topic_name, rclcpp::QoS(10), + if (subscribe_twist_topic_type == 0) { + twist_sub_ = create_subscription( + subscribe_twist_topic_name, rclcpp::QoS(10), + std::bind(&TwistRelay::twist_callback, this, std::placeholders::_1)); + } else if (subscribe_twist_topic_type == 1) { + twist_with_covariance_sub_ = + create_subscription( + subscribe_twist_topic_name, rclcpp::QoS(10), std::bind(&TwistRelay::twist_with_covariance_callback, this, std::placeholders::_1)); - } - else - { - RCLCPP_ERROR(this->get_logger(),"Invalid twist topic type"); + } else { + RCLCPP_ERROR(this->get_logger(), "Invalid twist topic type"); rclcpp::shutdown(); } - pub_ = create_publisher(publish_twist_topic_name, rclcpp::QoS(10)); + pub_ = + create_publisher(publish_twist_topic_name, rclcpp::QoS(10)); }; -TwistRelay::~TwistRelay(){}; +TwistRelay::~TwistRelay() {}; -void TwistRelay::twist_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) -{ +void TwistRelay::twist_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) { pub_->publish(*msg); }; -void TwistRelay::twist_with_covariance_callback(const geometry_msgs::msg::TwistWithCovarianceStamped::ConstSharedPtr msg) -{ +void TwistRelay::twist_with_covariance_callback( + const geometry_msgs::msg::TwistWithCovarianceStamped::ConstSharedPtr msg) { geometry_msgs::msg::TwistStamped twist; twist.header.stamp = msg->header.stamp; twist.twist = msg->twist.twist; pub_->publish(twist); }; -int main(int argc, char** argv) -{ +int main(int argc, char** argv) { rclcpp::init(argc, argv); rclcpp::spin(std::make_shared()); diff --git a/eagleye_rt/src/velocity_estimator_node.cpp b/eagleye_rt/src/velocity_estimator_node.cpp index 6e64d6c9..7d0d020f 100644 --- a/eagleye_rt/src/velocity_estimator_node.cpp +++ b/eagleye_rt/src/velocity_estimator_node.cpp @@ -48,18 +48,15 @@ static std::string yaml_file; static std::string subscribe_rtklib_nav_topic_name = "gnss/rtklib_nav"; static std::string subscribe_gga_topic_name = "gnss/gga"; -void rtklib_nav_callback(const rtklib_msgs::msg::RtklibNav::ConstSharedPtr msg) -{ +void rtklib_nav_callback(const rtklib_msgs::msg::RtklibNav::ConstSharedPtr msg) { rtklib_nav_msg = *msg; } -void gga_callback(const nmea_msgs::msg::Gpgga::ConstSharedPtr msg) -{ +void gga_callback(const nmea_msgs::msg::Gpgga::ConstSharedPtr msg) { gga_msg = *msg; } -void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) -{ +void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) { imu_msg = *msg; velocity_estimator.VelocityEstimate(imu_msg, rtklib_nav_msg, gga_msg, &velocity_msg); @@ -69,39 +66,36 @@ void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) velocity_status.status = velocity_estimator.getStatus(); velocity_status_pub->publish(velocity_status); - if(velocity_status.status.enabled_status) - { + if (velocity_status.status.enabled_status) { velocity_pub->publish(velocity_msg); } - } -void velocity_estimator_node(rclcpp::Node::SharedPtr node) -{ - node->declare_parameter("yaml_file",yaml_file); - node->get_parameter("yaml_file",yaml_file); +void velocity_estimator_node(rclcpp::Node::SharedPtr node) { + node->declare_parameter("yaml_file", yaml_file); + node->get_parameter("yaml_file", yaml_file); velocity_estimator.setParam(yaml_file); - auto rtklib_sub = - node->create_subscription(subscribe_rtklib_nav_topic_name, 1000, rtklib_nav_callback); - auto gga_sub = - node->create_subscription(subscribe_gga_topic_name, 1000, gga_callback); + auto rtklib_sub = node->create_subscription( + subscribe_rtklib_nav_topic_name, 1000, rtklib_nav_callback); + auto gga_sub = + node->create_subscription(subscribe_gga_topic_name, 1000, gga_callback); auto imu_sub = - node->create_subscription("imu/data_tf_converted", 1000, imu_callback); + node->create_subscription("imu/data_tf_converted", 1000, imu_callback); velocity_pub = node->create_publisher("velocity", 1000); - velocity_status_pub = node->create_publisher("velocity_status", 1000); + velocity_status_pub = + node->create_publisher("velocity_status", 1000); rclcpp::spin(node); } -int main(int argc, char** argv) -{ +int main(int argc, char** argv) { rclcpp::init(argc, argv); auto node = rclcpp::Node::make_shared("eagleye_velocity_estimator"); velocity_estimator_node(node); return 0; -} \ No newline at end of file +} \ No newline at end of file diff --git a/eagleye_rt/src/velocity_scale_factor_node.cpp b/eagleye_rt/src/velocity_scale_factor_node.cpp index 17005487..1352768f 100644 --- a/eagleye_rt/src/velocity_scale_factor_node.cpp +++ b/eagleye_rt/src/velocity_scale_factor_node.cpp @@ -55,28 +55,24 @@ double _saved_velocity_scale_factor = 1.0; double _previous_velocity_scale_factor = 1.0; double _th_velocity_scale_factor_percent = 20; -void rtklib_nav_callback(const rtklib_msgs::msg::RtklibNav::ConstSharedPtr msg) -{ +void rtklib_nav_callback(const rtklib_msgs::msg::RtklibNav::ConstSharedPtr msg) { _rtklib_nav = *msg; } -void velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) -{ +void velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) { _velocity = *msg; - if (_is_first_move == false && msg->twist.linear.x > _velocity_scale_factor_parameter.moving_judgment_threshold) - { + if (_is_first_move == false && + msg->twist.linear.x > _velocity_scale_factor_parameter.moving_judgment_threshold) { _is_first_move = true; } } -void rmc_callback(const nmea_msgs::msg::Gprmc::ConstSharedPtr msg) -{ +void rmc_callback(const nmea_msgs::msg::Gprmc::ConstSharedPtr msg) { _nmea_rmc = *msg; } -void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) -{ +void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) { double initial_velocity_scale_factor = _saved_velocity_scale_factor; _imu = *msg; @@ -86,8 +82,7 @@ void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) _correction_velocity.header = msg->header; _correction_velocity.header.frame_id = "base_link"; - if (_is_first_move == false) - { + if (_is_first_move == false) { _velocity_scale_factor.scale_factor = initial_velocity_scale_factor; _correction_velocity.twist = _velocity.twist; _pub1->publish(_correction_velocity); @@ -95,33 +90,33 @@ void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) return; } - if (_use_gnss_mode == "rtklib" || _use_gnss_mode == "RTKLIB") // use RTKLIB mode + if (_use_gnss_mode == "rtklib" || _use_gnss_mode == "RTKLIB") // use RTKLIB mode { - velocity_scale_factor_estimate(_rtklib_nav,_velocity,_velocity_scale_factor_parameter, - &_velocity_scale_factor_status,&_correction_velocity,&_velocity_scale_factor); - } - else if (_use_gnss_mode == "nmea" || _use_gnss_mode == "NMEA") // use NMEA mode + velocity_scale_factor_estimate(_rtklib_nav, _velocity, _velocity_scale_factor_parameter, + &_velocity_scale_factor_status, &_correction_velocity, + &_velocity_scale_factor); + } else if (_use_gnss_mode == "nmea" || _use_gnss_mode == "NMEA") // use NMEA mode { - velocity_scale_factor_estimate(_nmea_rmc,_velocity,_velocity_scale_factor_parameter, - &_velocity_scale_factor_status,&_correction_velocity,&_velocity_scale_factor); + velocity_scale_factor_estimate(_nmea_rmc, _velocity, _velocity_scale_factor_parameter, + &_velocity_scale_factor_status, &_correction_velocity, + &_velocity_scale_factor); } _velocity_scale_factor.status.is_abnormal = false; if (!std::isfinite(_velocity_scale_factor.scale_factor)) { - _correction_velocity.twist.linear.x = _velocity.twist.linear.x * _previous_velocity_scale_factor; + _correction_velocity.twist.linear.x = + _velocity.twist.linear.x * _previous_velocity_scale_factor; _velocity_scale_factor.scale_factor = _previous_velocity_scale_factor; _velocity_scale_factor.status.is_abnormal = true; _velocity_scale_factor.status.error_code = eagleye_msgs::msg::Status::NAN_OR_INFINITE; - } - else if (_th_velocity_scale_factor_percent / 100 < std::abs(1.0 - _velocity_scale_factor.scale_factor)) - { - _correction_velocity.twist.linear.x = _velocity.twist.linear.x * _previous_velocity_scale_factor; + } else if (_th_velocity_scale_factor_percent / 100 < + std::abs(1.0 - _velocity_scale_factor.scale_factor)) { + _correction_velocity.twist.linear.x = + _velocity.twist.linear.x * _previous_velocity_scale_factor; _velocity_scale_factor.scale_factor = _previous_velocity_scale_factor; _velocity_scale_factor.status.is_abnormal = true; _velocity_scale_factor.status.error_code = eagleye_msgs::msg::Status::TOO_LARGE_OR_SMALL; - } - else - { + } else { _previous_velocity_scale_factor = _velocity_scale_factor.scale_factor; } @@ -129,33 +124,26 @@ void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) _pub2->publish(_velocity_scale_factor); } -void load_velocity_scale_factor(std::string txt_path) -{ +void load_velocity_scale_factor(std::string txt_path) { std::ifstream ifs(txt_path); - if (!ifs) - { + if (!ifs) { std::cout << "Initial VelocityScaleFactor file not found!" << std::endl; - } - else - { + } else { std::cout << "Loaded the saved velocity scale factor!" << std::endl; int count = 0; std::string row; - while (getline(ifs, row)) - { - if(count == 1) - { + while (getline(ifs, row)) { + if (count == 1) { _saved_vsf_estimater_number = std::stod(row); - std::cout<< "saved_vsf_estimater_number " << _saved_vsf_estimater_number << std::endl; + std::cout << "saved_vsf_estimater_number " << _saved_vsf_estimater_number << std::endl; } - if(count == 3) - { + if (count == 3) { _saved_velocity_scale_factor = std::stod(row); _velocity_scale_factor_status.estimate_start_status = true; _velocity_scale_factor_status.velocity_scale_factor_last = _saved_velocity_scale_factor; _velocity_scale_factor.status.enabled_status = true; _velocity_scale_factor.scale_factor = _saved_velocity_scale_factor; - std::cout<< "saved_velocity_scale_factor " << _saved_velocity_scale_factor << std::endl; + std::cout << "saved_velocity_scale_factor " << _saved_velocity_scale_factor << std::endl; } count++; } @@ -163,10 +151,9 @@ void load_velocity_scale_factor(std::string txt_path) ifs.close(); } -void on_timer() -{ - if(!_velocity_scale_factor.status.enabled_status && _saved_vsf_estimater_number >= _velocity_scale_factor_status.estimated_number) - { +void on_timer() { + if (!_velocity_scale_factor.status.enabled_status && + _saved_vsf_estimater_number >= _velocity_scale_factor_status.estimated_number) { std::ofstream csv_file(_velocity_scale_factor_save_str); return; } @@ -187,8 +174,7 @@ void on_timer() return; } -int main(int argc, char** argv) -{ +int main(int argc, char** argv) { rclcpp::init(argc, argv); auto node = rclcpp::Node::make_shared("eagleye_velocity_scale_factor"); @@ -200,33 +186,47 @@ int main(int argc, char** argv) std::string subscribe_rmc_topic_name = "gnss/rmc"; std::string yaml_file; - node->declare_parameter("yaml_file",yaml_file); - node->get_parameter("yaml_file",yaml_file); + node->declare_parameter("yaml_file", yaml_file); + node->get_parameter("yaml_file", yaml_file); std::cout << "yaml_file: " << yaml_file << std::endl; - try - { + try { YAML::Node conf = YAML::LoadFile(yaml_file); _use_gnss_mode = conf["/**"]["ros__parameters"]["use_gnss_mode"].as(); - _velocity_scale_factor_parameter.imu_rate = conf["/**"]["ros__parameters"]["common"]["imu_rate"].as(); - _velocity_scale_factor_parameter.gnss_rate = conf["/**"]["ros__parameters"]["common"]["gnss_rate"].as(); - _velocity_scale_factor_parameter.moving_judgment_threshold = conf["/**"]["ros__parameters"]["common"]["stop_judgment_threshold"].as(); - - _velocity_scale_factor_parameter.estimated_minimum_interval = conf["/**"]["ros__parameters"]["velocity_scale_factor"]["estimated_minimum_interval"].as(); - _velocity_scale_factor_parameter.estimated_maximum_interval = conf["/**"]["ros__parameters"]["velocity_scale_factor"]["estimated_maximum_interval"].as(); - _velocity_scale_factor_parameter.gnss_receiving_threshold = conf["/**"]["ros__parameters"]["velocity_scale_factor"]["gnss_receiving_threshold"].as(); - - node->declare_parameter("velocity_scale_factor_save_str",_velocity_scale_factor_save_str); - node->declare_parameter("velocity_scale_factor.save_velocity_scale_factor",_velocity_scale_factor_parameter.save_velocity_scale_factor); - node->declare_parameter("velocity_scale_factor.velocity_scale_factor_save_duration",velocity_scale_factor_save_duration); - node->declare_parameter("velocity_scale_factor.th_velocity_scale_factor_percent",_th_velocity_scale_factor_percent); - - node->get_parameter("velocity_scale_factor_save_str",_velocity_scale_factor_save_str); - node->get_parameter("velocity_scale_factor.save_velocity_scale_factor",_velocity_scale_factor_parameter.save_velocity_scale_factor); - node->get_parameter("velocity_scale_factor.velocity_scale_factor_save_duration",velocity_scale_factor_save_duration); - node->get_parameter("velocity_scale_factor.th_velocity_scale_factor_percent",_th_velocity_scale_factor_percent); + _velocity_scale_factor_parameter.imu_rate = + conf["/**"]["ros__parameters"]["common"]["imu_rate"].as(); + _velocity_scale_factor_parameter.gnss_rate = + conf["/**"]["ros__parameters"]["common"]["gnss_rate"].as(); + _velocity_scale_factor_parameter.moving_judgment_threshold = + conf["/**"]["ros__parameters"]["common"]["stop_judgment_threshold"].as(); + + _velocity_scale_factor_parameter.estimated_minimum_interval = + conf["/**"]["ros__parameters"]["velocity_scale_factor"]["estimated_minimum_interval"] + .as(); + _velocity_scale_factor_parameter.estimated_maximum_interval = + conf["/**"]["ros__parameters"]["velocity_scale_factor"]["estimated_maximum_interval"] + .as(); + _velocity_scale_factor_parameter.gnss_receiving_threshold = + conf["/**"]["ros__parameters"]["velocity_scale_factor"]["gnss_receiving_threshold"] + .as(); + + node->declare_parameter("velocity_scale_factor_save_str", _velocity_scale_factor_save_str); + node->declare_parameter("velocity_scale_factor.save_velocity_scale_factor", + _velocity_scale_factor_parameter.save_velocity_scale_factor); + node->declare_parameter("velocity_scale_factor.velocity_scale_factor_save_duration", + velocity_scale_factor_save_duration); + node->declare_parameter("velocity_scale_factor.th_velocity_scale_factor_percent", + _th_velocity_scale_factor_percent); + + node->get_parameter("velocity_scale_factor_save_str", _velocity_scale_factor_save_str); + node->get_parameter("velocity_scale_factor.save_velocity_scale_factor", + _velocity_scale_factor_parameter.save_velocity_scale_factor); + node->get_parameter("velocity_scale_factor.velocity_scale_factor_save_duration", + velocity_scale_factor_save_duration); + node->get_parameter("velocity_scale_factor.th_velocity_scale_factor_percent", + _th_velocity_scale_factor_percent); std::cout << "use_gnss_mode " << _use_gnss_mode << std::endl; @@ -234,28 +234,39 @@ int main(int argc, char** argv) std::cout << "subscribe_rtklib_nav_topic_name " << subscribe_rtklib_nav_topic_name << std::endl; std::cout << "gnss_rate " << _velocity_scale_factor_parameter.gnss_rate << std::endl; - std::cout << "moving_judgment_threshold " << _velocity_scale_factor_parameter.moving_judgment_threshold << std::endl; - - std::cout << "estimated_minimum_interval " << _velocity_scale_factor_parameter.estimated_minimum_interval << std::endl; - std::cout << "estimated_maximum_interval " << _velocity_scale_factor_parameter.estimated_maximum_interval << std::endl; - std::cout << "gnss_receiving_threshold " << _velocity_scale_factor_parameter.gnss_receiving_threshold << std::endl; - - std::cout<< "velocity_scale_factor_save_str " << _velocity_scale_factor_save_str << std::endl; - std::cout<< "save_velocity_scale_factor " << _velocity_scale_factor_parameter.save_velocity_scale_factor << std::endl; - std::cout<< "velocity_scale_factor_save_duration " << velocity_scale_factor_save_duration << std::endl; - std::cout<< "th_velocity_scale_factor_percent "<<_th_velocity_scale_factor_percent<create_subscription("imu/data_tf_converted", 1000, imu_callback); - auto sub2 = node->create_subscription(subscribe_twist_topic_name, 1000, velocity_callback); - auto sub3 = node->create_subscription(subscribe_rtklib_nav_topic_name, 1000, rtklib_nav_callback); - auto sub4 = node->create_subscription(subscribe_rmc_topic_name, 1000, rmc_callback); + auto sub1 = + node->create_subscription("imu/data_tf_converted", 1000, imu_callback); + auto sub2 = node->create_subscription( + subscribe_twist_topic_name, 1000, velocity_callback); + auto sub3 = node->create_subscription( + subscribe_rtklib_nav_topic_name, 1000, rtklib_nav_callback); + auto sub4 = + node->create_subscription(subscribe_rmc_topic_name, 1000, rmc_callback); _pub1 = node->create_publisher("velocity", rclcpp::QoS(10)); - _pub2 = node->create_publisher("velocity_scale_factor", rclcpp::QoS(10)); + _pub2 = node->create_publisher("velocity_scale_factor", + rclcpp::QoS(10)); double delta_time = static_cast(velocity_scale_factor_save_duration); auto timer_callback = std::bind(on_timer); @@ -264,8 +275,7 @@ int main(int argc, char** argv) auto timer = std::make_shared>( node->get_clock(), period_ns, std::move(timer_callback), node->get_node_base_interface()->get_context()); - if(_velocity_scale_factor_parameter.save_velocity_scale_factor) - { + if (_velocity_scale_factor_parameter.save_velocity_scale_factor) { node->get_node_timers_interface()->add_timer(timer, nullptr); load_velocity_scale_factor(_velocity_scale_factor_save_str); } diff --git a/eagleye_rt/src/yaw_rate_offset_node.cpp b/eagleye_rt/src/yaw_rate_offset_node.cpp index 9dc521e0..e375ff56 100644 --- a/eagleye_rt/src/yaw_rate_offset_node.cpp +++ b/eagleye_rt/src/yaw_rate_offset_node.cpp @@ -48,47 +48,42 @@ static bool _use_can_less_mode = false; double _previous_yaw_rate_offset = 0.0; -void velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) -{ +void velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) { _velocity = *msg; } -void velocity_status_callback(const eagleye_msgs::msg::StatusStamped::ConstSharedPtr msg) -{ +void velocity_status_callback(const eagleye_msgs::msg::StatusStamped::ConstSharedPtr msg) { _velocity_status = *msg; } -void yaw_rate_offset_stop_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) -{ +void yaw_rate_offset_stop_callback(const eagleye_msgs::msg::YawrateOffset::ConstSharedPtr msg) { _yaw_rate_offset_stop = *msg; } -void heading_interpolate_callback(const eagleye_msgs::msg::Heading::ConstSharedPtr msg) -{ +void heading_interpolate_callback(const eagleye_msgs::msg::Heading::ConstSharedPtr msg) { _heading_interpolate = *msg; - if (_is_first_heading == false && _heading_interpolate.status.enabled_status == true) - { + if (_is_first_heading == false && _heading_interpolate.status.enabled_status == true) { _is_first_heading = true; } } -void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) -{ - if (_is_first_heading == false) return; - if(_use_can_less_mode && !_velocity_status.status.enabled_status) return; +void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) { + if (_is_first_heading == false) + return; + if (_use_can_less_mode && !_velocity_status.status.enabled_status) + return; _imu = *msg; _yaw_rate_offset.header = msg->header; - yaw_rate_offset_estimate(_velocity,_yaw_rate_offset_stop,_heading_interpolate,_imu,_yaw_rate_offset_parameter, &_yaw_rate_offset_status, &_yaw_rate_offset); + yaw_rate_offset_estimate(_velocity, _yaw_rate_offset_stop, _heading_interpolate, _imu, + _yaw_rate_offset_parameter, &_yaw_rate_offset_status, &_yaw_rate_offset); _yaw_rate_offset.status.is_abnormal = false; if (!std::isfinite(_yaw_rate_offset_stop.yaw_rate_offset)) { - _yaw_rate_offset_stop.yaw_rate_offset =_previous_yaw_rate_offset; + _yaw_rate_offset_stop.yaw_rate_offset = _previous_yaw_rate_offset; _yaw_rate_offset.status.is_abnormal = true; _yaw_rate_offset.status.error_code = eagleye_msgs::msg::Status::NAN_OR_INFINITE; - } - else - { + } else { _previous_yaw_rate_offset = _yaw_rate_offset_stop.yaw_rate_offset; } @@ -96,8 +91,7 @@ void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) _yaw_rate_offset.status.estimate_status = false; } -int main(int argc, char** argv) -{ +int main(int argc, char** argv) { rclcpp::init(argc, argv); auto node = rclcpp::Node::make_shared("eagleye_yaw_rate_offset"); @@ -105,99 +99,122 @@ int main(int argc, char** argv) std::string subscribe_topic_name = "/subscribe_topic_name/invalid"; std::string yaml_file; - node->declare_parameter("yaml_file",yaml_file); - node->get_parameter("yaml_file",yaml_file); + node->declare_parameter("yaml_file", yaml_file); + node->get_parameter("yaml_file", yaml_file); std::cout << "yaml_file: " << yaml_file << std::endl; - if (argc > 2) - { - if (strcmp(argv[1], "1st") == 0) - { + if (argc > 2) { + if (strcmp(argv[1], "1st") == 0) { publish_topic_name = "yaw_rate_offset_1st"; subscribe_topic_name = "heading_interpolate_1st"; - try - { + try { YAML::Node conf = YAML::LoadFile(yaml_file); - _yaw_rate_offset_parameter.imu_rate = conf["/**"]["ros__parameters"]["common"]["imu_rate"].as(); - _yaw_rate_offset_parameter.gnss_rate = conf["/**"]["ros__parameters"]["common"]["gnss_rate"].as(); - _yaw_rate_offset_parameter.moving_judgment_threshold = conf["/**"]["ros__parameters"]["common"]["moving_judgment_threshold"].as(); - - _yaw_rate_offset_parameter.estimated_minimum_interval = conf["/**"]["ros__parameters"]["yaw_rate_offset"]["estimated_minimum_interval"].as(); - _yaw_rate_offset_parameter.estimated_maximum_interval = conf["/**"]["ros__parameters"]["yaw_rate_offset"]["1st"]["estimated_maximum_interval"].as(); - _yaw_rate_offset_parameter.gnss_receiving_threshold = conf["/**"]["ros__parameters"]["yaw_rate_offset"]["gnss_receiving_threshold"].as(); - _yaw_rate_offset_parameter.outlier_threshold = conf["/**"]["ros__parameters"]["yaw_rate_offset_stop"]["outlier_threshold"].as(); + _yaw_rate_offset_parameter.imu_rate = + conf["/**"]["ros__parameters"]["common"]["imu_rate"].as(); + _yaw_rate_offset_parameter.gnss_rate = + conf["/**"]["ros__parameters"]["common"]["gnss_rate"].as(); + _yaw_rate_offset_parameter.moving_judgment_threshold = + conf["/**"]["ros__parameters"]["common"]["moving_judgment_threshold"].as(); + + _yaw_rate_offset_parameter.estimated_minimum_interval = + conf["/**"]["ros__parameters"]["yaw_rate_offset"]["estimated_minimum_interval"] + .as(); + _yaw_rate_offset_parameter.estimated_maximum_interval = + conf["/**"]["ros__parameters"]["yaw_rate_offset"]["1st"]["estimated_maximum_interval"] + .as(); + _yaw_rate_offset_parameter.gnss_receiving_threshold = + conf["/**"]["ros__parameters"]["yaw_rate_offset"]["gnss_receiving_threshold"] + .as(); + _yaw_rate_offset_parameter.outlier_threshold = + conf["/**"]["ros__parameters"]["yaw_rate_offset_stop"]["outlier_threshold"].as(); std::cout << "imu_rate " << _yaw_rate_offset_parameter.imu_rate << std::endl; std::cout << "gnss_rate " << _yaw_rate_offset_parameter.gnss_rate << std::endl; - std::cout << "moving_judgment_threshold " << _yaw_rate_offset_parameter.moving_judgment_threshold << std::endl; - - std::cout << "estimated_minimum_interval " << _yaw_rate_offset_parameter.estimated_minimum_interval << std::endl; - std::cout << "estimated_maximum_interval " << _yaw_rate_offset_parameter.estimated_maximum_interval << std::endl; - std::cout << "gnss_receiving_threshold " << _yaw_rate_offset_parameter.gnss_receiving_threshold << std::endl; - std::cout << "outlier_threshold " << _yaw_rate_offset_parameter.outlier_threshold << std::endl; - } - catch (YAML::Exception& e) - { - std::cerr << "\033[1;yaw_rate_offset_1st Node YAML Error: " << e.msg << "\033[0m" << std::endl; + std::cout << "moving_judgment_threshold " + << _yaw_rate_offset_parameter.moving_judgment_threshold << std::endl; + + std::cout << "estimated_minimum_interval " + << _yaw_rate_offset_parameter.estimated_minimum_interval << std::endl; + std::cout << "estimated_maximum_interval " + << _yaw_rate_offset_parameter.estimated_maximum_interval << std::endl; + std::cout << "gnss_receiving_threshold " + << _yaw_rate_offset_parameter.gnss_receiving_threshold << std::endl; + std::cout << "outlier_threshold " << _yaw_rate_offset_parameter.outlier_threshold + << std::endl; + } catch (YAML::Exception& e) { + std::cerr << "\033[1;yaw_rate_offset_1st Node YAML Error: " << e.msg << "\033[0m" + << std::endl; exit(3); } - } - else if (strcmp(argv[1], "2nd") == 0) - { + } else if (strcmp(argv[1], "2nd") == 0) { publish_topic_name = "yaw_rate_offset_2nd"; subscribe_topic_name = "heading_interpolate_2nd"; - - try - { - YAML::Node conf = YAML::LoadFile(yaml_file); - _yaw_rate_offset_parameter.imu_rate = conf["/**"]["ros__parameters"]["common"]["imu_rate"].as(); - _yaw_rate_offset_parameter.gnss_rate = conf["/**"]["ros__parameters"]["common"]["gnss_rate"].as(); - _yaw_rate_offset_parameter.moving_judgment_threshold = conf["/**"]["ros__parameters"]["common"]["moving_judgment_threshold"].as(); + try { + YAML::Node conf = YAML::LoadFile(yaml_file); - _yaw_rate_offset_parameter.estimated_minimum_interval = conf["/**"]["ros__parameters"]["yaw_rate_offset"]["estimated_minimum_interval"].as(); - _yaw_rate_offset_parameter.estimated_maximum_interval = conf["/**"]["ros__parameters"]["yaw_rate_offset"]["2nd"]["estimated_maximum_interval"].as(); - _yaw_rate_offset_parameter.gnss_receiving_threshold = conf["/**"]["ros__parameters"]["yaw_rate_offset"]["gnss_receiving_threshold"].as(); - _yaw_rate_offset_parameter.outlier_threshold = conf["/**"]["ros__parameters"]["yaw_rate_offset_stop"]["outlier_threshold"].as(); + _yaw_rate_offset_parameter.imu_rate = + conf["/**"]["ros__parameters"]["common"]["imu_rate"].as(); + _yaw_rate_offset_parameter.gnss_rate = + conf["/**"]["ros__parameters"]["common"]["gnss_rate"].as(); + _yaw_rate_offset_parameter.moving_judgment_threshold = + conf["/**"]["ros__parameters"]["common"]["moving_judgment_threshold"].as(); + + _yaw_rate_offset_parameter.estimated_minimum_interval = + conf["/**"]["ros__parameters"]["yaw_rate_offset"]["estimated_minimum_interval"] + .as(); + _yaw_rate_offset_parameter.estimated_maximum_interval = + conf["/**"]["ros__parameters"]["yaw_rate_offset"]["2nd"]["estimated_maximum_interval"] + .as(); + _yaw_rate_offset_parameter.gnss_receiving_threshold = + conf["/**"]["ros__parameters"]["yaw_rate_offset"]["gnss_receiving_threshold"] + .as(); + _yaw_rate_offset_parameter.outlier_threshold = + conf["/**"]["ros__parameters"]["yaw_rate_offset_stop"]["outlier_threshold"].as(); std::cout << "imu_rate " << _yaw_rate_offset_parameter.imu_rate << std::endl; std::cout << "gnss_rate " << _yaw_rate_offset_parameter.gnss_rate << std::endl; - std::cout << "moving_judgment_threshold " << _yaw_rate_offset_parameter.moving_judgment_threshold << std::endl; - - std::cout << "estimated_minimum_interval " << _yaw_rate_offset_parameter.estimated_minimum_interval << std::endl; - std::cout << "estimated_maximum_interval " << _yaw_rate_offset_parameter.estimated_maximum_interval << std::endl; - std::cout << "gnss_receiving_threshold " << _yaw_rate_offset_parameter.gnss_receiving_threshold << std::endl; - std::cout << "outlier_threshold " << _yaw_rate_offset_parameter.outlier_threshold << std::endl; - } - catch (YAML::Exception& e) - { - std::cerr << "\033[1;yaw_rate_offset_2nd Node YAML Error: " << e.msg << "\033[0m" << std::endl; + std::cout << "moving_judgment_threshold " + << _yaw_rate_offset_parameter.moving_judgment_threshold << std::endl; + + std::cout << "estimated_minimum_interval " + << _yaw_rate_offset_parameter.estimated_minimum_interval << std::endl; + std::cout << "estimated_maximum_interval " + << _yaw_rate_offset_parameter.estimated_maximum_interval << std::endl; + std::cout << "gnss_receiving_threshold " + << _yaw_rate_offset_parameter.gnss_receiving_threshold << std::endl; + std::cout << "outlier_threshold " << _yaw_rate_offset_parameter.outlier_threshold + << std::endl; + } catch (YAML::Exception& e) { + std::cerr << "\033[1;yaw_rate_offset_2nd Node YAML Error: " << e.msg << "\033[0m" + << std::endl; exit(3); } - } - else - { + } else { // RCLCPP_ERROR(node->get_logger(),"Invalid argument"); RCLCPP_ERROR(node->get_logger(), "No arguments"); rclcpp::shutdown(); } - } - else - { + } else { RCLCPP_ERROR(node->get_logger(), "No arguments"); rclcpp::shutdown(); } - auto sub1 = node->create_subscription("velocity", rclcpp::QoS(10), velocity_callback); //ros::TransportHints().tcpNoDelay() - auto sub2 = node->create_subscription("yaw_rate_offset_stop", rclcpp::QoS(10), yaw_rate_offset_stop_callback); //ros::TransportHints().tcpNoDelay() - auto sub3 = node->create_subscription(subscribe_topic_name, 1000, heading_interpolate_callback); //ros::TransportHints().tcpNoDelay() - auto sub4 = node->create_subscription("imu/data_tf_converted", 1000, imu_callback); //ros::TransportHints().tcpNoDelay() - _pub = node->create_publisher(publish_topic_name, rclcpp::QoS(10)); + auto sub1 = node->create_subscription( + "velocity", rclcpp::QoS(10), velocity_callback); //ros::TransportHints().tcpNoDelay() + auto sub2 = node->create_subscription( + "yaw_rate_offset_stop", rclcpp::QoS(10), + yaw_rate_offset_stop_callback); //ros::TransportHints().tcpNoDelay() + auto sub3 = node->create_subscription( + subscribe_topic_name, 1000, heading_interpolate_callback); //ros::TransportHints().tcpNoDelay() + auto sub4 = node->create_subscription( + "imu/data_tf_converted", 1000, imu_callback); //ros::TransportHints().tcpNoDelay() + _pub = + node->create_publisher(publish_topic_name, rclcpp::QoS(10)); rclcpp::spin(node); - return 0; } diff --git a/eagleye_rt/src/yaw_rate_offset_stop_node.cpp b/eagleye_rt/src/yaw_rate_offset_stop_node.cpp index a7ea53dc..cf157ea3 100644 --- a/eagleye_rt/src/yaw_rate_offset_stop_node.cpp +++ b/eagleye_rt/src/yaw_rate_offset_stop_node.cpp @@ -32,7 +32,7 @@ #include "eagleye_coordinate/eagleye_coordinate.hpp" #include "eagleye_navigation/eagleye_navigation.hpp" -static geometry_msgs::msg::TwistStamped::ConstSharedPtr _velocity_ptr ; +static geometry_msgs::msg::TwistStamped::ConstSharedPtr _velocity_ptr; rclcpp::Publisher::SharedPtr _pub; static eagleye_msgs::msg::YawrateOffset _yaw_rate_offset_stop; static sensor_msgs::msg::Imu _imu; @@ -42,70 +42,75 @@ struct YawrateOffsetStopStatus _yaw_rate_offset_stop_status; double _previous_yaw_rate_offset_stop = 0.0; -void velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) -{ +void velocity_callback(const geometry_msgs::msg::TwistStamped::ConstSharedPtr msg) { _velocity_ptr = msg; } -void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) -{ - if (_velocity_ptr == nullptr) return; +void imu_callback(const sensor_msgs::msg::Imu::ConstSharedPtr msg) { + if (_velocity_ptr == nullptr) + return; _imu = *msg; _yaw_rate_offset_stop.header = msg->header; - yaw_rate_offset_stop_estimate(*_velocity_ptr, _imu, _yaw_rate_offset_stop_parameter, &_yaw_rate_offset_stop_status, &_yaw_rate_offset_stop); + yaw_rate_offset_stop_estimate(*_velocity_ptr, _imu, _yaw_rate_offset_stop_parameter, + &_yaw_rate_offset_stop_status, &_yaw_rate_offset_stop); _yaw_rate_offset_stop.status.is_abnormal = false; if (!std::isfinite(_yaw_rate_offset_stop.yaw_rate_offset)) { - _yaw_rate_offset_stop.yaw_rate_offset =_previous_yaw_rate_offset_stop; + _yaw_rate_offset_stop.yaw_rate_offset = _previous_yaw_rate_offset_stop; _yaw_rate_offset_stop.status.is_abnormal = true; _yaw_rate_offset_stop.status.error_code = eagleye_msgs::msg::Status::NAN_OR_INFINITE; - } - else - { + } else { _previous_yaw_rate_offset_stop = _yaw_rate_offset_stop.yaw_rate_offset; } _pub->publish(_yaw_rate_offset_stop); } -int main(int argc, char** argv) -{ +int main(int argc, char** argv) { rclcpp::init(argc, argv); auto node = rclcpp::Node::make_shared("eagleye_yaw_rate_offset_stop"); std::string subscribe_twist_topic_name = "vehicle/twist"; std::string yaml_file; - node->declare_parameter("yaml_file",yaml_file); - node->get_parameter("yaml_file",yaml_file); + node->declare_parameter("yaml_file", yaml_file); + node->get_parameter("yaml_file", yaml_file); std::cout << "yaml_file: " << yaml_file << std::endl; - try - { + try { YAML::Node conf = YAML::LoadFile(yaml_file); - _yaw_rate_offset_stop_parameter.imu_rate = conf["/**"]["ros__parameters"]["common"]["imu_rate"].as(); - _yaw_rate_offset_stop_parameter.stop_judgment_threshold = conf["/**"]["ros__parameters"]["common"]["stop_judgment_threshold"].as(); + _yaw_rate_offset_stop_parameter.imu_rate = + conf["/**"]["ros__parameters"]["common"]["imu_rate"].as(); + _yaw_rate_offset_stop_parameter.stop_judgment_threshold = + conf["/**"]["ros__parameters"]["common"]["stop_judgment_threshold"].as(); - _yaw_rate_offset_stop_parameter.estimated_interval = conf["/**"]["ros__parameters"]["yaw_rate_offset_stop"]["estimated_interval"].as(); - _yaw_rate_offset_stop_parameter.outlier_threshold = conf["/**"]["ros__parameters"]["yaw_rate_offset_stop"]["outlier_threshold"].as(); + _yaw_rate_offset_stop_parameter.estimated_interval = + conf["/**"]["ros__parameters"]["yaw_rate_offset_stop"]["estimated_interval"].as(); + _yaw_rate_offset_stop_parameter.outlier_threshold = + conf["/**"]["ros__parameters"]["yaw_rate_offset_stop"]["outlier_threshold"].as(); std::cout << "subscribe_twist_topic_name " << subscribe_twist_topic_name << std::endl; std::cout << "imu_rate " << _yaw_rate_offset_stop_parameter.imu_rate << std::endl; - std::cout << "stop_judgment_threshold " << _yaw_rate_offset_stop_parameter.stop_judgment_threshold << std::endl; - - std::cout << "estimated_minimum_interval " << _yaw_rate_offset_stop_parameter.estimated_interval << std::endl; - std::cout << "outlier_threshold " << _yaw_rate_offset_stop_parameter.outlier_threshold << std::endl; - } - catch (YAML::Exception& e) - { - std::cerr << "\033[1;31myaw_rate_offset_stop Node YAML Error: " << e.msg << "\033[0m" << std::endl; + std::cout << "stop_judgment_threshold " + << _yaw_rate_offset_stop_parameter.stop_judgment_threshold << std::endl; + + std::cout << "estimated_minimum_interval " << _yaw_rate_offset_stop_parameter.estimated_interval + << std::endl; + std::cout << "outlier_threshold " << _yaw_rate_offset_stop_parameter.outlier_threshold + << std::endl; + } catch (YAML::Exception& e) { + std::cerr << "\033[1;31myaw_rate_offset_stop Node YAML Error: " << e.msg << "\033[0m" + << std::endl; exit(3); } - auto sub1 = node->create_subscription(subscribe_twist_topic_name, 1000, velocity_callback); //ros::TransportHints().tcpNoDelay() - auto sub2 = node->create_subscription("imu/data_tf_converted", 1000, imu_callback); //ros::TransportHints().tcpNoDelay() - _pub = node->create_publisher("yaw_rate_offset_stop", rclcpp::QoS(10)); + auto sub1 = node->create_subscription( + subscribe_twist_topic_name, 1000, velocity_callback); //ros::TransportHints().tcpNoDelay() + auto sub2 = node->create_subscription( + "imu/data_tf_converted", 1000, imu_callback); //ros::TransportHints().tcpNoDelay() + _pub = node->create_publisher("yaw_rate_offset_stop", + rclcpp::QoS(10)); rclcpp::spin(node); diff --git a/eagleye_util/can_velocity_converter/src/can_velocity_converter.cpp b/eagleye_util/can_velocity_converter/src/can_velocity_converter.cpp old mode 100755 new mode 100644 index 725f8966..3a2c4690 --- a/eagleye_util/can_velocity_converter/src/can_velocity_converter.cpp +++ b/eagleye_util/can_velocity_converter/src/can_velocity_converter.cpp @@ -32,7 +32,7 @@ #include "can_msgs/msg/frame.hpp" #include "geometry_msgs/msg/twist_stamped.hpp" -rclcpp::Publisher::SharedPtr pub; +rclcpp::Publisher::SharedPtr pub; static geometry_msgs::msg::TwistStamped msg_velocity; static int can_id = 0x001; @@ -45,89 +45,80 @@ static std::string value_type = "Unsigned"; static double velocity = 0.0; static std::string node_name = "can_velocity_converter"; -void can_callback(const can_msgs::msg::Frame::ConstSharedPtr msg) -{ +void can_callback(const can_msgs::msg::Frame::ConstSharedPtr msg) { unsigned long long int can_sep_data[8]; unsigned long long int can_data, tmp_unsigned_data; unsigned long long int data_mask = pow(2, length) - 1; long long int tmp_signed_data; - if(msg->id == can_id){ + if (msg->id == can_id) { msg_velocity.header.stamp = msg->header.stamp; msg_velocity.header.frame_id = "base_link"; - for (int i = 0; i < msg->dlc; i++) - { - if(byte_order == "Intel") - { + for (int i = 0; i < msg->dlc; i++) { + if (byte_order == "Intel") { can_sep_data[i] = msg->data[i]; - } - else if(byte_order == "Motorola") - { + } else if (byte_order == "Motorola") { can_sep_data[i] = msg->data[(msg->dlc - 1) - i]; } - can_data |= can_sep_data[i] << i*8; + can_data |= can_sep_data[i] << i * 8; } tmp_unsigned_data = (can_data >> (msg->dlc * 8 - start_bit - length)) & data_mask; - RCLCPP_INFO(rclcpp::get_logger(node_name), "CAN DATA %04llx",can_data); + RCLCPP_INFO(rclcpp::get_logger(node_name), "CAN DATA %04llx", can_data); - if(value_type == "Signed") - { - if(tmp_unsigned_data >> length - 1 == 0 ){ - velocity = tmp_unsigned_data * factor + offset; //velocity = km/h - } - else{ + if (value_type == "Signed") { + if (tmp_unsigned_data >> length - 1 == 0) { + velocity = tmp_unsigned_data * factor + offset; //velocity = km/h + } else { tmp_signed_data = tmp_unsigned_data | (~0 << length); - velocity = tmp_signed_data * factor + offset; //velocity = km/h + velocity = tmp_signed_data * factor + offset; //velocity = km/h } - } - else if(value_type == "Unsigned") - { - velocity = tmp_unsigned_data * factor + offset; //velocity = km/h + } else if (value_type == "Unsigned") { + velocity = tmp_unsigned_data * factor + offset; //velocity = km/h } msg_velocity.twist.linear.x = velocity / 3.6; - RCLCPP_INFO(rclcpp::get_logger(node_name), "RAW CAN DATA %02x%02x%02x%02x%02x%02x%02x%02x",msg->data[0],msg->data[1],msg->data[2],msg->data[3],msg->data[4],msg->data[5],msg->data[6],msg->data[7]); - RCLCPP_INFO(rclcpp::get_logger(node_name), "DATA %04llx",tmp_unsigned_data); + RCLCPP_INFO(rclcpp::get_logger(node_name), "RAW CAN DATA %02x%02x%02x%02x%02x%02x%02x%02x", + msg->data[0], msg->data[1], msg->data[2], msg->data[3], msg->data[4], msg->data[5], + msg->data[6], msg->data[7]); + RCLCPP_INFO(rclcpp::get_logger(node_name), "DATA %04llx", tmp_unsigned_data); RCLCPP_INFO(rclcpp::get_logger(node_name), "%lf m/s", msg_velocity.twist.linear.x); pub->publish(msg_velocity); - - } + } } -int main(int argc, char **argv){ - +int main(int argc, char** argv) { rclcpp::init(argc, argv); auto node = rclcpp::Node::make_shared("can_velocity_converter"); - node->declare_parameter("can_id",can_id); - node->declare_parameter("start_bit",start_bit); - node->declare_parameter("length",length); - node->declare_parameter("factor",factor); - node->declare_parameter("offset",offset); - node->declare_parameter("byte_order",byte_order); - node->declare_parameter("value_type",value_type); - - node->get_parameter("can_id",can_id); - node->get_parameter("start_bit",start_bit); - node->get_parameter("length",length); - node->get_parameter("factor",factor); - node->get_parameter("offset",offset); - node->get_parameter("byte_order",byte_order); - node->get_parameter("value_type",value_type); - - std::cout<< "can_id "<create_subscription("/vehicle/can_tx", rclcpp::QoS(10), can_callback); + node->declare_parameter("can_id", can_id); + node->declare_parameter("start_bit", start_bit); + node->declare_parameter("length", length); + node->declare_parameter("factor", factor); + node->declare_parameter("offset", offset); + node->declare_parameter("byte_order", byte_order); + node->declare_parameter("value_type", value_type); + + node->get_parameter("can_id", can_id); + node->get_parameter("start_bit", start_bit); + node->get_parameter("length", length); + node->get_parameter("factor", factor); + node->get_parameter("offset", offset); + node->get_parameter("byte_order", byte_order); + node->get_parameter("value_type", value_type); + + std::cout << "can_id " << can_id << std::endl; + std::cout << "start_bit " << start_bit << std::endl; + std::cout << "length " << length << std::endl; + std::cout << "factor " << factor << std::endl; + std::cout << "offset " << offset << std::endl; + std::cout << "byte_order " << byte_order << std::endl; + std::cout << "value_type " << value_type << std::endl; + + auto sub1 = node->create_subscription("/vehicle/can_tx", rclcpp::QoS(10), + can_callback); pub = node->create_publisher("/can_twist", rclcpp::QoS(10)); rclcpp::spin(node); diff --git a/eagleye_util/fix2kml/include/fix2kml/KmlGenerator.hpp b/eagleye_util/fix2kml/include/fix2kml/KmlGenerator.hpp old mode 100755 new mode 100644 index bdf80a1f..c85fc4f5 --- a/eagleye_util/fix2kml/include/fix2kml/KmlGenerator.hpp +++ b/eagleye_util/fix2kml/include/fix2kml/KmlGenerator.hpp @@ -34,18 +34,15 @@ #ifndef KMLGENERATOR_H #define KMLGENERATOR_H -class KmlGenerator -{ +class KmlGenerator { public: - KmlGenerator(const std::string,const std::string); - KmlGenerator(const std::string,const std::string,const std::string); - + KmlGenerator(const std::string, const std::string); + KmlGenerator(const std::string, const std::string, const std::string); void addPoint(double, double, double); void KmlGenerate(const std::string); std::string getKmlBody(); - private: std::ofstream kmlfile_; std::stringstream header_; @@ -55,94 +52,83 @@ class KmlGenerator std::stringstream footer_; }; -KmlGenerator::KmlGenerator(const std::string kmlname,const std::string color="ff0000ff") -{ - header_ - << ""<< "\n" - << ""<< "\n" - << ""<< "\n" - << ""<< kmlname <<""<< "\n" - << "\n"; - - config_header_ - << "\t"<< "\n" - << "\t\t"<< kmlname <<""<< "\n" - << "\t\t" << "\n" - << "\t\t"<< "\n" - << "\t\t\t1"<< "\n" - << "\t\t\t"<< "\n"; - - config_footer_ - << "\t\t\t"<< "\n" - << "\t\t"<< "\n" - << "\t"<< "\n" - << "\n"; - - footer_ - << ""<< "\n" - << ""<< "\n"; +KmlGenerator::KmlGenerator(const std::string kmlname, const std::string color = "ff0000ff") { + header_ << "" << "\n" + << "" << "\n" + << "" << "\n" + << "" << kmlname << "" << "\n" + << "\n"; + + config_header_ << "\t" << "\n" + << "\t\t" << kmlname << "" << "\n" + << "\t\t" << "\n" + << "\t\t" << "\n" + << "\t\t\t1" << "\n" + << "\t\t\t" << "\n"; + + config_footer_ << "\t\t\t" << "\n" + << "\t\t" << "\n" + << "\t" << "\n" + << "\n"; + + footer_ << "" << "\n" + << "" << "\n"; } -KmlGenerator::KmlGenerator(const std::string kmlname,const std::string filename,const std::string body) -{ +KmlGenerator::KmlGenerator(const std::string kmlname, const std::string filename, + const std::string body) { kmlfile_.open(filename, std::ios::out); - if(!kmlfile_) std::cerr << "KmlGenerator::KmlGenerate\tCould not open file file! " << filename << std::endl; + if (!kmlfile_) + std::cerr << "KmlGenerator::KmlGenerate\tCould not open file file! " << filename << std::endl; std::cout << "KmlGenerator::KmlGenerate\topen file file! " << filename << std::endl; - header_ - << ""<< "\n" - << ""<< "\n" - << ""<< "\n" - << ""<< kmlname <<""<< "\n" - << "\n"; + header_ << "" << "\n" + << "" << "\n" + << "" << "\n" + << "" << kmlname << "" << "\n" + << "\n"; - footer_ - << ""<< "\n" - << ""<< "\n"; + footer_ << "" << "\n" + << "" << "\n"; std::string s_header = header_.str(); std::string s_footer = footer_.str(); kmlfile_ << s_header << body << s_footer; kmlfile_.close(); - } -void KmlGenerator::addPoint(double longitude, double latitude, double altitude) -{ - body_ << std::setprecision(13) << longitude <<"," - << std::setprecision(13) << latitude <<"," - << std::setprecision(13) << altitude <<"\n"; +void KmlGenerator::addPoint(double longitude, double latitude, double altitude) { + body_ << std::setprecision(13) << longitude << "," << std::setprecision(13) << latitude << "," + << std::setprecision(13) << altitude << "\n"; } -void KmlGenerator::KmlGenerate(const std::string filename) -{ +void KmlGenerator::KmlGenerate(const std::string filename) { kmlfile_.open(filename, std::ios::out); - if(!kmlfile_) std::cerr << "KmlGenerator::KmlGenerate\tCould not open file file! " << filename << std::endl; + if (!kmlfile_) + std::cerr << "KmlGenerator::KmlGenerate\tCould not open file file! " << filename << std::endl; - std::string s_header = header_.str(); + std::string s_header = header_.str(); std::string s_config_header = config_header_.str(); - std::string s_body = body_.str(); + std::string s_body = body_.str(); std::string s_config_footer = config_footer_.str(); - std::string s_footer = footer_.str(); + std::string s_footer = footer_.str(); kmlfile_ << s_header << s_config_header << s_body << s_config_footer << s_footer; kmlfile_.close(); } -std::string KmlGenerator::getKmlBody() -{ +std::string KmlGenerator::getKmlBody() { std::string s_config_header = config_header_.str(); - std::string s_body = body_.str(); + std::string s_body = body_.str(); std::string s_config_footer = config_footer_.str(); return s_config_header + s_body + s_config_footer; } - #endif /*KMLGENERATOR_H */ diff --git a/eagleye_util/fix2kml/src/fix2kml.cpp b/eagleye_util/fix2kml/src/fix2kml.cpp old mode 100755 new mode 100644 index f6b6b47e..23103105 --- a/eagleye_util/fix2kml/src/fix2kml.cpp +++ b/eagleye_util/fix2kml/src/fix2kml.cpp @@ -38,13 +38,11 @@ static double driving_distance = 0.0; static double driving_distance_last = 0.0; static std::string filename, kmlname, fixname, color = "ff0000ff"; -void distance_callback(const eagleye_msgs::msg::Distance::ConstSharedPtr msg) -{ +void distance_callback(const eagleye_msgs::msg::Distance::ConstSharedPtr msg) { driving_distance = msg->distance; } -void receive_data(const sensor_msgs::msg::NavSatFix::ConstSharedPtr msg, KmlGenerator* kmlfile) -{ +void receive_data(const sensor_msgs::msg::NavSatFix::ConstSharedPtr msg, KmlGenerator* kmlfile) { if ((driving_distance - driving_distance_last) > interval) { kmlfile->addPoint(msg->longitude, msg->latitude, msg->altitude); kmlfile->KmlGenerate(filename); @@ -52,8 +50,7 @@ void receive_data(const sensor_msgs::msg::NavSatFix::ConstSharedPtr msg, KmlGene } } -int main(int argc, char** argv) -{ +int main(int argc, char** argv) { rclcpp::init(argc, argv); auto node = rclcpp::Node::make_shared("fix2kml"); @@ -72,11 +69,14 @@ int main(int argc, char** argv) std::cout << "fixname: " << fixname << std::endl; std::cout << "color: " << color << std::endl; - KmlGenerator kmlfile(kmlname,color); + KmlGenerator kmlfile(kmlname, color); - std::function)> sub1_fnc = std::bind(&receive_data, std::placeholders::_1, &kmlfile); - auto sub1 = node->create_subscription(fixname, rclcpp::QoS(10), sub1_fnc); - auto sub2 = node->create_subscription("/eagleye/distance", rclcpp::QoS(10), distance_callback); + std::function)> sub1_fnc = + std::bind(&receive_data, std::placeholders::_1, &kmlfile); + auto sub1 = + node->create_subscription(fixname, rclcpp::QoS(10), sub1_fnc); + auto sub2 = node->create_subscription( + "/eagleye/distance", rclcpp::QoS(10), distance_callback); rclcpp::spin(node); return 0; diff --git a/eagleye_util/geo_pose_converter/src/geo_pose_converter.cpp b/eagleye_util/geo_pose_converter/src/geo_pose_converter.cpp index 59746d03..325457be 100644 --- a/eagleye_util/geo_pose_converter/src/geo_pose_converter.cpp +++ b/eagleye_util/geo_pose_converter/src/geo_pose_converter.cpp @@ -55,7 +55,8 @@ std::shared_ptr _br; static std::string _parent_frame_id, _child_frame_id; static std::string _base_link_frame_id, _gnss_frame_id; -std::string geoid_file_path = ament_index_cpp::get_package_share_directory("llh_converter") + "/data/gsigeo2011_ver2_1.asc"; +std::string geoid_file_path = + ament_index_cpp::get_package_share_directory("llh_converter") + "/data/gsigeo2011_ver2_1.asc"; llh_converter::LLHConverter _lc(geoid_file_path); llh_converter::LLHParam _llh_param; @@ -63,13 +64,13 @@ std::string _node_name = "eagleye_geo_pose_converter"; tf2_ros::Buffer _tf_buffer(std::make_shared(_ros_clock)); -void geo_pose_callback(const geographic_msgs::msg::GeoPoseWithCovarianceStamped::ConstSharedPtr msg) -{ - double llh[3] = {0}; - double xyz[3] = {0}; +void geo_pose_callback( + const geographic_msgs::msg::GeoPoseWithCovarianceStamped::ConstSharedPtr msg) { + double llh[3] = { 0 }; + double xyz[3] = { 0 }; llh[0] = msg->pose.pose.position.latitude * M_PI / 180; - llh[1] = msg->pose.pose.position.longitude* M_PI / 180; + llh[1] = msg->pose.pose.position.longitude * M_PI / 180; llh[2] = msg->pose.pose.position.altitude; _lc.convertRad2XYZ(llh[0], llh[1], llh[2], xyz[0], xyz[1], xyz[2], _llh_param); @@ -83,24 +84,27 @@ void geo_pose_callback(const geographic_msgs::msg::GeoPoseWithCovarianceStamped: pose.pose.orientation = msg->pose.pose.orientation; const auto localization_quat = tf2::Quaternion(pose.pose.orientation.x, pose.pose.orientation.y, - pose.pose.orientation.z, pose.pose.orientation.w); + pose.pose.orientation.z, pose.pose.orientation.w); geometry_msgs::msg::PoseStamped::SharedPtr transformed_pose_msg_ptr( new geometry_msgs::msg::PoseStamped); - geometry_msgs::msg::TransformStamped::SharedPtr TF_sensor_to_base_ptr(new geometry_msgs::msg::TransformStamped); - try - { - *TF_sensor_to_base_ptr = _tf_buffer.lookupTransform(_gnss_frame_id, _base_link_frame_id, tf2::TimePointZero); + geometry_msgs::msg::TransformStamped::SharedPtr TF_sensor_to_base_ptr( + new geometry_msgs::msg::TransformStamped); + try { + *TF_sensor_to_base_ptr = + _tf_buffer.lookupTransform(_gnss_frame_id, _base_link_frame_id, tf2::TimePointZero); tf2::Transform transform, transform2, transfrom3; - transform.setOrigin(tf2::Vector3(pose.pose.position.x, pose.pose.position.y, - pose.pose.position.z)); + transform.setOrigin( + tf2::Vector3(pose.pose.position.x, pose.pose.position.y, pose.pose.position.z)); transform.setRotation(localization_quat); - tf2::Quaternion q2(TF_sensor_to_base_ptr->transform.rotation.x, TF_sensor_to_base_ptr->transform.rotation.y, + tf2::Quaternion q2( + TF_sensor_to_base_ptr->transform.rotation.x, TF_sensor_to_base_ptr->transform.rotation.y, TF_sensor_to_base_ptr->transform.rotation.z, TF_sensor_to_base_ptr->transform.rotation.w); transform2.setOrigin(tf2::Vector3(TF_sensor_to_base_ptr->transform.translation.x, - TF_sensor_to_base_ptr->transform.translation.y, TF_sensor_to_base_ptr->transform.translation.z)); + TF_sensor_to_base_ptr->transform.translation.y, + TF_sensor_to_base_ptr->transform.translation.z)); transform2.setRotation(q2); transfrom3 = transform * transform2; @@ -113,9 +117,7 @@ void geo_pose_callback(const geographic_msgs::msg::GeoPoseWithCovarianceStamped: pose.pose.orientation.z = transfrom3.getRotation().getZ(); pose.pose.orientation.w = transfrom3.getRotation().getW(); - } - catch (tf2::TransformException& ex) - { + } catch (tf2::TransformException& ex) { RCLCPP_WARN(rclcpp::get_logger(_node_name), "%s", ex.what()); return; } @@ -135,9 +137,10 @@ void geo_pose_callback(const geographic_msgs::msg::GeoPoseWithCovarianceStamped: pose_with_covariance.pose.covariance[28] = msg->pose.covariance[28]; pose_with_covariance.pose.covariance[35] = msg->pose.covariance[35]; _pub2->publish(pose_with_covariance); - + tf2::Transform transform; - transform.setOrigin(tf2::Vector3(pose.pose.position.x, pose.pose.position.y, pose.pose.position.z)); + transform.setOrigin( + tf2::Vector3(pose.pose.position.x, pose.pose.position.y, pose.pose.position.z)); // NOTE: currently geo_pose_fuser, the node before this node, ignores roll and pitch for robust estimation results. transform.setRotation(localization_quat); @@ -149,8 +152,7 @@ void geo_pose_callback(const geographic_msgs::msg::GeoPoseWithCovarianceStamped: _br->sendTransform(trans_msg); } -int main(int argc, char** argv) -{ +int main(int argc, char** argv) { int plane = 7; int tf_num = 7; int convert_height_num = 7; @@ -177,67 +179,51 @@ int main(int argc, char** argv) node->get_parameter("base_link_frame_id", _base_link_frame_id); node->get_parameter("gnss_frame_id", _gnss_frame_id); - std::cout<< "plane "<< plane<create_subscription("eagleye/geo_pose_with_covariance", 1000, geo_pose_callback); + auto sub = node->create_subscription( + "eagleye/geo_pose_with_covariance", 1000, geo_pose_callback); _pub = node->create_publisher("eagleye/pose", 1000); - _pub2 = node->create_publisher("eagleye/pose_with_covariance", 1000); + _pub2 = node->create_publisher( + "eagleye/pose_with_covariance", 1000); _br = std::make_shared(node, 100); rclcpp::spin(node); diff --git a/eagleye_util/geo_pose_fusion/src/geo_pose_fusion.cpp b/eagleye_util/geo_pose_fusion/src/geo_pose_fusion.cpp index d365c082..b5c1fef3 100644 --- a/eagleye_util/geo_pose_fusion/src/geo_pose_fusion.cpp +++ b/eagleye_util/geo_pose_fusion/src/geo_pose_fusion.cpp @@ -54,62 +54,51 @@ static geographic_msgs::msg::GeoPoseWithCovarianceStamped _geo_pose_with_covaria bool _fix_only_publish = false; int _fix_judgement_type = 0; -double _fix_std_pos_thres = 0.1; // [m] +double _fix_std_pos_thres = 0.1; // [m] std::string _node_name = "eagleye_geo_pose_fusion"; -void heading_callback(const eagleye_msgs::msg::Heading::ConstSharedPtr msg) -{ +void heading_callback(const eagleye_msgs::msg::Heading::ConstSharedPtr msg) { _eagleye_heading = *msg; } -void rolling_callback(const eagleye_msgs::msg::Rolling::ConstSharedPtr msg) -{ +void rolling_callback(const eagleye_msgs::msg::Rolling::ConstSharedPtr msg) { _eagleye_rolling = *msg; } -void pitching_callback(const eagleye_msgs::msg::Pitching::ConstSharedPtr msg) -{ +void pitching_callback(const eagleye_msgs::msg::Pitching::ConstSharedPtr msg) { _eagleye_pitching = *msg; } -void fix_callback(const sensor_msgs::msg::NavSatFix::ConstSharedPtr msg) -{ +void fix_callback(const sensor_msgs::msg::NavSatFix::ConstSharedPtr msg) { bool fix_flag = false; - if(_fix_judgement_type == 0) - { - if(msg->status.status == 0 && _eagleye_heading.status.enabled_status) fix_flag = true; - } - else if(_fix_judgement_type == 1) - { - if(msg->position_covariance[0] < _fix_std_pos_thres * _fix_std_pos_thres && _eagleye_heading.status.enabled_status) fix_flag = true; - } - else - { + if (_fix_judgement_type == 0) { + if (msg->status.status == 0 && _eagleye_heading.status.enabled_status) + fix_flag = true; + } else if (_fix_judgement_type == 1) { + if (msg->position_covariance[0] < _fix_std_pos_thres * _fix_std_pos_thres && + _eagleye_heading.status.enabled_status) + fix_flag = true; + } else { RCLCPP_ERROR(rclcpp::get_logger(_node_name), "fix_judgement_type is not valid"); rclcpp::shutdown(); } - if(_fix_only_publish && !fix_flag) - { + if (_fix_only_publish && !fix_flag) { return; } double eagleye_heading = 0; tf2::Quaternion localization_quat; - if (_eagleye_heading.status.enabled_status) - { + if (_eagleye_heading.status.enabled_status) { // NOTE: currently geo_pose_fusion ignores roll and pitch for robust estimation results. - eagleye_heading = fmod((90* M_PI / 180)-_eagleye_heading.heading_angle,2*M_PI); + eagleye_heading = fmod((90 * M_PI / 180) - _eagleye_heading.heading_angle, 2 * M_PI); localization_quat.setRPY(0, 0, eagleye_heading); - } - else - { + } else { tf2::Matrix3x3(localization_quat).setRPY(0, 0, 0); } _quat = tf2::toMsg(localization_quat); - _geo_pose_with_covariance.header = msg->header; _geo_pose_with_covariance.header.frame_id = "map"; _geo_pose_with_covariance.pose.pose.position.latitude = msg->latitude; @@ -118,12 +107,15 @@ void fix_callback(const sensor_msgs::msg::NavSatFix::ConstSharedPtr msg) _geo_pose_with_covariance.pose.pose.orientation = _quat; // TODO(Map IV): temporary value - double std_dev_roll = 100; // [rad] - double std_dev_pitch = 100; // [rad] - double std_dev_yaw = 100; // [rad] - if(_eagleye_rolling.status.enabled_status) std_dev_roll = 0.5 / 180 * M_PI; - if(_eagleye_pitching.status.enabled_status) std_dev_pitch = 0.5 / 180 * M_PI; - if(_eagleye_heading.status.enabled_status) std_dev_yaw = std::sqrt(_eagleye_heading.variance); + double std_dev_roll = 100; // [rad] + double std_dev_pitch = 100; // [rad] + double std_dev_yaw = 100; // [rad] + if (_eagleye_rolling.status.enabled_status) + std_dev_roll = 0.5 / 180 * M_PI; + if (_eagleye_pitching.status.enabled_status) + std_dev_pitch = 0.5 / 180 * M_PI; + if (_eagleye_heading.status.enabled_status) + std_dev_yaw = std::sqrt(_eagleye_heading.variance); // Covariance in NavSatFix is in ENU coordinate while the one in GeoPoseWithCovariance is in Lat/Lon/Alt coordinate. // In order to be consistent with the msg definition, we need to swap the covariance of x and y. @@ -137,8 +129,7 @@ void fix_callback(const sensor_msgs::msg::NavSatFix::ConstSharedPtr msg) _pub->publish(_geo_pose_with_covariance); } -int main(int argc, char** argv) -{ +int main(int argc, char** argv) { rclcpp::init(argc, argv); auto node = rclcpp::Node::make_shared(_node_name); @@ -150,15 +141,20 @@ int main(int argc, char** argv) node->get_parameter("fix_judgement_type", _fix_judgement_type); node->get_parameter("fix_std_pos_thres", _fix_std_pos_thres); - std::cout<< "fix_only_publish "<< _fix_only_publish<create_subscription("eagleye/heading_interpolate_3rd", 1000, heading_callback); - auto sub3 = node->create_subscription("eagleye/fix", 1000, fix_callback); - auto sub4 = node->create_subscription("eagleye/rolling", 1000, rolling_callback); - auto sub5 = node->create_subscription("eagleye/pitching", 1000, pitching_callback); - _pub = node->create_publisher("eagleye/geo_pose_with_covariance", 1000); + std::cout << "fix_only_publish " << _fix_only_publish << std::endl; + std::cout << "fix_judgement_type " << _fix_judgement_type << std::endl; + std::cout << "fix_std_pos_thres " << _fix_std_pos_thres << std::endl; + + auto sub1 = node->create_subscription( + "eagleye/heading_interpolate_3rd", 1000, heading_callback); + auto sub3 = + node->create_subscription("eagleye/fix", 1000, fix_callback); + auto sub4 = node->create_subscription("eagleye/rolling", 1000, + rolling_callback); + auto sub5 = node->create_subscription("eagleye/pitching", 1000, + pitching_callback); + _pub = node->create_publisher( + "eagleye/geo_pose_with_covariance", 1000); rclcpp::spin(node); return 0; diff --git a/eagleye_util/gnss_converter/include/gnss_converter/nmea2fix.hpp b/eagleye_util/gnss_converter/include/gnss_converter/nmea2fix.hpp index 983f4608..e764c39f 100644 --- a/eagleye_util/gnss_converter/include/gnss_converter/nmea2fix.hpp +++ b/eagleye_util/gnss_converter/include/gnss_converter/nmea2fix.hpp @@ -36,7 +36,7 @@ #include extern double stringToGPSTime(std::string&, double); -extern void gnss_converter_converter(const nmea_msgs::msg::Sentence, sensor_msgs::msg::NavSatFix*, - nmea_msgs::msg::Gpgga*, nmea_msgs::msg::Gprmc*); +extern void gnss_converter_converter(const nmea_msgs::msg::Sentence, sensor_msgs::msg::NavSatFix*, + nmea_msgs::msg::Gpgga*, nmea_msgs::msg::Gprmc*); #endif /*gnss_converter_H */ diff --git a/eagleye_util/gnss_converter/src/gnss_converter_node.cpp b/eagleye_util/gnss_converter/src/gnss_converter_node.cpp index 741988be..524b2ef7 100644 --- a/eagleye_util/gnss_converter/src/gnss_converter_node.cpp +++ b/eagleye_util/gnss_converter/src/gnss_converter_node.cpp @@ -12,12 +12,11 @@ rclcpp::Publisher::SharedPtr gga_pub; rclcpp::Publisher::SharedPtr rmc_pub; rclcpp::Publisher::SharedPtr rtklib_nav_pub; - static nmea_msgs::msg::Sentence sentence; sensor_msgs::msg::NavSatFix::ConstSharedPtr nav_msg_ptr; -static std::string sub_topic_name, pub_fix_topic_name = "fix", - pub_gga_topic_name = "gga", pub_rmc_topic_name = "rmc" ,pub_rtklib_nav_topic = "rtklib_nav"; +static std::string sub_topic_name, pub_fix_topic_name = "fix", pub_gga_topic_name = "gga", + pub_rmc_topic_name = "rmc", pub_rtklib_nav_topic = "rtklib_nav"; double twist_covariance_thresh = 0.2; double ublox_vacc_thresh = 200.0; @@ -27,8 +26,7 @@ bool use_multi_antenna_mode = false; std::string node_name = "gnss_converter_node"; -void nmea_callback(const nmea_msgs::msg::Sentence::ConstSharedPtr msg) -{ +void nmea_callback(const nmea_msgs::msg::Sentence::ConstSharedPtr msg) { nmea_msgs::msg::Gpgga gga; nmea_msgs::msg::Gprmc rmc; sensor_msgs::msg::NavSatFix fix; @@ -40,44 +38,40 @@ void nmea_callback(const nmea_msgs::msg::Sentence::ConstSharedPtr msg) rclcpp::Time ros_clock(fix.header.stamp); rclcpp::Time ros_clock2(rmc.header.stamp); - if (ros_clock.seconds() != 0) - { + if (ros_clock.seconds() != 0) { gga.header.frame_id = fix.header.frame_id = "gnss"; navsatfix_pub->publish(fix); gga_pub->publish(gga); } - if (ros_clock2.seconds() != 0) - { + if (ros_clock2.seconds() != 0) { rmc.header.frame_id = "gnss"; rmc_pub->publish(rmc); } } void rtklib_nav_callback(const rtklib_msgs::msg::RtklibNav::ConstSharedPtr msg) { - rtklib_nav_pub->publish(*msg);; + rtklib_nav_pub->publish(*msg); + ; } void navsatfix_callback(const sensor_msgs::msg::NavSatFix::ConstSharedPtr msg) { - if(msg->position_covariance[0] == 0 && msg->position_covariance[4] == 0 && msg->position_covariance[8] == 0) - { - RCLCPP_WARN(rclcpp::get_logger(node_name),"position_covariance diagonal elements are all 0"); + if (msg->position_covariance[0] == 0 && msg->position_covariance[4] == 0 && + msg->position_covariance[8] == 0) { + RCLCPP_WARN(rclcpp::get_logger(node_name), "position_covariance diagonal elements are all 0"); return; } nav_msg_ptr = msg; - if(use_multi_antenna_mode) navsatfix_pub->publish(*msg); + if (use_multi_antenna_mode) + navsatfix_pub->publish(*msg); } - -void navpvt_callback(const ublox_msgs::msg::NavPVT::ConstSharedPtr msg) -{ - if(msg->s_acc > ublox_vacc_thresh) - { - RCLCPP_WARN(rclcpp::get_logger(node_name),"s_acc is too large"); +void navpvt_callback(const ublox_msgs::msg::NavPVT::ConstSharedPtr msg) { + if (msg->s_acc > ublox_vacc_thresh) { + RCLCPP_WARN(rclcpp::get_logger(node_name), "s_acc is too large"); return; } - if (nav_msg_ptr == nullptr) - { - RCLCPP_WARN(rclcpp::get_logger(node_name),"nav_msg_ptr is nullptr"); + if (nav_msg_ptr == nullptr) { + RCLCPP_WARN(rclcpp::get_logger(node_name), "nav_msg_ptr is nullptr"); return; } rtklib_msgs::msg::RtklibNav r; @@ -94,7 +88,7 @@ void navpvt_callback(const ublox_msgs::msg::NavPVT::ConstSharedPtr msg) double ecef_pos[3]; llh2xyz(llh, ecef_pos); - double enu_vel[3] = {msg->vel_e * 1e-3, msg->vel_n * 1e-3, -msg->vel_d * 1e-3}; + double enu_vel[3] = { msg->vel_e * 1e-3, msg->vel_n * 1e-3, -msg->vel_d * 1e-3 }; double ecef_vel[3]; enu2xyz_vel(enu_vel, ecef_pos, ecef_vel); @@ -108,8 +102,7 @@ void navpvt_callback(const ublox_msgs::msg::NavPVT::ConstSharedPtr msg) rtklib_nav_pub->publish(r); } -void pvtgeodetic_callback(const septentrio_gnss_driver::msg::PVTGeodetic::ConstSharedPtr msg) -{ +void pvtgeodetic_callback(const septentrio_gnss_driver::msg::PVTGeodetic::ConstSharedPtr msg) { rtklib_msgs::msg::RtklibNav r; r.header.frame_id = "gps"; r.header.stamp = msg->header.stamp; @@ -124,7 +117,7 @@ void pvtgeodetic_callback(const septentrio_gnss_driver::msg::PVTGeodetic::ConstS double ecef_pos[3]; llh2xyz(llh, ecef_pos); - double enu_vel[3] = {msg->ve, msg->vn, msg->vu}; + double enu_vel[3] = { msg->ve, msg->vn, msg->vu }; double ecef_vel[3]; enu2xyz_vel(enu_vel, ecef_pos, ecef_vel); @@ -138,16 +131,14 @@ void pvtgeodetic_callback(const septentrio_gnss_driver::msg::PVTGeodetic::ConstS rtklib_nav_pub->publish(r); } -void gnss_velocity_callback(const geometry_msgs::msg::TwistWithCovarianceStamped::ConstSharedPtr msg) -{ - if(msg->twist.covariance[0] > twist_covariance_thresh) - { - RCLCPP_WARN(rclcpp::get_logger(node_name),"twist.covariance[0] is too large"); +void gnss_velocity_callback( + const geometry_msgs::msg::TwistWithCovarianceStamped::ConstSharedPtr msg) { + if (msg->twist.covariance[0] > twist_covariance_thresh) { + RCLCPP_WARN(rclcpp::get_logger(node_name), "twist.covariance[0] is too large"); return; } - if (nav_msg_ptr == nullptr) - { - RCLCPP_WARN(rclcpp::get_logger(node_name),"nav_msg_ptr is nullptr"); + if (nav_msg_ptr == nullptr) { + RCLCPP_WARN(rclcpp::get_logger(node_name), "nav_msg_ptr is nullptr"); return; } rtklib_msgs::msg::RtklibNav r; @@ -176,16 +167,15 @@ void gnss_velocity_callback(const geometry_msgs::msg::TwistWithCovarianceStamped rtklib_nav_pub->publish(r); } - -int main(int argc, char** argv) -{ +int main(int argc, char** argv) { rclcpp::init(argc, argv); auto node = rclcpp::Node::make_shared(node_name); int velocity_source_type = 0; // rtklib_msgs/RtklibNav: 0, nmea_msgs/Sentence: 1, ublox_msgs/NavPVT: 2, geometry_msgs/TwistWithCovarianceStamped: 3 std::string velocity_source_topic; - int llh_source_type = 0; // rtklib_msgs/RtklibNav: 0, nmea_msgs/Sentence: 1, sensor_msgs/NavSatFix: 2 + int llh_source_type = + 0; // rtklib_msgs/RtklibNav: 0, nmea_msgs/Sentence: 1, sensor_msgs/NavSatFix: 2 std::string llh_source_topic; rclcpp::Subscription::SharedPtr rtklib_nav_sub; @@ -195,98 +185,81 @@ int main(int argc, char** argv) rclcpp::Subscription::SharedPtr pvtgeodetic_sub; rclcpp::Subscription::SharedPtr navsatfix_sub; - node->declare_parameter("is_sub_antenna",is_sub_antenna); - node->get_parameter("is_sub_antenna",is_sub_antenna); - node->declare_parameter("use_multi_antenna_mode",use_multi_antenna_mode); - node->get_parameter("use_multi_antenna_mode",use_multi_antenna_mode); - - if(!is_sub_antenna) - { - node->declare_parameter("gnss.llh_source_type",llh_source_type); - node->declare_parameter("gnss.llh_source_topic",llh_source_topic); - node->get_parameter("gnss.llh_source_type",llh_source_type); - node->get_parameter("gnss.llh_source_topic",llh_source_topic); - if(use_multi_antenna_mode && llh_source_type == 0) - { - RCLCPP_ERROR(node->get_logger(),"Invalid llh_source_type for Main Antenna in Multi Antenna Mode"); + node->declare_parameter("is_sub_antenna", is_sub_antenna); + node->get_parameter("is_sub_antenna", is_sub_antenna); + node->declare_parameter("use_multi_antenna_mode", use_multi_antenna_mode); + node->get_parameter("use_multi_antenna_mode", use_multi_antenna_mode); + + if (!is_sub_antenna) { + node->declare_parameter("gnss.llh_source_type", llh_source_type); + node->declare_parameter("gnss.llh_source_topic", llh_source_topic); + node->get_parameter("gnss.llh_source_type", llh_source_type); + node->get_parameter("gnss.llh_source_topic", llh_source_topic); + if (use_multi_antenna_mode && llh_source_type == 0) { + RCLCPP_ERROR(node->get_logger(), + "Invalid llh_source_type for Main Antenna in Multi Antenna Mode"); rclcpp::shutdown(); } - } - else - { - node->declare_parameter("sub_gnss.llh_source_type",llh_source_type); - node->declare_parameter("sub_gnss.llh_source_topic",llh_source_topic); - node->get_parameter("sub_gnss.llh_source_type",llh_source_type); - node->get_parameter("sub_gnss.llh_source_topic",llh_source_topic); - if(llh_source_type == 0) - { - RCLCPP_ERROR(node->get_logger(),"Invalid llh_source_type for Sub Antenna"); + } else { + node->declare_parameter("sub_gnss.llh_source_type", llh_source_type); + node->declare_parameter("sub_gnss.llh_source_topic", llh_source_topic); + node->get_parameter("sub_gnss.llh_source_type", llh_source_type); + node->get_parameter("sub_gnss.llh_source_topic", llh_source_topic); + if (llh_source_type == 0) { + RCLCPP_ERROR(node->get_logger(), "Invalid llh_source_type for Sub Antenna"); rclcpp::shutdown(); } } - node->declare_parameter("gnss.velocity_source_type",velocity_source_type); - node->declare_parameter("gnss.velocity_source_topic",velocity_source_topic); - node->declare_parameter("twist_covariance_thresh",twist_covariance_thresh); - node->declare_parameter("ublox_vacc_thresh",ublox_vacc_thresh); - node->get_parameter("gnss.velocity_source_type",velocity_source_type); - node->get_parameter("gnss.velocity_source_topic",velocity_source_topic); - node->get_parameter("twist_covariance_thresh",twist_covariance_thresh); - node->get_parameter("ublox_vacc_thresh",ublox_vacc_thresh); - - std::cout<< "velocity_source_type "<create_subscription(velocity_source_topic, 1000, rtklib_nav_callback); - } - else if(velocity_source_type == 1) - { - nmea_sentence_sub = node->create_subscription(velocity_source_topic, 1000, nmea_callback); - } - else if(velocity_source_type == 2) - { - navpvt_sub = node->create_subscription(velocity_source_topic, 1000, navpvt_callback); - } - else if(velocity_source_type == 3) - { + node->declare_parameter("gnss.velocity_source_type", velocity_source_type); + node->declare_parameter("gnss.velocity_source_topic", velocity_source_topic); + node->declare_parameter("twist_covariance_thresh", twist_covariance_thresh); + node->declare_parameter("ublox_vacc_thresh", ublox_vacc_thresh); + node->get_parameter("gnss.velocity_source_type", velocity_source_type); + node->get_parameter("gnss.velocity_source_topic", velocity_source_topic); + node->get_parameter("twist_covariance_thresh", twist_covariance_thresh); + node->get_parameter("ublox_vacc_thresh", ublox_vacc_thresh); + + std::cout << "velocity_source_type " << velocity_source_type << std::endl; + std::cout << "velocity_source_topic " << velocity_source_topic << std::endl; + std::cout << "llh_source_type " << llh_source_type << std::endl; + std::cout << "llh_source_topic " << llh_source_topic << std::endl; + std::cout << "twist_covariance_thresh " << twist_covariance_thresh << std::endl; + std::cout << "ublox_vacc_thresh " << ublox_vacc_thresh << std::endl; + + if (!is_sub_antenna) { + if (velocity_source_type == 0) { + rtklib_nav_sub = node->create_subscription( + velocity_source_topic, 1000, rtklib_nav_callback); + } else if (velocity_source_type == 1) { + nmea_sentence_sub = node->create_subscription(velocity_source_topic, + 1000, nmea_callback); + } else if (velocity_source_type == 2) { + navpvt_sub = node->create_subscription(velocity_source_topic, 1000, + navpvt_callback); + } else if (velocity_source_type == 3) { gnss_velocity_sub = node->create_subscription( - velocity_source_topic, 1000, gnss_velocity_callback); - } - else if(velocity_source_type == 4) - { + velocity_source_topic, 1000, gnss_velocity_callback); + } else if (velocity_source_type == 4) { pvtgeodetic_sub = node->create_subscription( velocity_source_topic, 1000, pvtgeodetic_callback); - } - else - { - RCLCPP_ERROR(node->get_logger(),"Invalid velocity_source_type"); + } else { + RCLCPP_ERROR(node->get_logger(), "Invalid velocity_source_type"); rclcpp::shutdown(); } } - if(llh_source_type == 0) - { - rtklib_nav_sub = node->create_subscription(llh_source_topic, 1000, rtklib_nav_callback); - } - else if(llh_source_type == 1) - { - nmea_sentence_sub = node->create_subscription(llh_source_topic, 1000, nmea_callback); - } - else if(llh_source_type == 2) - { - navsatfix_sub = node->create_subscription(llh_source_topic, 1000, navsatfix_callback); - } - else - { - RCLCPP_ERROR(node->get_logger(),"Invalid llh_source_type"); + if (llh_source_type == 0) { + rtklib_nav_sub = node->create_subscription(llh_source_topic, 1000, + rtklib_nav_callback); + } else if (llh_source_type == 1) { + nmea_sentence_sub = + node->create_subscription(llh_source_topic, 1000, nmea_callback); + } else if (llh_source_type == 2) { + navsatfix_sub = node->create_subscription(llh_source_topic, 1000, + navsatfix_callback); + } else { + RCLCPP_ERROR(node->get_logger(), "Invalid llh_source_type"); rclcpp::shutdown(); } diff --git a/eagleye_util/gnss_converter/src/nmea2fix_core.cpp b/eagleye_util/gnss_converter/src/nmea2fix_core.cpp index de115cda..f50a92e5 100644 --- a/eagleye_util/gnss_converter/src/nmea2fix_core.cpp +++ b/eagleye_util/gnss_converter/src/nmea2fix_core.cpp @@ -25,11 +25,9 @@ #include "gnss_converter/nmea2fix.hpp" -double stringToGPSTime(std::string& input, double header_time) -{ - +double stringToGPSTime(std::string& input, double header_time) { time_t time; - struct tm *tm_localtime; + struct tm* tm_localtime; struct tm tm_GPSTime; double GPSTime, GPSTime_msec; int Leaptime = 18; @@ -40,9 +38,9 @@ double stringToGPSTime(std::string& input, double header_time) tm_GPSTime.tm_year = tm_localtime->tm_year; tm_GPSTime.tm_mon = tm_localtime->tm_mon; tm_GPSTime.tm_mday = tm_localtime->tm_mday; - tm_GPSTime.tm_hour = stod(input.substr(0,2)) + 9; - tm_GPSTime.tm_min = stod(input.substr(2,2)); - tm_GPSTime.tm_sec = stod(input.substr(4,2)); + tm_GPSTime.tm_hour = stod(input.substr(0, 2)) + 9; + tm_GPSTime.tm_min = stod(input.substr(2, 2)); + tm_GPSTime.tm_sec = stod(input.substr(4, 2)); GPSTime_msec = stod(input.substr(6)); GPSTime = mktime(&tm_GPSTime) + GPSTime_msec + Leaptime; @@ -50,53 +48,55 @@ double stringToGPSTime(std::string& input, double header_time) return GPSTime; } -void gnss_converter_converter(const nmea_msgs::msg::Sentence sentence, sensor_msgs::msg::NavSatFix* fix, nmea_msgs::msg::Gpgga* gga, nmea_msgs::msg::Gprmc* rmc) -{ - - std::vector linedata,nmea_data; - std::string token1,token2; +void gnss_converter_converter(const nmea_msgs::msg::Sentence sentence, + sensor_msgs::msg::NavSatFix* fix, nmea_msgs::msg::Gpgga* gga, + nmea_msgs::msg::Gprmc* rmc) { + std::vector linedata, nmea_data; + std::string token1, token2; std::stringstream tmp_ss(sentence.sentence); int i; int index_length; rclcpp::Time ros_clock(sentence.header.stamp); - while (getline(tmp_ss, token1, '\n')) - { + while (getline(tmp_ss, token1, '\n')) { linedata.push_back(token1); } index_length = std::distance(linedata.begin(), linedata.end()); - for (i = 0; i < index_length; i++) - { - if (linedata[i].compare(3, 3, "GGA") ==0) - { + for (i = 0; i < index_length; i++) { + if (linedata[i].compare(3, 3, "GGA") == 0) { std::stringstream tmp_ss1(linedata[i]); - while (getline(tmp_ss1, token2, ',')) - { + while (getline(tmp_ss1, token2, ',')) { nmea_data.push_back(token2); } - if(!nmea_data[2].empty() || !nmea_data[4].empty()) - { + if (!nmea_data[2].empty() || !nmea_data[4].empty()) { gga->header = sentence.header; gga->message_id = nmea_data[0]; // gga->utc_seconds = stod(nmea_data[1]); - if(!nmea_data[1].empty()) gga->utc_seconds = stringToGPSTime(nmea_data[1], ros_clock.seconds()); - gga->lat = floor(stod(nmea_data[2])/100) + fmod(stod(nmea_data[2]),100)/60; + if (!nmea_data[1].empty()) + gga->utc_seconds = stringToGPSTime(nmea_data[1], ros_clock.seconds()); + gga->lat = floor(stod(nmea_data[2]) / 100) + fmod(stod(nmea_data[2]), 100) / 60; gga->lat_dir = nmea_data[3]; - gga->lon = floor(stod(nmea_data[4])/100) + fmod(stod(nmea_data[4]),100)/60; + gga->lon = floor(stod(nmea_data[4]) / 100) + fmod(stod(nmea_data[4]), 100) / 60; gga->lon_dir = nmea_data[5]; - if(!nmea_data[6].empty()) gga->gps_qual = stod(nmea_data[6]); - if(!nmea_data[7].empty()) gga->num_sats = stod(nmea_data[7]); - if(!nmea_data[8].empty()) gga->hdop = stod(nmea_data[8]); - if(!nmea_data[9].empty()) gga->alt = stod(nmea_data[9]); + if (!nmea_data[6].empty()) + gga->gps_qual = stod(nmea_data[6]); + if (!nmea_data[7].empty()) + gga->num_sats = stod(nmea_data[7]); + if (!nmea_data[8].empty()) + gga->hdop = stod(nmea_data[8]); + if (!nmea_data[9].empty()) + gga->alt = stod(nmea_data[9]); gga->altitude_units = nmea_data[10]; - if(!nmea_data[11].empty()) gga->undulation = stod(nmea_data[11]); + if (!nmea_data[11].empty()) + gga->undulation = stod(nmea_data[11]); gga->undulation_units = nmea_data[12]; - if(!nmea_data[13].empty()) gga->diff_age = stod(nmea_data[13]); + if (!nmea_data[13].empty()) + gga->diff_age = stod(nmea_data[13]); gga->station_id = nmea_data[14].substr(0, nmea_data[14].find("*")); fix->header = sentence.header; @@ -113,15 +113,12 @@ void gnss_converter_converter(const nmea_msgs::msg::Sentence sentence, sensor_ms fix->altitude = gga->alt + gga->undulation; fix->status.service = 1; - if(gga->gps_qual == 4) - { + if (gga->gps_qual == 4) { fix->status.status = 0; fix->position_covariance[0] = 0.01; fix->position_covariance[4] = 0.01; fix->position_covariance[8] = 0.04; - } - else - { + } else { fix->status.status = -1; fix->position_covariance[0] = 100.0; fix->position_covariance[4] = 100.0; @@ -131,36 +128,37 @@ void gnss_converter_converter(const nmea_msgs::msg::Sentence sentence, sensor_ms nmea_data.clear(); - } - else if (linedata[i].compare(3, 3, "RMC") ==0) - { + } else if (linedata[i].compare(3, 3, "RMC") == 0) { std::stringstream tmp_ss1(linedata[i]); - while (getline(tmp_ss1, token2, ',')) - { + while (getline(tmp_ss1, token2, ',')) { nmea_data.push_back(token2); } - if(!nmea_data[3].empty() || !nmea_data[5].empty()) - { + if (!nmea_data[3].empty() || !nmea_data[5].empty()) { rmc->header = sentence.header; rmc->message_id = nmea_data[0]; - if(!nmea_data[1].empty()) rmc->utc_seconds = stringToGPSTime(nmea_data[1], ros_clock.seconds()); + if (!nmea_data[1].empty()) + rmc->utc_seconds = stringToGPSTime(nmea_data[1], ros_clock.seconds()); rmc->position_status = nmea_data[2]; - rmc->lat = floor(stod(nmea_data[3])/100) + fmod(stod(nmea_data[3]),100)/60; + rmc->lat = floor(stod(nmea_data[3]) / 100) + fmod(stod(nmea_data[3]), 100) / 60; rmc->lat_dir = nmea_data[4]; - rmc->lon = floor(stod(nmea_data[5])/100) + fmod(stod(nmea_data[5]),100)/60; + rmc->lon = floor(stod(nmea_data[5]) / 100) + fmod(stod(nmea_data[5]), 100) / 60; rmc->lon_dir = nmea_data[6]; - if(!nmea_data[7].empty()) rmc->speed = stod(nmea_data[7]); - if(!nmea_data[8].empty()) rmc->track = stod(nmea_data[8]); - if(!nmea_data[9].empty()) rmc->date = nmea_data[9]; - if(!nmea_data[10].empty()) rmc->mag_var = stod(nmea_data[10]); - if(!nmea_data[11].empty()) rmc->mag_var_direction = nmea_data[11]; + if (!nmea_data[7].empty()) + rmc->speed = stod(nmea_data[7]); + if (!nmea_data[8].empty()) + rmc->track = stod(nmea_data[8]); + if (!nmea_data[9].empty()) + rmc->date = nmea_data[9]; + if (!nmea_data[10].empty()) + rmc->mag_var = stod(nmea_data[10]); + if (!nmea_data[11].empty()) + rmc->mag_var_direction = nmea_data[11]; rmc->mode_indicator = nmea_data[12].substr(0, nmea_data[12].find("*")); } nmea_data.clear(); - } } }